Namazu-devel-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

スコアリングについて



高橋です。

mknmzをここ数日10回以上(対象文書1ギガ!)やっていて気づいたのですが、
html時のtitleタグのスコアリングがどうもおかしいです。

具体的には、chasenを用いたとき、-Kオプションがつけると、
タグのスコアリングの数字までが単語登録され、
スコア(+16)が加算されません。
http://www.namazu.org/ml/namazu-users-ja/msg02168.htmlの
状態と同じだと思います。
どういうことか、mknmzを追ってみたのですが、
$$contref =~ tr/\xa1-\xfea-z0-9/   /c if $var::Opt{'nosymbol'}
(line 2211)のところで、
右側のタグのスラッシュがけずられ、
その後のline 2227の、
$part2 =~ s!\x7f *(\d+) *\x7f([^\x7f]*)\x7f */ *\d+ *x7f!
のところが偽になり、16とtitleにある単語が登録される、
というようなことになったと思われます。

例)
\x7f 16 \x7f TITLE_WORD \x7f /16 \x7f (line 2211前)
\x7f 16 \x7f TITLE_WORD \x7f 16 \x7f (line 2211後)
→ 登録単語: 16 TITLE_WORD 

開発版がどうなっているかチラッと見たのですが、
よくわからず、断念してしまいました。
もし修正済みならごめんなさい。

環境
redhat9
namazu-2.0.12
chasen2.3.3(2.2.8用のパッチを自分であてました)
ipadic2.6.3
perl5.8.0

ついでに、これも古い話ですが、
http://www.namazu.org/ml/namazu-devel-ja/msg02723.htmlの
話題のスコア値の+1について。
このトリックは、TF-IDFに関係しています。

IDFは、idf=log2(N/n)Nで求まりますが、
このときN=n(総文書数=全ヒット文書数)の場合、
カッコ内が1となり、IDF=0になってしまいます。
これをTFにかけると、スコアが0になってしまうため、
打開策として+1をしてるんだと思います。
というわけで7不思議を減らしてしまい、ごめんなさい。

正月ボケで表記が多少おかしいかもしれませんが、ご容赦ください。


図書館情報大学4年
 高橋英幸<k176@xxxxxxxxxx>