[Tokyo.pm] Re: 単語を含む文字列の出現回数

taguti taguti @ secom-sis.co.jp
2002年 11月 19日 (火) 03:07:37 CST


田口です。

dev> お馬鹿なので、データの流れをトレースできてない為

いえいえ、ご謙遜。忌憚の無い意見をどうぞ。(^_^)ゞ

dev> WORDは単語の登場回数
dev> WORDREは単語を含むURLの数
dev> でしょうか?

そのとおりです。
WORDREは、その文字列でURLの全文検索をしたら、
何行ヒットするかで、
grep 文字列 アクセスログ |wc -l
と同じ数字です。
送ってもらったプログラムはprintとかないですが、
以下のプログラムで実行したところ、どうも結果が変です。
先頭の3行はこうです。

プログラムの意味が、私には良く理解できません。
出来れば、少し説明して欲しいです。

http://216.239.35.229/speed1132086.gif	HASH(0x825f070)
http://8017.teacup.com/mx41/bbs	HASH(0x82014cc)
http://a1017.lm.a.yimg.com/7/1017/1783/000/image.auctions.yahoo.co.jp/images/spacer.gif	HASH(0x814b0e8)


001: #!/usr/bin/perl
002: while (my $uri=<>) {
003:   chomp $uri;
004:   $URI{$uri}++;
005:   my $word  = parse_word($uri);
006:   $WORD{$_}++  for(keys %{$word});
007:   if($URI{$uri}==1){$WORDRE{$_}++ for(keys %{$word})};
008: }
009: my %cache;
010: printf STDERR "Num of cache = %d\n", scalar(keys %cache);
011: for (sort keys %cache) {
012:   print $_, "\t", $cache{$_}, "\n";
013: }
014: exit;
015: sub parse_word {
016:   my $str  = shift;
017:   return $cache{$str} if($cache{$str});
018:   while ($str =~ m|\b(\w{5,})\b|g) { $cache{$str}->{$1}++ }
019:   return $cache{$str};
020: }

Hirosi Taguti
H-taguchi @ secom.co.jp



Tokyo-pm メーリングリストの案内