用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 (<WORDS>) {
chomp;
s/\s+//g;
$Words{$_}{'count'} = 0;
}
close WORDS;

open FILE,"< b.txt" or die "cannot open b.txt\n";
foreach (<FILE>) {
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的样子。。。。再帮帮忙啦~~

追答

我在看看,是我想的太简单了,我是用因为测试的,

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-19
没有计算机基础,你为什么会遇到这类问题。又如何知道要用Perl解决?追问

恩呢,专业相关嘛,这个是方便处理语言的计算机语言,所以才用啊,自己在研究,但实在是。。。。。。

第2个回答  2012-11-24
#!perl -w
my %hash;
open(SOURCEHANDLE , "E:/ckt_work/TestPl/wordcount/source.txt");
open(KEYWORDHANDLE, "E:/ckt_work/TestPl/wordcount/key.txt");
my @keyword = <KEYWORDHANDLE>;
my @sourcearray = <SOURCEHANDLE>;
for (@keyword)
{
chomp($_);
$hash{$_} = 0;
}
#print keys %hash;
for (@sourcearray)
{
$str = $_;
chomp($str);
#print $str , "\n";

for $word (keys %hash)
{
my $times = ()= $str =~/$word/g;

print "str=", $str , "\n";
print "word= ", $word , "\n";
print "times= ", $times , "\n";

$hash{$word} = $hash{$word} + $times;
}

}
for my $tempkey (keys %hash)
{
print $tempkey."=".$hash{$tempkey},"\n";
}

用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 (<WORDS>) { chomp;s\/\\s+\/\/g;Words{$_}{'count'} = 0;...

如快速何查一个文档里的单词是否在另一个文档中有出现过
用正则表达式。这个工具搜索上面的字就能找到了,先把你要查找的单词空格全部替换成”|“,复制到表达式处,再把你要查找的文档内容复制到上面的大文本框,点击测试匹配就出来了,就重复的可以再用”文本去重复工具“。

如何在word中找到出现最多的词
1、打开电脑中的word文档,然后在文档中随意输入文字,然后通过查找功能找到特定的字出现的次数,这里以“是”和“的”为例:2、在开始菜单下,找到右上角位置的“查找”,点击该选项:3、在打开的查找和替换窗口中,输入“是”,然后点击下面的“在以下项中查找”,这时候就会出现该文字在文章中出现...

excel中,怎么统计一列中某个词出现的次数。
1. 使用查找和替换功能筛选特定词汇:打开Excel表格,定位到需要统计的数据列。使用“查找和替换”功能打开查找对话框。在“查找内容”框中输入要统计的词汇。勾选“查找全部”,这样可以在整个列中查找该词汇的所有出现。查找结果会显示在对话框的底部。通过这个功能,可以...

如何查得PDF文档中某个词条的出现次数?
使用官方的阅读器Adobe Reader,选择“编辑”,“高级搜索”,查询后自动统计出次数(如果是图片文件做成的pdf文件可能查不出)。

Excel中怎么把一个表中的数据引用到另一个表
详情请查看视频回答

word 中如何实现 一个正文位置输入 另一个正文地方自动生成一样的
word 中实现一个正文位置输入 另一个正文地方自动生成一样的步骤如下:1.首先打开一个需要加入目录的文档,选择想要作为主目录的文字,设置样式为标题1,依次将次目录设置为标题2,再往下的就是标题4、标题5等等。2.设置好后,选择【插入】下的【引用】,再点击下面的【索引和目录】。3.在弹出的窗口...

单词在高考中出现的频率,有没有什么软件可以查?
目前市面上大多数的所谓的频率其实都带了水份,可能甚至机构根本没有做所谓的词频分析。我建议你去看看秒词邦、乐词、百词斩这一些,也是中国3大单词软件。秒词邦高中、百词斩大学、乐词雅思。

文档怎么搜索关键词就跳到那一题
如果要查询的关键词在文档中出现了多次,可以使用“高级搜索”或者“全文搜索”功能,以提高搜索的准确性和效率。如果要查询的关键词在数据库中表中,可以使用数据库查询工具,如MySQL Workbench、Oracle SQL Developer等,以进行更精确的查询和匹配。总之,要让文档中的某个关键词跳转到指定的那一题,可以...

excel中如何用函数把列中包含某个关键字的行全部筛选并且在另一个...
没有具体的数据,所以很难给出一个最佳的方法。但琢磨用数据透视表是一个简单易行的方法。透视表中把关键词所在的列拖到筛选区域,筛选需要的关键词,就会得到相应的筛选结果。

相似回答
大家正在搜