perl 关键词检索程序
来源:互联网 发布:python开源运维 编辑:程序博客网 时间:2024/06/08 12:36
#################在下面的文本中检索关键词#####################
然后 你 妹妹 怎么 打电话 呀
26.1 26.36 26.36 26.48 26.48 27 27 27.24 27.24 27.86 27.86 28.12
0.0000
只能 扣费 打电话 市话 一 毛 二 长途 两 毛 我看 有没有 别的 扣费 的 稍等
29.23 29.5 29.5 29.5 29.5 30.12 30.12 30.44 30.44 30.54 30.54 30.66 30.66 30.84 30.84 31.11 31.11 31.26 31.26 31.42 31.42 31.64 31.64 31.91 31.91 32.18 32.18 32.54 32.54 32.81 32.81 33.2
0.0030
啊
42.83 43
0.0000
只要 您 今日 取消 套餐 好
44.05 44.21 44.21 44.4 44.4 44.74 44.74 45.13 45.13 45.44 45.44 45.71
0.0100
对 呀 五 元 那 套餐 是 没有了 吧
46.76 46.92 46.92 47.16 47.16 47.62 47.62 47.77 47.77 47.93 47.93 48.28 48.28 48.38 48.38 48.81 48.81 49.06
0.0020
然后 身份证 号 身份证 号 记得 吧
54.57 54.87 54.87 55.2 55.2 55.39 55.39 55.391 55.391 55.392 55.39 55.62 55.62 55.84
0.0000
啊 行 那 祝 您 愉快
80.67 81.11 81.11 81.33 81.33 81.52 81.52 81.62 81.62 81.74 81.74 82.08
0.0000
################################################################
#!/usr/bin/perl
use Encode;
use Thread;
# use Encode;
#use threads::shared;
# $dat="测试文本";
# $str=decode("gb2312",$dat);
# print encode("gb2312",$str),"\n";
if($#ARGV < 2 )
{
print "usage:perl key_search.pl wavlist keywordlist thread_count result \n";
exit(2);
}
#find ./ -name "*.wav" > wav.lst
my($wavlist,$keywordlist,$thread_count,$keyresult)=@ARGV;
open(WAV, "<$wavlist") or die "1\n";
open(KEYWORD, "<$keywordlist") or die "3\n";
open(RESULT, ">$keyresult") or die "4\n";
my @wav = ();
my @wkeyword = ();
@wav = <WAV>;
@wkeyword = <KEYWORD>;
#print ("@wkeyword\n");
$icount=0;
#foreach my $fwav (@wav) {
#next unless defined $fwav;
# chomp $fwav;
# $threads[$tempcount]=Thread->new(\&start_thread,$fwav,\@wsent,\@wkeyword);
# $tempcount++;
# }
#foreach my $thread (@threads) {
# $thread->join();
#}
while($icount<scalar(@wav))
{ while(scalar(threads->list())<$thread_count)
{
chomp($wav[$icount]);
threads->new(\&start_thread,$wav[$icount],\@wkeyword);
$icount++;
}
foreach $thread(threads->list(threads::all))
{ if($thread->is_joinable())
{ $thread->join();
}
}
}
foreach $thread(threads->list(threads::all))
{ $thread->join();
}
sub start_thread{
local ($lwav,$nkeyword)=@_;
local @keyword=@{$nkeyword};
# print ("paramater is @keyword\n");
#print ("paramater is $lwav\n");
local $pos=0;
local $kresult;
local $count=0;
local $leap=0;
local @posarray=();
local @resultarray=();
local @tmpresult=();
local $lkeyword;
local $find=0;
local @findkey=();
#$id=Thread->self->tid();
#print (RESULT "in thread $id :\n");
# print "in thread $id :\n";
print (RESULT "$lwav\n");
$lwav=~s/\.wav/_sent.txt/;
local $lsent=$lwav;
# print " sent file is $lsent\n";
for $lkeyword (@keyword)
{
chomp($lkeyword);
#print ("line keyword is $lkeyword\n");
@segkeyword = split( /=/ , $lkeyword );
#print "segFile is @segFile\n";
$tmpkey=$segkeyword[0];
$dtmpkey=decode("gb2312",$tmpkey);
open(FSENT, "<$lsent") or die "5\n";
while($flsent=<FSENT>)
{
chomp($flsent);
$integrate=$flsent;
$integrate=~s/\s//g;
$dintegrate=decode("gb2312",$integrate);
#print ("sent line is $flsent\n");
# print ("sent line is $flsent\n");
@segsent = split( /\s/ , $flsent );
if($flsent =~ /[\x80-\xFF]+?/)
{
# print "flsent is $flsent\n";
$leap=0;
$count=0;
for my $lresult (@segsent)
{
$dresult=decode("gb2312",$lresult);
if($dresult=~/$dtmpkey/)
{
$find=1;
push @findkey, $tmpkey;
push @posarray, $count;
push @resultarray, $lresult;
#$pos=$count;
#print(RESULT "$lresult ");
}
$count++;
}
if(($dintegrate=~/$dtmpkey/)&&($find==0))
{
$count=0;
$len=length($dtmpkey);
for ($ilen=1;$ilen<$len;$ilen++)
{
$end=$len-$ilen;
$dtmpstr=substr($dtmpkey,0,$end);
#print encode("gb2312",$str),"\n";
$dstrtmp=encode("gb2312",$dtmpstr);
print ("partstr is $dstrtmp\n");
for my $lresult (@segsent)
{
$dresult=decode("gb2312",$lresult);
if($dresult=~/$dtmpstr/)
{
$find=1;
push @findkey, $tmpkey;
push @posarray, $count;
push @resultarray, $lresult;
#$pos=$count;
#print(RESULT "$lresult ");
}
$count++;
}
if($find==1)
{
last; #already find longest substring.so break the loop
}
}
}
}
if($leap==1)
{
if($find==1)
{
$inumber=@posarray;
for($i=0;$i<$inumber;$i++)
{
$pos=@posarray[$i];
#print(RESULT "@resultarray[$i] @segsent[$pos*2] @segsent[$pos*2+1] ");
#$tmpline="@resultarray[$i] @segsent[$pos*2] @segsent[$pos*2+1]";
$tmpline="@findkey[$i] @segsent[$pos*2] @segsent[$pos*2+1]";
push @tmpresult,$tmpline;
}
#for my $pos (@posarray) and for my $kresult (@resultarray)
#{
# print(RESULT "$kresult @segsent[$pos*2] @segsent[$pos*2+1] ");
#}
#print(RESULT "\n");
$find=0;
@findkey=();
@posarray=();
@resultarray=();
}
}
if($leap==2)
{
$inumber1=@tmpresult;
for($j=0;$j<$inumber1;$j++)
{
$tmp=@tmpresult[$j];
print(RESULT "$tmp $flsent\n");
}
@tmpresult=();
next;
}
$leap++;
}
close(FSENT);
}
}
close(WAV);
close(KEYWORD);
close(RESULT);
- perl关键词检索程序
- perl 关键词检索程序
- Perl 检索zabbix 主机
- 语音关键词检索实验小结
- Django REST framework实现关键词检索
- Perl -d 调试perl程序
- TVrage检索程序 [上]
- 第一次写Perl程序
- perl的cgi程序
- 第一个perl程序
- perl 命令行程序
- perl程序 ex_1.pl
- perl的有趣程序
- 第一个perl程序
- 收藏个perl程序
- perl程序例子
- Perl脚本示例程序
- 自动邮件程序(perl)
- Ajax中Get和Post两种传值方式的异同
- 什么是依赖注入
- std::map
- 2013年最差密码集合——你中枪了么?
- jQuery实现表格隔行换颜色:
- perl 关键词检索程序
- 坑
- MySQL锁定状态查看命令
- 入门介绍(WebLogic 10.3.5)
- shell
- android 开源工具
- OPENCV例子
- 《C语言点滴》书评
- java中的io系统详解