namazu-dev(ring)


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

Re: How to get tf value? (長文注意)



小松です。

On Tue, 26 Oct 1999 03:05:47 +0900
Mr. Rei FURUKAWA <furukawa@xxxxxxxxxxxx> wrote:

> 
> 実は、私は、「perl 流の SYNOPSIS と EXAMPLE」「Data::Dumper」につ
> いて、よく知らないのです。この点について、御指導いただけると、あり
> がたいです。

 いや、私も詳しくないのですが(^^; SYNOPSIS とか EXAMPLE に
ついては、 CPAN モジュールについてるやつです。たとえば、次の
ような感じです。

> __END__
> 
> =head1 NAME
> 
> Data::Dumper - stringified perl data structures, suitable for both 
> printing and C<eval>
> 
> 
> =head1 SYNOPSIS
> 
>     use Data::Dumper;
> 
>     # simple procedural interface
>     print Dumper($foo, $bar);
(中略)
> =head1 EXAMPLES
> 
> Run these code snippets to get a quick feel for the behavior of this
> module.  When you are through with these examples, you may want to
> add or change the various configuration variables described above,
> to see their behavior.  (See the testsuite in the Data::Dumper
> distribution for more examples.)
>
>     use Data::Dumper;
>
>     package Foo;
>     sub new {bless {'a' => 1, 'b' => sub { return "foo" }}, $_[0]};

 Dumper は、私もつい最近使い始めたのですが、結構いけてます。
複雑なハッシュやアレーをファイルに吐き出したり、読み込んだり
プリチイにプリントするのに便利です。

------------------- キリトリセン -----------------------
use strict;
use IO::File;
use Data::Dumper;
my $Cluster = { # ref_hash
c001 => [1,], 
c002 => [10,],
c003 => [22,],
c004 => [30,],
c005 => [40,],
c006 => [50,],
c007 => [60,],
c008 => [80,],
c009 => [130,], 
c010 => [140,]
} ;

my $fh = new IO::File;
$fh->open("> d.dmp");      # ハッシュを保存するファイル

$Data::Dumper::Indent = 0; # インデントしない
print $fh Dumper($Cluster), "\n"; # ハッシュの吐き出し
undef $fh;
my $c2 = require('d.dmp');        # 今のファイルからハッシュを読み込む
my $sample = 'c009';              # ちゃんと読んだかテストしてみる
print $sample, '=>' , @{ $$c2{$sample} }, "\n";
$Data::Dumper::Indent = 1; # インデントする
print Dumper($c2), "\n";   # 美麗にプリント
__END__

> これを出力することは、できるとは思うのですが、単純にやると、結局、
> インデックスを全部読みこむことになります。環境 & データの規模によっ
> ては、メモリが心配になるのですが…
> 
> 小松さんの想定する使い方について、教えてください。
> 
> (1) 同じデータを複数回参照しますか?
> (2) 最終的に、全てのデータを参照しますか?

#あう、メモリの問題がありますね。たしかに。

(1) (2) ともに、yes であります。

> &score($document_number, $word) のような関数

 これがあれば、gnmz 的には全然オッケーです。
 言い忘れましたが、$word ごとのファイル数(1.3.x
の hit * 2 の "hit")の出力もお願いします。

> ここは、「検索」と「分類」の違いでしょうか。
> 
> 検索の場合は、結果の文書を読むことが目的なので、ある程度少なく絞り
> たいですが、分類の場合、少ない文書に分けると、逆に分類数が多くなる
> ので、あまり嬉しくないですね。
> 
> ヒット数の評価を、中程度 (直観的には、「文書数**0.5」くらい?) で
> ピークにくるようにするのがいいかもしれません。

 なるほど。試行錯誤で決めてくしかないかもしれませんね。

*-------------------------------------------------------
  Hiroshi Komatsu <sui_feng@xxxxxxxxxxxxx>
  URL  http://home2.highway.ne.jp/sui_feng/index.html