用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/18 10:23:26
用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.
我现在有一个词表文件,里面有十几个词,还有一篇已经分好行的一句一句的文章,要用perl写个程序算出每个词的词频,并且把该词出现的索引行也输出,求大侠帮忙,木有计算机基础的人真的欲哭无泪,
我现在有一个词表文件,里面有十几个词,还有一篇已经分好行的一句一句的文章,要用perl写个程序算出每个词的词频,并且把该词出现的索引行也输出,求大侠帮忙,木有计算机基础的人真的欲哭无泪,
![用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.](/uploads/image/z/1714975-7-5.jpg?t=%E7%94%A8perl%E6%9F%A5%E4%B8%80%E4%B8%AA%E8%AF%8D%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%AF%8D%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E6%A1%A3%E4%B8%AD%E5%87%BA%E7%8E%B0%E7%9A%84%2C%E9%A2%91%E7%8E%87%2C%E8%BE%93%E5%87%BA%E9%A2%91%E7%8E%87%E8%A1%A8%2C%E5%B9%B6%E5%88%97%E5%87%BA%E8%AF%A5%E8%AF%8D%E5%87%BA%E7%8E%B0%E7%9A%84%E7%B4%A2%E5%BC%95%E8%A1%8C.)
试试,写的不好,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的样子。。。。再帮帮忙啦~~
再答: 我在看看,是我想的太简单了,我是用因为测试的,
#!/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的样子。。。。再帮帮忙啦~~
再答: 我在看看,是我想的太简单了,我是用因为测试的,
用perl查一个词表中的词在另一个文档中出现的,频率,输出频率表,并列出该词出现的索引行.
如何用perl读入一个文件,计算文件中各个单词的出现频率,再输出
现在有一大段文字,我要把其中出现频率很高的一个词替换成另一个词,该怎么办?
英语中什么长度的词出现的频率最高?
古诗中出现频率最高的字,或者词
如何检索某一词在文献中的出现频率?
怎样在word中找出出现频率最多的那个词?
C语言:编写一个程序,输入一段英文(以'$'代表结束),输出文章中出现的每个字母的出现频率.
perl中统计单词出现频率的一段代码,大家帮我看看我那里错了?
“忽悠”是赵本山和范伟在春晚小品表演中出现过的一个词。近年来使用频率较高请根据它在下列各句中的意思,分别用—个词语进行替
java--如何检索出 一篇文章 出现频率 最高的 几个词
洋流的出现频率是什么意思