適切な次の単語の予測を実現するために使用できるアルゴリズムは何ですか?


10

「次の単語の予測」を実装する良い方法は何ですか?たとえば、ユーザーが「私は」と入力すると、システムは次の単語として「a」と「not」(またはおそらく他の人)を提案します。私はマルコフ連鎖といくつかのトレーニングテキストを使用して(明らかに)これを達成する方法を知っています。しかし、私はこの方法が非常に制限的であり、非常に単純なケースに適用されることをどこかで読みました。

ニューラルネットワークと遺伝的アルゴリズムの基本を理解しています(深刻なプロジェクトで使用したことはありませんが)。適切なトレーニングテキスト(たとえば、新聞記事やユーザー自身の入力)が与えられると、次の単語に対して合理的に適切な提案を行うことができるアルゴリズムがあるのでしょうか。アルゴリズムではない(リンクしている)場合は、この問題を攻撃するための一般的な高レベルの方法を歓迎します。

回答:


9

n-gramを見てください。1つのn-gramは一連のn単語です。あなたのケースでは、あなたが望むnように3あなたが2必要があるため、query wordsresulting word。たとえば、3グラムは「疲れた」、もう1グラムは「幸せ」です。

次に必要なのは、ターゲット言語、たとえば英語で収集されたこれらの3グラムのコレクションです。これまでに英語で書かれたものすべてを収集することはできないため、選択する必要があります。その代表的なテキストの選択はと呼ばれますcorpus。コーパスが良ければ、3つの特定の単語のシーケンスが英語で一緒に出現する頻度がわかります。それから、3グラムの確率を計算できます。

この種のデータを収集することは最も難しい部分です。すべての3グラムのリストとその確率を取得したら、「I am」で始まるすべての3グラムにリストをフィルターできます。次に、このすべてのリストを確率別、つまり予測別に並べ替えます。


わかりました。最適な値があり、n素晴らしい結果が得られますか。予測される3番目の単語である必要はありません。
そうですね

2
さて、より大きなnリストはより正確な予測を提供するより長いリストを生成しますが、検索するのによりコストもかかります。したがって、精度と計算時間の間のトレードオフです。
sebastiangeiger

2
また、より大きなn-gramを実用的に使用するには、より大きなコーパスが必要です。
liori 2013年

4
これは文字通りマルコフ連鎖です...それだけでなく、文字通り最も教科書の例...
Justin L.

2

問題のドメインは文字列検索のサブセットのようです。単語を拡張して空白を含めることにより、ファジー文字列マッチングをここで適用できます。

辞書に加えて、トレーニング中にすべてのユーザー入力を1つの単語として検討/許可することができます。これにより、次の単語を提案できますが、単語やフレーズのオートコンプリートも提案されます。

ここにファジー文字列検索アルゴリズムのコンパイルへのリンクがあります

http://ntz-develop.blogspot.com/2011/03/fuzzy-string-search.html


1

(統計)言語モデルを探しています。

統計言語モデルP(w_1,...,w_m)は、確率分布によって一連のmワードに確率を割り当てます...

音声認識とデータ圧縮では、このようなモデルは言語のプロパティをキャプチャし、音声シーケンスの次の単語を予測しようとします...


ワオ。しかし、@ sebastiangeigerの回答は、n = 3についてこれを説明していると思います。
yati sagade

彼の答えは、特定の言語モデル、つまりn-gramモデルについて説明しています。他の言語モデル、例えば構文言語モデル(goo.gl/ffPOg)があります。
user3287
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.