全文検索の手法

プログラムから全文検索を行う場合、すべてのテキストデータに対して、文字列の有無を判定をしていると、毎回、すべてのテキストを調べる必要がある上に、表記ゆれ等に弱くなる。

すべてのテキストを調べる必要をなくすには、本の終わりについているような索引があればよい。

・ほげ→p.256,345,1005
・ふー→p.100
といった、テキストとそのテキストを含むデータのIDなりがあれば簡単に、その言葉を含むテキストデータを検索できる。

この索引の単語を作り出す手法は大きくわけで2通りある。

形態素解析
N-gram
の2通り。

形態素解析
テキストを意味のある単語で区切って、さらに単語の原形にまで直す手法。
人が理解できる意味の区切りで切るため、精度が高い検索結果になる。
ただし、意味のある単語の区切りを見出すためには、辞書となるデータが必要で、その辞書のメンテナンスが大変。

N-gram
テキストを数文字ずつ取り出して索引とする手法。

「私は○○です。」を2文字ごとに取り出すと、
私は
は○
○○
○で
です
す。

といった区切りになる。
区切りの数がいくつか考えられるので"N"-gram。

単語の意味などは考慮しないので、システム化が容易な反面、検索精度を上げるのが難しい。
たとえば2文字で区切ると、「京都」で検索すると「東京都」も引っかかる。
形態素解析ではこの問題は起きない。

広告を非表示にする