2006年9月20日

[Namazu-devel-ja 1224] 検索精度の問題

野首です。

そういえば書こう書こうと思っていてまだ書いていないことがありました。

私は現在とある産学連携プロジェクトにかかわっているのですが、そこで
1000万オーダーの文章をNamazuで検索させる、ということを行っています。そ
の中で得られた知見をこの機会に情報提供させてください。

ひとつのインデックスに大量のデータを入れた場合、当然ながらあまりにも
ヒット数が多くなるという事態が頻発します。

namazu.cgi(libnmz)の検索では長い文字列があたえられた時、インデックス
内に登録されている単語リストから、最長一致で単語を分割し、それらの検索
結果の和を求めます。
たとえば「環境汚染問題」という検索語があった時、ChaSenでインデックス
を作成した場合には「環境」「汚染」「問題」という単語列に分割されます。
ここで一つ問題が生じます。

たとえば「汚染」「問題」が検索の閾値を越えてヒットしたとしましょう。
すると、namazu.cgiはエラーを発生させずに閾値を越えた検索語はなかったも
のとして扱います。その結果、「環境」のみでヒットした結果を返します。当
然、相当数のノイズが含まれることになります。

これはChaSenを利用する場面で発生しやすいです。なぜなら、最近のChaSen
は辞書をできるだけ小さく分割する方向にあるからです。

一方でKAKASIの辞書は例えば「環境汚染」が一単語で登録されているので、
単語の種類にもよりますがこういった問題はChaSenに比べれば比較的発生しず
らいといえます。しかしながら、漢字以外の単語は一切考慮されない点に注意
が必要です。

対策としては、インデックスをファイル数である程度分割して検索させる手
段があります。ただし、1000万というオーダーを分割しすぎると結構な速度低
下を招きます。これは、個々のインデックスで検索した結果をあとでマージす
るためです。

Namazu側の仕様についても多少考え直したほうがいいかもしれないとも思っ
ていますが、一方でNamazuは最初から「中小規模」への対応をうたっているの
で、これでいい気もしています。
--
野首 貴嗣
E-mail: knok@xxxxx
knok@xxxxx / knok@xxxxx

_______________________________________________
Namazu-devel-ja mailing list
Namazu-devel-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-devel-ja

投稿者 xml-rpc : 2006年9月20日 08:12
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/46229
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。