ページのヘッダイメージ

FINDSPOT ™

FINDSPOTはN-gramのアルゴリズムを使い、インデックス等の内部構造をUnicodeの文字コードを用いて実装しているのが大きな特徴です。特定の言語に依存せず、形態素解析やそのための辞書が不要な検索エンジンです。また、辞書や形態素解析のロジックに影響されずに全文検索が行なえるため、確実に目的の表現を含む情報を検索することができます。

形態素解析を行なう全文検索エンジンは、辞書に存在しない用語や人名、地名などが存在すると、単語の途中を本来区切るべきではない場所で文字列を区切り別々の形態素として扱ったり、隣接する本来別の形態素を一固まりの形態素として扱いインデックスを生成してしまうことがあります。形態素解析を行なう全文検索エンジンには本文には実在するのに、検索してみると該当箇所が見つからないことがありえます。この問題に対処するには、形態素解析の性能を高める努力や、専門性の高い目的分野ごとの辞書を用意するなどの施策が必要です。しかし日々新たな専門用語が生まれるような分野や、組織内で独自の用語を用いているような場合には、専用辞書の保守や、形態素解析のロジックの修正に多大な労力が強いられてしまいます。また、形態素解析のための文法解析ロジックが特定の言語に束縛されるため、対応できる言語が特定の言語に縛られてしまいます。

一方、N-gramのアルゴリズムは、隣接する複数文字の並びを機械的に全てインデックスの単位として処理します。FINDSPOTは1文字と2文字の並びを単位としてインデックスを生成しています。N-gramのアルゴリズムはインデックスを作成する対象の文章情報に対して文法解析をまったく行なわず、1文字と2文字の並びを単位として総当たりでインデックスを生成します。このため、文中に現れるどのようなフレーズであっても確実に完全一致の検索が行なえます。また、FINDSPOTならば1つのインデックスによってUnicodeで表現可能な日本語、英語、中国語、韓国語、ドイツ語、フランス語などの言語でも検索できます。

N-gramには、インデックスのサイズが大きくなる、活用語尾の変化に対応した検索ができない、「京都」と検索したのに「東京都」も検索されてしまうという3つの問題があります。

一般に、形態素解析を行なう場合と比べ、N-gramのインデックスはひとまわり大きなサイズが必要です。形態素解析と比べると大きなインデックスのサイズになるのは確かにデメリットであり、この大きなインデックス情報を適切に扱うのが難しいため、これまでN-gram方式が敬遠されてきたものと思われます。しかし技術の発達により現在は数百Gから数Tのハードディスクを持ち、数Gのメモリを搭載したコンピュータを使用して全文検索を行なうことはそれほど困難ではありません。インデックスサイズに関する物理的な障壁はすでに大きな問題ではありません。FINDSPOTは、コンピュータに多くのメモリが搭載されていることを前提に、インデックス単位のラベルをメモリ上に持つことで、高速なインデックスの生成や検索を行なえるソフトウェアを実現しました。

活用語尾の問題については、英語のような言語では大きな問題になりますが、日本語に関してはほとんど問題になりません。FINDSPOTではこのような問題に対処するために曖昧検索という機能を設けています。曖昧検索を用いると、利用者の入力した検索文字列に対して50%以上適合した表現を検索結果とすることができます。曖昧検索を用いれば、漢字の言葉に対する送りのゆれ、表記のゆれなどにも対応できます。

京都と東京都の問題はN-gramの宿命ともいえる問題です。しかし、実際に検索エンジンを使用してみると、この問題が気になるケースはあまり多くありません。ノイズが気になる場合には、「京都 NOT 東京都」と検索式を指定して絞り込みを行なうことで回避できます。