N-gram

テキストを N 文字または N 単語ずつの連続部分列に分割する手法。検索やテキスト類似度の計算に使われる。

N-gram は、テキストを N 個の連続する文字または単語の部分列に分割する手法です。N=1 をユニグラム、N=2 をバイグラム、N=3 をトライグラムと呼びます。「東京都」の文字バイグラムは「東京」「京都」です。

N-gram は形態素解析が不要なため、言語に依存しないテキスト検索に適しています。全文検索エンジンの Elasticsearch や Solr でも N-gram トークナイザが利用できます。全文検索エンジンの書籍で N-gram インデックスの仕組みを学べます。

テキスト類似度の計算では、2 つのテキストの N-gram 集合の重なり具合 (Jaccard 係数など) を比較します。スペルチェックやあいまい検索にも応用されます。

N-gram の欠点は、N が大きいとインデックスサイズが膨大になること、また「京都」と「東京都」のように意味的に無関係な部分列がマッチする可能性があることです。情報検索アルゴリズムの書籍で N-gram の理論を深く学べます。