web-dev-qa-db-ja.com

適度に良い次の単語予測を達成するために使用できるアルゴリズムは何ですか?

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

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

10
yati sagade

n-grams を見てください。 1つのnグラムはnワードのシーケンスです。あなたの場合、2つの3query wordsが必要なので、nresulting Wordにする必要があります。たとえば、3グラムは「疲れた」、もう1グラムは「幸せ」です。

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

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

9
sebastiangeiger

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

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

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

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

2

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

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

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

1
user3287