高度な日本語検索を実現する技術
N-gram方式の概要
N-gram方式は、テキストをあらかじめ決められた文字数(N)で「わかち書き」することでインデックスを作成する手法です。わかち書きとは、日本語の文書の区切りに空白を入れて記述する方法です。一般的には、ひらがなやカタカナが多用される小学校低学年の教科書をはじめ、昔の電報やテレビゲームなどで利用されていました。
英語などように単語を空白で区切る文書では、わかち書きの必要はありません。しかし日本語は、基本的に句読点以外に区切りがないためにN文字ごとに空白を入れてインデックスを作成するN-gram方式が有効に利用されています。
例えば、「会社は東京都にあります。」という文書(ID1)を2-gramで処理すると、「会社」「社は」「は東」「東京」「京都」「都に」「にあ」「あり」「りま」「ます」「す。」の11の部品にわかち書きされてインデックスに登録されます。また、「春から東京です。」という文書(ID2)は、「春か」「から」「ら東」「東京」「京で」「です」「す。」の7つの部品としてインデックスに登録されます。
このインデックスから「東京都」というキーワードで文書を検索する場合、まずはキーワードも「東京」「京都」にわかち書きされます。分割された「東京」でインデックスを検索すると文書(ID1)と文書(ID2)の「東京(1-4、2-4)」という語句が見つかります。次に「京都」で検索すると文書(ID1)の「京都(1-5)」が見つかります。
この結果、文書(ID1)には「東京」も「京都」も含まれており、「東京(1-4)」と「京都(1-5)」が連続していることが判断できます。これにより、文書(ID1)に「東京都」という語句が含まれていることが分かります。これがN-gram方式の全文検索の基本的な仕組みです(図2)。
N-gram方式のメリット/デメリット
N-gram方式のメリットは、文書を機械的にわかち書きするので、検索漏れが発生しないことです。一方、デメリットはノイズが多くなることです。例えば、図2のインデックスを使って「京都」というキーワードで文書を検索した場合、「東京都」の後ろ2文字の「京都」がヒットし、文書(ID1)を検索結果として返してしまいます。
また、「自然語処理」を行わずにインデックスを作成するために、表記ゆれや同義語、活用による語尾変化などにも対応することができません。例えば、「売り上げ」と「売上」は、別の単語として取り扱われてしまいます。さらに、文書を分割してインデックスに登録するためにインデックスサイズが大きくなってしまうこともデメリットの1つです。
続いて、自然言語処理(NLP)方式について説明します。