形態素解析とN-gram
形態素解析
検索対象の文章に大して、分かち書きした単位ごとに 転置インデックスを作成して検索を行います。
N-gram
検索対象のテキストをN文字単位の文字列に分解します。
その文字列編を見出し語としてインデックス作成を行います。
大きな違い、どこが最も大きく異なるかというと見出し語の作り方です。
形態素解析は分かち書きを行って、N-gramは機械的に文字列片を作成します。
完全一致の検索
検索エンジンの完全一致検索については、形態素解析を行って行います。
しかし辞書に存在しないような、人名、専門用語などは形態素解析の辞書にない可能性があるので検索結果の保証ができません。
辞書は常に更新される必要があり、転置インデックスを作り変える必要が常にあります。
N-gramでは形態素解析に於ける問題の専門用語や人名も単なる文字列として扱います。
どんな文章も同様にN文字の長さに切るところがポイントです。
検索ノイズ
完全一致の場合や特殊語の場合はN-gramが優れているようにも思えます。
しかし欠点もあります。
「東京都」、「京都」のような言葉でゆらぎが生じます。
「東京都」で登録したいのに、「京都」という言葉で転置インデックスが登録されてしまいます。
このような言葉は意外とあって、
「ノートン」「ノート」
「スパ」と「スパゲッティ」
などの問題があります。
検索を忠実に行うためには、「京都 NOT 東京都」のような条件の絞り込みが必要です。