それらを計算する際の計算オーバーヘッドを考慮して、nグラム(n> 3)(およびそれらの発生頻度)の使用は何なのか疑問に思っています。バイグラムやトライグラムでは不十分なアプリケーションはありますか?
もしそうなら、n-gram抽出の最先端は何ですか? 助言がありますか?私は次のことを認識しています。
それらを計算する際の計算オーバーヘッドを考慮して、nグラム(n> 3)(およびそれらの発生頻度)の使用は何なのか疑問に思っています。バイグラムやトライグラムでは不十分なアプリケーションはありますか?
もしそうなら、n-gram抽出の最先端は何ですか? 助言がありますか?私は次のことを認識しています。
あなたの質問が正しく提起されているとは思いません.ngramはツールであり、解決すべき問題ではないため、ngramには「最先端」はありません。@Hooked が指摘したように、ngram は一種の自己相関関数 (または「自己回帰関数」) です。したがって、あなたが本当に知りたいのは、最先端のソリューションが長い ngram を含む問題があるかどうかです。
金融モデルや気象モデルのフィッティング、音声認識などの数値アプリケーションでは、次元> 3のベクトルを間違いなく使用します。たとえば、自己回帰隠れマルコフ モデルは、過去n回の測定値の区分関数に適合します。ここで、過去の状態が将来の予測に関連している場合、 nは適度に大きくなる可能性があります。
しかし、あなたの例はすべて単語 ngram に関するものであり、その分野でn > 3が有用であることがわかった研究は思いつきません。計算コストや十分なトレーニング データを見つけることの問題ではないと思います。言語の表面的な自己相関は、3 語ほどで消えていくようです。ランダムな例:この記事では、ngram ベースの情報コンテンツの観点から Zipf の法則を再解釈しようとします。彼らはnを最大 4 と見なしますが、トライグラム数の全体的な相関が最も高くなります。
n > 3が役に立たないと言っているわけではありません。しかし、あまり出てこないようだというあなたの観察には十分な根拠があります。
ただし、テキスト内の ngram のカウントの複雑さは問題ではないことに注意してください。長さ L のトークン化されたコーパスがある場合、コーパスのすべての ngram を次のように収集できます。
for i in range(0, L-n):
tuple = corpus[i:i+n]
ngrams[tuple] += 1
ご覧のとおり、これにはO(L)ステップしか必要ありません。つまり、コーパスのサイズに対して線形であり、nでは増加しません。したがって、任意の次元の ngram を収集することは問題ではありません。しかし、可能な ngram の数は急速に増加します。たとえば、32 文字のトークン (文字といくつかの句読点クラス) を区別すると、文字のバイグラムは 1024 個ですが、テトラグラムは 1048576 個あります。度数分布表に入力するのに十分な数を見つけるには、指数関数的に多くのテキストが必要です。
単語 ngram の場合、スパース性の問題はさらに悪化します。これは、 32 を超えるさまざまな単語トークンがあるだけでなく、語彙のサイズがコーパスのサイズと共に (ゆっくりと) 増加するためです: 有名な「ロングテール」プロパティです。そのため、収集するコーパスの大きさに関係なく、データは (小さなnの場合でも) スパースになります。次に、複雑な統計モデルを適合させる必要があり、その計算コストは個別の ngram の数に依存します。
結果として、単語 ngram アプリケーションではスパース性が常に問題になります (したがって、通常は「平滑化」が必要です)。「ngram sparsity」をグーグルで検索すると、大量の参照が見つかります。
ここにリストされているタグの多くには詳しくありませんが、n-gram (抽象的な概念) は統計モデルに関連して役立つことがよくあります。その結果、バイグラムとトライグラムだけに限定されないいくつかのアプリケーションを次に示します。
これらは私の頭から離れたものですが、ウィキペディアにはさらに多くのリストがあります。
「最先端の」n-gram抽出に関する限り、わかりません。N グラムの「抽出」は、n グラム スタイルのモデリングの利点を維持しながら、特定のプロセスを高速化するアドホックな試みです。要するに、「最先端」は、何をしようとしているかによって異なります。あいまい一致またはあいまいグループ化を見ている場合、一致/グループ化するデータの種類によって異なります。(たとえば、番地は、名前とあいまい一致では大きく異なります。)
高次の n-gram について考える (型にはまらない) 方法は、正規化されていない自己相関関数、つまり信号とそれ自体の相関関係を作成することによって行うことができます。2 グラムのコーパスは、単語と 1 つの単語の「時間」ラグとの相関関係を測定しますが、3 グラムは、2 段階の「タイム」ラグに関する情報を提供できます。高次の n グラムは、特定のコーパスの確率分布の尺度を提供します ( Moby Dickであれ、人間の DNA であれ)。このように、n-gram が null の期待値と異なる場合、n のその値に関する有用な統計情報があります。
Kaganarの答えに加えて:
あらゆる種類のスタイロメトリック分析(たとえば、文体に基づく著者のプロファイリング、またはテキストのエポックを検出しようとする) では、浅い構文解析のために長い n-gram が必要になります。通常、このようなアプローチは、 PCFG、TAGなどに基づく深い構文解析によって補完されます。