1

ユーザーがスマートフォン、ダンフォン、またはコンピューターのキーボードから短縮したテキスト エンティティを取得します。これにより、「jstn」の検索で「Justin Roberts」を取得できません。「csr」と入力すると、「caesar」が自動提案に表示される必要があります。

期待して、正しいスペルの単語を 1 つ以上の可能な「テキスト読み上げ」用語にエンコードして、ユーザーが入力したときに正しい用語を検索、照合、および提案できるようにしたいと考えています。

以下は、私が考慮しなければならない異体字のスペルのほんの一部です:

justin -> jst, jstn, jtn
april -> apr, aprl
swedish -> swed swd
banglore -> blore
katrina -> kat

用語をエンコードして、テキスト読み上げの単語と短縮された単語も一致させるには、どのような方法がありますか? 私は考えることができます:

母音の削除 : april -> aprl

母音を削除し、いくつかの子音をスキップ: banglore -> bnglr, bglr

似た響きの単語に対して同じハッシュを生成するMetaphone

4

1 に答える 1

1

このタスクに静的データベースを用意するのが良いアプローチかどうかはわかりません。おそらく何百万もの「テキストスピーク」用語が考えられますが、毎週何百もの新しい用語が「発明」される可能性があるときに、それらすべてを収集してデータベースを最新の状態に保つことができると本当に思いますか?

スコアリングシステムを使用して実装することを検討したいと思います。まず、「既知の単語」のリストが必要です。手作業で管理したい場合、このリストは数百語に制限できます。一方、それは巨大な場合もあります。たとえば、英語の辞書からすべての単語を取得できます。これには、一般的な名前と姓、および一般的な会社名と製品名を含むいくつかのリストが含まれます(たとえば、登録商標のリストはほとんどの会社名と製品名をカバーしています)。もちろん、これは定期的に更新する必要があるデータベースでもありますが、少なくとも、すべての「テキストを話す」用語ではなく、既知の単語を更新するだけで済みます。一部のシステムには、使用できる可能性のある組み込みのスペルチェック辞書があり、既知の単語の大規模なベースがすでに提供されていることに注意してください。

大量の「テキストスピーク」用語を保持する代わりに、一連のルールに従って、ユーザーが入力した既知の単語のリストに一致させようとします。

  1. 「テキストを話す」という用語のすべての文字は、単語に含まれている必要があります。
  2. すべての文字は、「テキストスピーク」用語と同じ順序で表示される必要があります。

これらのルールだけでも、すでに多くの不可能な言葉が排除されています。残りの単語については、これがユーザーが意味する単語である可能性を判断する方法が必要です。そこで、スコアリングシステムが役立ちます。ある種のヒューリスティックを使用して、どの単語がより可能性が高いかを推測しようとします。

たとえば、残りのすべての単語のスコアは0になります。2つの連続する「テキストを話す」文字が残りの単語でも連続している場合(間に他の文字が省略されていない場合)、スコアが2増加します。これにより、はるかに可能性の高い言葉。残りの単語で連続していないが、その間に省略された母音だけがある2つの連続する「テキストを話す」文字ごとに、スコアを1増やします。これにより、ヒットの可能性は高くなりますが、それほど可能性は低くなります。前の場合。等々。また、否定的なスコアにつながる条件を考えて、単語のスコアを再び下げることもできます。たとえば、単語の長さと「テキストを話す」用語の長さの比率に応じて、負のスコアが得られます。

このようなヒューリスティックは完璧な結果をもたらすことはありませんが、スコアを適切に調整すると、かなり良い結果が得られる可能性があります。たとえば、にapr一致しますが、上記のルールにより、より短く、の長さに近いため、aprilにも一致します。一致しますが、。その場合は勝ちますが、これは間違っているかもしれませんが、私は何度も見てきたので、正しいかもしれません。もちろん、aprilfoolaprilaprjstjustjustinjustjstjustjustあなたの場合は意味がないかもしれないので、それを既知の単語のリストに追加しないでください。優れたスコアリングシステムを取得するには、それを実装してから、スコアリングルールを追加または削除し、ルールが一致する場合に加算または減算されるスコアを変更することで、微調整を開始する必要があります。あなたがそれで遊んでいればいるほど、それは良くなるでしょう。

また、疑問がある場合は、ユーザーに尋ねることができることにも注意してください。たとえば、ユーザーがと入力した場合jst、ヒットリストにJustin。が続き、Justineそのリストの最初のヒットは常に自動提案として表示されますが、ユーザーは2番目のリストエントリをポイントしてそのエントリを完了することもできます。ボーナスとして、スコアリングシステムを学習スコアリングシステムにすることができます。ユーザーがこれまでに10回検索し、リストからjst選択するたびに、決して検索しない場合、ユーザーはを検索するよりも検索したいように見えます。その場合、あなたはおそらくその選択を覚えていて、それが常に勝つように、いくつかの追加のボーナスポイントを与えることができますJustineJustinJustineJustinJustineJustin将来。このような学習スコアリングシステムは、ユーザーが特定の「テキストスピーク」用語を入力したときにユーザーが正確に何を意味するかを時間の経過とともに学習するため、ユーザーに採用されます。

ところで、スコアリングシステムなどは、サーバーおよびクライアントソフトウェアでのほとんどのSPAMフィルターの動作方法です。ユーザーが自分でスパムとしてフラグを立てたり、誤ってスパムとしてマークされたもののフラグを解除したりする場合の「学習能力」を含みます。最初は、ほとんどのSPAMフィルターシステムは問題ありませんが、あまり良くありません。あなたがそれらをより長い期間使用し、そのような「訓練」を続けるならば、それらはますます良くなり、そして結局、それらはすべての場合の99%で正しいでしょう。

于 2013-01-18T16:23:48.417 に答える