N-gramと形態素解析
N-gramと形態素解析は、それぞれ文字列解析に使用される手法です。N-gramとは、N文字単位で文字列を分解・解析します。また隣り合った単語の組み合わせから求めた共起頻度を使い、どのような文字列の分析を行ったりします。それに対し形態素解析は、文字列を品詞ごとに分解・解析します。以降では、それぞれの技術に対し、もう少し詳細化して説明します。
N-gram
N-gramは、対象となる文字列をN文字毎に分割してインデックス化する手法です。形態素解析とは異なり、品詞や単語という観点は無視されます。例えばN=2の2-gram(bi-gram)では、「本日熊谷市の気温は40度に達しました」という文章は、
「本日/熊谷/市の/気温/は4/0度/に達/しま/した」
という風に分割されます。同様に、「熊谷市は埼玉県にあります」という文章があると、
「熊谷/市は/埼玉/県に/あり/ます」
となり、それぞれの文字列のIDを1, 2とすると、索引情報は
インデックス | 所属文字列ID |
---|---|
本日 | 1 |
熊谷 | 1,2 |
市の | 1 |
気温 | 1 |
は4 | 1 |
0度 | 1 |
に達 | 1 |
しま | 1 |
した | 1 |
市は | 2 |
埼玉 | 2 |
県に | 2 |
あり | 2 |
ます | 2 |
として作成されます。その結果、上記2文字列を検索対象とした時、"本日"という単語で検索すると、1の文章が、"埼玉"という単語で検索すると、2の文章が見つかります。また、N-gramでは、検索対象となる文字列だけでなく、検索キーワードも分割されます。例えば"熊谷市の気温"は、"熊谷/市の/気温"と分割され、それぞれが所属する文字列のIDを検索します。
共起関係
N-gram単位で分割した文字列において、隣り合った単語を共起関係にあると言います。
形態素解析
形態素解析は、文字列を品詞分解して、解析する手法です。そのため、名詞・動詞・助詞などの形で文字列が分解されます。例えば、「今日は良い天気です。」という文字列があるとき、
「本日/熊谷市/の/気温/は/40度/に/達し/ました」
という風に分解されます。次に「熊谷市は埼玉県にあります」という文字列は、
「熊谷市/は/埼玉県/に/あり/ます」
という風に分解されます。そのため、索引情報は
インデックス | 所属文字列ID |
---|---|
本日 | 1 |
熊谷市 | 1,2 |
の | 1 |
気温 | 1 |
は | 1,2 |
40度 | 1 |
に | 1 |
達し | 1 |
ました | 1 |
埼玉県 | 2 |
に | 2 |
あり | 2 |
ます | 2 |
として作成されます。そのため、品詞や単語の分解が大変重要になります。また、キーワードでの検索に対応可能となります。N-gramでもキーワード検索可能ですが、文字列がどう分解されたかによって結果は変わってきます。