马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
前段时间看到某公众号的一篇文章讲了如何使用软件整理几十本《经济学人》的词频。而自己也有类似的需求:工作中用到的user guide中有很多出现频率很高但又生僻的单词。 根据这个需求,自己使用perl语言编写了如下脚本。此脚本可以快速的整理出文章的词频;可以根据单词出现的频率排序;可以让一些简单常用的单词不出现在最终结果中。 说明:由于本脚本是在linux系统下编写的,为了方便,脚本中调用了一些linux 程序“cat/sort/uniq”,因此此脚本不能直接在windows下运行。 txt2word.pl !/usr/bin/perl open ("INPUT","<","$ARGV[0]") ; 【读入要解析的文章】
open ("OUTPUT",">","$ARGV[0].word") ;
while (<INPUT>) { chomp ; s#[-¡°®><:/=?!'\t.,;{}\(\)\[\]\\\"\*\^`]# #g;【将一些标点符号替换为空格】 s#[\r\n]# #g; @word = split / /, $_; for ($i = 0; $i <= $#word; $i++) {
if($word[$i] =~ /[a-zA-Z]+/) {
$word[$i] =~ s/[0-9]//g;
$word[$i] =~ s/^-//;
$word[$i] =~ s/-$//;
@letter = split //, $word[$i];
if (($#letter > 3) && !($word[$i] =~ /_/)) {【只输出大于4个字符的单词,且不输出有下划线的单词,这个地方可以根据需求灵活修改】
print OUTPUT "\L$word[$i]\n";
}
}
} }
close (INPUT); close (OUTPUT); 【下面两行调用了linux的命令:cat/sort/uniq】 system "cat $ARGV[0].word | sort | uniq -c > $ARGV[0].word.su" ; system "cat $ARGV[0].word.su | sort -nr > $ARGV[0].word.sus";
【下面代码的作用是将$ARGV[1](容易常见单词列表)中的单词不输出到最终结果中】 open ("DELF","<","$ARGV[1]"); open ("NEWF","<","$ARGV[0].word.sus"); open ("OUTPUTF",">","$ARGV[0].word.susd"); @delWord = <DELF>; for ($i = 0; $i <= $#delWord; $i++) { chomp $delWord[$i]; }
while (<NEWF>) { $line = $_ ; m/\d+ (\w+)/; $word = $1 ; $flag = 0; for ($i = 0; $i <= $#delWord; $i++) {
if($word eq $delWord[$i]) {
$flag = 1;
last ;
}
} if ($flag == 0) {
print OUTPUTF "$line";
} }
使用方法:./txt2word.pl Harry_potter.txt easy.lst 脚本位置:http://pan.baidu.com/s/1mhChzmS 本人初学perl,可以加微信公众号一块交流:32768Hz 本人微信号:Hz32768
|