namazu-dev(ring)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: How to get tf value?
小松です。
On Sun, 24 Oct 1999 00:37:17 +0900
Mr. Rei FURUKAWA <furukawa@xxxxxxxxxxxx> wrote:
Rei> 古川です。
Rei>
Rei> From: Hiroshi KOMATSU <sui_feng@xxxxxxxxxxxxx>
Rei> Subject: [namazu-dev 674] Re: How to get tf value?
Rei> Date: Thu, 21 Oct 1999 10:34:23 +0900
Rei> Message-ID: <199910210134.KAA22194@xxxxxxxxxxxxxx>
Rei> sui_feng> # 2.0 のインデックス構造を勉強しなくちゃ
Rei>
Rei> 最新のソースを入手なさったならば、pl というディレクトリに、nmzidx.pl
Rei> というものがあります。ここでは、2.0 のインデックスの読み書き用の、
Rei> アクセス関数群を用意しています。
Rei>
Rei> また、src ディレクトリには、これを使った、
Rei>
Rei> kwnmz 文書から、キーワードを tf/idf 的に抜き出して、
Rei> NMZ.field.keywords に書き出します
Rei>
Rei> gcnmz 欠番を詰めてインデックスを作り直します。
Rei> 従って、これを実行した後ならば、「NMZ.t のサイズ / 4」
Rei> で全文書数は求められます。
Rei>
Rei> といったものがあります。
Rei>
ありがとうございます。ソースを読みます。
Rei> # 書きかけですが、ドキュメントは手もとにあります。
リリースお待ちします。Perl流の SYNOPSIS と EXAMPLE があるだけでも
助かります。
Rei> 基本的には、
Rei>
Rei> while (defined($handle->read(\$word, \%list))){
Rei> ...
Rei> }
Rei>
Rei> のような感じで、[単語]、[文書番号 -> スコア]のリストを読み出すことが
Rei> できます。
1.3.x 用のgnmzでは、転置ファイルを、また転置しなおして、
$hash{$document_number}{$word} = $score;
いうデータ構造に読み込んで使っていますので、 1.3.x 用のソースを少し改良
するだけで 2.0 に対応できそうです。
Rei> また、どんな関数を用意するか、も検討中です。
Rei> 小松さんに必要な関数 (のうち、汎用的に使えそうなもの) は、用意したい
Rei> と思っておりますので、「どんな関数が必要か」を是非教えて下さい。
上記のような「再転置データのハッシュ」を出力していただけると、
助かります。あと、テキスト吐き出しのほかに、Data::Dumper 吐き出し
もご検討いただけると助かります。
ひとつ、悩んでいるのが、'stop words'の排除です。
1.3.x 用gnmzでは、インデックスを読み取った後に、$word がストップワード
かどうかを判定し、「あたり」であれば、next; します。このため、1.3.x 用に
用意されたインデックス読み取り関数は、そのまま使いまわしができず、車輪を発明
してしまいました。kwnmz では too many を排除という形のようですが、たとえ
ば「第」と「条」というのは、法律文では too many で、検索の役にはあまり
立ちませんが、法律条文と、そうでないものを分類するときには、非常に役に
立ちます。stop words を場合によって使い分けたいわけです。
英文用の検索エンジンとしては、いずれストップ・ワード排除の問題は、
避けて通れないだろうと思いますので、ご検討いただければ幸いです。
*-------------------------------------------------------
Hiroshi Komatsu <sui_feng@xxxxxxxxxxxxx>
URL http://home2.highway.ne.jp/sui_feng/index.html