SOでこの前の質問を見つけました: N-grams:説明+ 2つのアプリケーション 。 OPはこの例を示し、それが正しいかどうかを尋ねました。
Sentence: "I live in NY."
Word level bigrams (2 for n): "# I', "I live", "live in", "in NY", 'NY #'
character level bigrams (2 for n): "#I", "I#", "#l", "li", "iv", "ve", "e#", "#i", "in", "n#", "#N", "NY", "Y#"
When you have this array of n-gram-parts, you drop the duplicate ones and add a counter for each part giving the frequency:
Word level bigrams: [1, 1, 1, 1, 1]
character level bigrams: [2, 1, 1, ...]
回答セクションの誰かがこれが正しいことを確認しましたが、残念なことに、言われたことをすべて完全に理解していなかったので、残念ながらそれ以上に少し迷っています!私はLingPipeを使用しており、7から12の間の値を選択する必要があると述べたチュートリアルに従っていますが、理由は述べていません。
良いnGram値とは何ですか?また、LingPipeなどのツールを使用する場合、どのように考慮する必要がありますか?
編集:これはチュートリアルでした: http://cavajohn.blogspot.co.uk/2013/05/how-to-sentiment-analysis-of-tweets.html
N-gramは、ソーステキストで見つけることができる、単に長さnの隣接する単語または文字のすべての組み合わせです。たとえば、単語fox
を指定すると、すべての2グラム(または「バイグラム」)はfo
およびox
です。また、Wordの境界をカウントすることもできます。2グラムのリストを#f
、fo
、ox
、およびx#
に展開します。ここで、#
は単語の境界を示します。
Wordレベルでも同じことができます。例として、hello, world!
テキストには、次のWordレベルのバイグラムが含まれています:# hello
、hello world
、world #
。
N-gramの基本的なポイントは、特定の文字や単語に続く文字や単語など、統計的な観点から言語構造をキャプチャすることです。 n-gramが長いほど(nが高いほど)、より多くのコンテキストを操作する必要があります。最適な長さは実際にアプリケーションに依存します。n-gramが短すぎると、重要な違いを把握できなくなる可能性があります。一方、長すぎる場合は、「一般的な知識」を取得できず、特定のケースにのみ固執する可能性があります。
N-gramは n-Tuple またはn個の単語または文字(文法の一部の場合はグラム)のグループであり、互いに続きます。したがって、文中の単語のnの3は、「#I live」、「I live in」、「live in NY」、「in NY#」のようになります。これは、単語が互いに続く頻度のインデックスを作成するために使用されます。これを Markov Chain で使用して、言語に似たものを作成できます。 Wordグループまたは文字グループの分布のマッピングを作成すると、n-gramが長いほど、出力が自然に近くなる確率でそれらを再結合できます。
数値が高すぎると、出力はWord for Wordのオリジナルのコピーになり、数値が低すぎると、出力が乱雑になります。