namazu-ml(ring)


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

Re: How to get tf value?



Hiroshi KOMATSU <sui_feng@xxxxxxxxxxxxx> wrote:

> え、さて、今般、namazu 1.3.x のインデックス
>情報を流用してインデックス対象の文書データを
>自動クラスタリングするシステムの開発を始めまし
>た。クラスターへの近接度は、いわゆる tf.idf 値
>を使用しています。これまでは、NMZ.i の単語スコア
>を文書毎に線形加算したものを単語総数の代わりに
>使ってきたのですが(ちょち不安)、いろいろ試して
>みようかと思いまして、質問させてください。

クラスタリングは文書を分類してくれる仕組みのことですね。面白
そうです。

# 私が所属する研究室 (自然言語処理講座) にはクラスタリングを
# 専門としている人がいます。今度、話を聞いてみます。


> 文書毎の重みづけなしの単語出現数あるいは、文書
>毎のナマの単語総数(重複を除かない)というのは、
>どこかのインデックスに格納されているのでしょうか?
>または、格納させるオプションがあるのでしょうか?
>(逆に言うと、namazu.exe の tf 値はどこから取って
>きてるのでしょうか?)

doc/ja/nmz_files.txt より:
| * NMZ.i
|   - インデックスファイル (転置ファイル, inverted ファイル)
| 
|   構造
| 
|     [単語1\n]
|     [エントリの総数 * 2][文書ID][スコア][文書ID][スコア]....\n
|     [単語2\n]
|     [エントリの総数 * 2][文書ID][スコア][文書ID][スコア]....\n
|     [単語3\n]
|     [エントリの総数 * 2][文書ID][スコア][文書ID][スコア]....\n

この「[スコア]」の部分が tf に相当します。が、正確には tf で
はありません。なぜなら HTMLタグなどに応じてスコアに重みをつ
けているからです。idf は「[エントリの総数 * 2]」を 2 で割れ
ば算出できます。

# 重みは <title> なら 16点、 <h1> なら 8点といったようにいい
# 加減につけています。本来は統計なりに基づいてきちんと算定す
# べきなんだけど、いい方法が思いつかなくて。

ちなみに、開発中の Namazu 2.0 では NMZ.i の構造は変わってい
ます (かなり小さくなった)。

p.s.
開発よりの話題なので namazu-dev@xxxxxxxxxx に移りませんか?
<http://openlab.ring.gr.jp/namazu/development.html#namazu-dev_mailing-list>

-- Satoru Takabayashi