作业帮 > 综合 > 作业

用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/20 06:31:20
用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.
我现在有一个词表文件,里面有十几个词,还有一篇已经分好行的一句一句的文章,要用perl写个程序算出每个词的词频,并且把该词出现的索引行也输出,求大侠帮忙,木有计算机基础的人真的欲哭无泪,
试试,写的不好,a.txt是写单词的,每行一个,b.txt是要检查的文档.所有单词未区分大小写.
#!/usr/bin/perluse strict;
my %Words;
my $matchString = '';
open WORDS,"< a.txt" or die "cannot open a.txt\n";
foreach () {
chomp;
s/\s+//g;
$Words{$_}{'count'} = 0;
}
close WORDS;
open FILE,"< b.txt" or die "cannot open b.txt\n";
foreach () {
chomp;
my $line = $_;
$_ s/,/ ,/;
$_ s/\./ \./;
my @words = split /\s+/,$_;
foreach my $word (@words){
$word s/[,.]$//;
$word s/^[,.]//;
foreach my $regex (keys %Words) {
if ($word /^($regex)$/i) {
$Words{$regex}{'count'}++;
$Words{$regex}{$line} = 1;
}
}
}
}
close FILE;
foreach my $word (sort keys %Words) {
print "单词“$word”共出现$Words{$word}{'count'}次,";
print "包含单词“$word”的行如下:\n";
foreach (keys $Words{$word}) {
next if ($_ eq 'count');
print "$_\n";
}
}
print "succeed!\n";
再问: 太谢谢啦,可以运行,但是搜索出来结果是这样的: 单词“发展”共出现0次,包含单词“发展”的行如下: 单词“美好”共出现0次,包含单词“美好”的行如下: 单词“人民”共出现0次,包含单词“人民”的行如下: 单词“生活”共出现0次,包含单词“生活”的行如下: 单词“中国”共出现0次,包含单词“中国”的行如下: succeed!好像没有关联上b.txt的样子。。。。再帮帮忙啦~~
再答: 我在看看,是我想的太简单了,我是用因为测试的,