用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.我现在有一个词表文件,里面有十几个词,还有一篇已经分好行的一句一句的文章,要用perl写个程序算
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 23:41:53
用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.我现在有一个词表文件,里面有十几个词,还有一篇已经分好行的一句一句的文章,要用perl写个程序算
用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.
我现在有一个词表文件,里面有十几个词,还有一篇已经分好行的一句一句的文章,要用perl写个程序算出每个词的词频,并且把该词出现的索引行也输出,求大侠帮忙,木有计算机基础的人真的欲哭无泪,
用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";