Perl 正则匹配——对分词标注结果正则匹配

# 3、A、中文编码 从文件夹读文件 (问原文标记还是输出歧义句子)
    # 写文件的时候每次文件名字加一(之前有处理过分文件)
   # B、提取“  |/w  |/w  |/w”之前的中文句子进行判断
   # C、判断分为几个情况
      # * 含有“/k” 无操作
      # * 含有“/ni” 无操作
      # * 只要含有“d” “r” “c” 有歧义
      # * 开头含有“ v | u | p”  :(.*) $1 =~ "/v || /u || /p"
      # * 开头含有“m” + "q" 或者 “m” + "n"  : $1=~ "m" && $2=~ "q" || $2=~ "n"
      # * 开头有 “和”  看前两个字
      # * 结尾不是“/n”   .* (.*) 
      
use Encode;
#use utf8;
$Utf8;
      
open(In,"100001.txt"); #迈向/v 充满/v 希望/n 的/u 新/a 世纪/n
open(out,">tanhao.txt"); 
@Lines=<In>;
$n=0;
chomp(@Lines);
foreach $OnelIne(@Lines){
    $n++;
    #print $OnelIne;
    #$OnelIne = decode("GBK", $OnelIne);
    #if($OnelIne =~ /\/k/ || $OnelIne =~ /\/ni/) next;
    if($OnelIne =~ /\/d/ ||$OnelIne =~ /\/r/ ||$OnelIne =~ /\/c/){
        print out $n."_".$OnelIne .="   !\n";
        next;
    }
    if($OnelIne =~ /(.*)\s(.*)/){ 
        if($1 =~ ~/[vup]/){
            print out $n."_".$OnelIne .="   !\n";
            next;
        }
    }
    if($OnelIne =~ /(.*)\s+(.*)\s+(.*)/){ 
        if($1 =~/\/m/ && $2 =~ /[qn]/){
            print out $n."_".$OnelIne .="   !\n";
            next;
        }
    }
    if($OnelIne =~ /[^\/n]\/s\|\/w/){
        print out $n."_".$OnelIne .="   !\n";
        next;    
    }
    
}
close(In);
close(out);

一个标注网站:http://www.aihanyu.org/cncorpus/CpsWParser.aspx

posted @ 2017-11-30 18:26  hozhangel  阅读(316)  评论(0编辑  收藏  举报