sub getdictclass{ #统计用词,并判断,基数词,序数词,字母词,日期,中文数字,阿拉伯数字 open(In,"<$ARGV[0]"); $flag=$ARGV[1];
while(<In>){ chomp(); if($_ eq ""){ next; } @line=split(" ",$_); for($sub=0;$sub<@line;$sub++){
if(defined $hash{$line[$sub]}){ $hash{$line[$sub]}++; }else{ $hash{$line[$sub]}=1; @chars=split //,$line[$sub]; $hashnum{$line[$sub]}=scalar(@chars); #得到词长 } } } $counttype=0; $counttoken=0;
#判断,基数词(cn,a),序数词(cn,a),字母词,日期 foreach (sort {$a<=>$b}keys (%hash)) { if($hashnum{$_}>1){ $keyword=$_; if($flag eq 'xushuci') { if($keyword=~/^第[01234567890123456789]+(.*)/) { $counttype++; $counttoken+=$hash{$keyword}; print "$keyword $hashnum{$keyword} $hash{$keyword}/n"; } } elsif($flag eq 'xushuci_cn') { if($keyword=~/^第[一二三四五六七八九十()]+(.*)/) { if($1 eq "") { $counttype++; $counttoken+=$hash{$keyword}; print "$keyword $hashnum{$keyword} $hash{$keyword}/n"; } } } elsif($flag eq 'jishuci')#需要人工继续筛选 {
if($keyword=~/^[0123456789百千万亿%/./%/--·0123456789]+(.*)/) { if($1 eq "") { $counttype++; $counttoken+=$hash{$keyword}; print "$keyword $hashnum{$keyword} $hash{$keyword}/n"; } } } elsif($flag eq 'jishuci_cn')#需要人工继续筛选 { if($keyword=~/^[一二三四五六七八九十零百千万亿]+(.*)/) { if($1 eq "") { $counttype++; $counttoken+=$hash{$keyword}; print "$keyword $hashnum{$keyword} $hash{$keyword}/n"; } } } elsif($flag eq 'zimuci') { if($keyword=~/^[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz]+(.*)/) {
$counttype++; $counttoken+=$hash{$keyword}; print "$keyword $hashnum{$keyword} $hash{$keyword}/n";
} } elsif($flag eq 'time') { if($keyword=~/^[一二三四五六七八九十零]+(.*)/ or $keyword=~/^[0123456789]+(.*)/ or $keyword=~/^/d+(.*)/) { if($1 eq "年" or $1 eq "月" or $1 eq "日" or $1 eq "月份" or $1 eq "点" or $1 eq "时" ) { $counttype++; $counttoken+=$hash{$keyword}; print "$keyword $hashnum{$keyword} $hash{$keyword}/n"; } } } } } print "type:$counttype token:$counttoken/n"; close(In);}