gggggraziegrazie

graizegrazieさんのやったこと、学んだことを記録する雑記帳です

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でもキーワード検索可能ですが、文字列がどう分解されたかによって結果は変わってきます。