+ -
当前位置:首页 → 问答吧 → 关于语料处理的一个Perl程序求指教

关于语料处理的一个Perl程序求指教

时间:2011-04-27

来源:互联网

毕业设计和语料库有关,最近在研究一个前辈留下的程序,程序如下,功能是为了把原本的语料库中的词性标注和拼音标注,只留下字和逗号顿号,并分成短句。但为什么经过第一步处理之后,会有一部分语料丢失了呢?毕业设计提交在即,请求解答,谢谢各位。
  1. #! perl -w
  2. while(<>)
  3. {
  4.         chomp;
  5.         if(s/。|!/\n/g)
  6.         {  
  7.                 if(s/\/\w*\S*?/ /g)
  8.                 {   
  9.                         s/\{\w+\d\}//g;
  10.                         s/]\w+/]/g;
  11.                         print "$_";
  12.                 }
  13.                
  14.         }
  15. }
复制代码
原始数据:

二○○○年/t  贺词/n  
———/wp  在/p  首都/n  各界/r  迎接/v  新/a  世纪/n  和/c  新/a  千年/t  庆祝/vn  活动/vn  上{shang5}/f  的/ud  讲话/n  
(/wkz  一九九九年/t  十二月/t  三十一日/t  )/wky  
江/nrf  泽民/nrg  
女士/n  们/k  ,/wd  先生/n  们/k  ,/wd  同志/n  们/k  ,/wd  
朋友/n  们/k  :/wm  
二○○○年/t  到来/vi  的/ud  钟声/n  ,/wd  就要/d  鸣响/vi  在/p  我们/rr  这个/r  星球/n  的/ud  寥廓/z  上空/s  。/wj  人类/n  文明/n  的/ud  发展/vn  ,/wd  即将/d  进入/v  一个/mq  新/a  世纪/n  ,/wd  开启/v  一个/mq  新/a  千年/t  。/wj  今夜/t  ,/wd  在/p  世界/n  的/ud  东方/f  与/c  西方/f  、/wu  南方/f  与/c  北方/f  ,/wd  各国/r  人民/n  无/df  分/v  民族/n  、/wu  无/df  分/v  信仰/n  ,/wd  都/d  在/d  为{wei4}/p  这/r  一/m  历史/n  时刻/n  的/ud  来临/vn  而/c  欢欣鼓舞/iv  。/wj  首先/d  ,/wd  我/rr  向/p  全国/n  各族/r  人民/n  和/c  海外/s  侨胞/n  ,/wd  祝贺/v  新年/t  快乐/a  !/wt  并/c  致以/v  新/a  世纪/n  、/wu  新/a  千年/t  的/ud  最/dc  良好/a  祝愿/vn  !/wt  

处理后输出数据:

二○○○年   到来   的   钟声   ,   就要   鸣响   在   我们   这个   星球   的   寥廓   上空   
   人类   文明   的   发展   ,   即将   进入   一个   新   世纪   ,   开启   一个   新   千年   
   今夜   ,   在   世界   的   东方   与   西方   、   南方   与   北方   ,   各国   人民   无   分   民族   、   无   分   信仰   ,   都   在   为   这   一   历史   时刻   的   来临   而   欢欣鼓舞   
   首先   ,   我   向   全国   各族   人民   和   海外   侨胞   ,   祝贺   新年   快乐   
   并   致以   新   世纪   、   新   千年   的   最   良好   祝愿

作者: sunhanghe   发布时间: 2011-04-27

  1. #!/usr/bin/perl

  2. use strict;
  3. use warnings;
  4. while(<DATA>)
  5. {
  6.         chomp;
  7.         s/。|!/\n/g;
  8.         if(s/\/\w*\S*?/ /g)
  9.         {
  10.                 s/\{\w+\d\}//g;
  11.                 s/]\w+/]/g;
  12.         }
  13.         s/\s//g;  #我加的一行,去空格
  14.         print "$_\n";
  15. }
复制代码
不太清楚你的确切需求,改了一下,能达到目的。主要是你的print位置不正确。

作者: iamlimeng   发布时间: 2011-04-27