免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
打印 上一主题 下一主题

求中英文分词或分句的代码 [复制链接]

论坛徽章:
0
11
发表于 2014-08-07 14:10
帮我看看中英文每句对齐程序怎么改,另外你的代码有些我没看懂,还有你的思路是什么,可以讲讲看吗 ?
use IO;
use 5.10.1;

use warnings;  
use strict;  

my $usage = "Bilingual_aligned.pl input1_text input2_text output_test \n";

(@ARGV == 3) || die $usage;
my ($fn1_IN,$fn2_IN,$fn_OUT) = @ARGV;

chomp($fn1_IN);
chomp($fn2_IN);
chomp($fn_OUT);

my( $INCH,$INEN,$OUT);
my($lines,@EN,@CH);   
my %dic = qw[
   government 政府 Islamist 伊斯兰  eastern 东部  killed 丧生 city 城市 leader 领导人 war 内战 United Nations 联合国  Turkey 土耳其
   diplomatic staff 外交人员  recommended 建议 commercial 商业 Britain 英国 Egypt 埃及 state 国家 media 电台 reporting 报道 deaths 丧生
   Egyptians 埃及人  Libyan 利比亚 capital 首都 Tripoli 的里波里  rocket 火箭 hit 击中 home 住所 near 附近 airport 机场
   fighting 激战 rival 对立 militias 民兵 entering 进入 third 第三  week 星期  
   
   ];

open($INCH,"< $fn1_IN ") || die " failed to open the input file1";
open($INEN,"< $fn2_IN ") || die " failed to open the input file2";
open($OUT, "> $fn_OUT")  || die " failed to open the output file";

while($lines=<$INCH>){
         $/ = '。';
         @CH=$lines;
         #print @CH;
         }

while($lines=<$INEN>){
        $/ = '.';
        @EN=$lines;
        #print @EN;
        }
       
close($INCH);
close($INEN);

my $i = 0;

for my $e (@EN) {

    my $begin    = $i;

    my @sentence = map { [/\w+/g] } split /,/, $e;  #将读入的每句话按照逗号进行切分然后赋给数组

    for my $ws (@sentence) {

        my $index = $#{$ws} >= 3 ? [ 0, $#{$ws} / 2, -1 ] : [ 0, -1 ];

        my @word  = @$ws[@$index];

        my $ok    = 0;

        say "CHECK: [ ", join( '|', @word ) . ' ]';
      NEXT: for my $w (@word) {

            ++$ok and next unless exists $dic{$w}; #如果在dic中存在中文就继续执行否则跳出

            my $c = $dic{$w};                     #将字典中的值保存在$c中

            if ( $CH[$i] =~ /$c/ ) {              #如果中文中的句子与字典里的中文相匹配

                say "$w\t$c = ok";                #字典中的键 值 =ok ,说明成功匹配

                $ok++;

            }

        }

        unless ( $ok > @word * 2 / 3 ) {

            say "FAIL !!\tcheck next sentence";

            ++$i and goto NEXT;

        }

        sleep 1;

    }



    print '=' x 24;print "\n";

    print "match\t\@CH[ $begin .. $i ]";print "\n";

    print '-' x 24;print "\n";

    print $e;print "\n";

    print @CH[ $begin .. $i++ ];print "\n";

    print '-' x 24;print "\n";

}

       
       
       
       

回复 8# pitonas


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
12 [报告]
发表于 2014-08-07 15:47 |只看该作者
大神不QQ,
QQ非大神! ~ {:2_168:}

我的代码翻译自这里, 但是代码我的 $师傅 rubyish 删除了 ~{:2_179:}
寻找单词
http://bbs.chinaunix.net/thread-4133356-1-1.html

回复 10# 大山里出来的孩子


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
13 [报告]
发表于 2014-08-08 13:29 |只看该作者
  1. green:绿
  2. bonnet:帽子
复制代码
$师傅  为何        绿帽子 = 破产

有任何典故吗?

回复 4# huang6894


   

论坛徽章:
8
技术图书徽章
日期:2013-08-22 11:21:28未羊
日期:2015-01-19 22:22:25巳蛇
日期:2014-08-11 16:53:08子鼠
日期:2014-05-29 09:04:44摩羯座
日期:2014-04-11 14:15:07丑牛
日期:2014-01-24 12:41:28金牛座
日期:2013-11-21 17:38:28射手座
日期:2015-01-21 08:50:32
14 [报告]
发表于 2014-08-08 13:42 |只看该作者
回复 13# pitonas


    源自法国习俗。在17世纪时的法国,破产的人必须戴上一顶绿帽子,以表明自己的经济现状,提醒别人在与他进行财务往来时务必小心谨慎。后来,人们就用have a green bonnet喻指“生意失败;破产”。

大神你想啊,都破产了,老婆还不走啊?

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
15 [报告]
发表于 2014-08-08 13:42 |只看该作者
http://www.jpgushi.com/shaoer/danci/7018.html
源自法国习俗 ~ {:2_172:}
  1. 源自法国习俗。在17世纪时的法国,破产的人必须戴上一顶绿帽子,以表明自己的经济现状,提醒别人在与他进行财务往来时务必小心谨慎。
  2.    
  3. 后来,人们就用 have a green bonnet 喻指“生意失败;破产”。
复制代码

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
16 [报告]
发表于 2014-08-08 13:55 |只看该作者
这确实别有风味 ~ {:2_172:}
  1. in C: 戴绿帽 导致 破产
  2. in F: 破产 导致 戴绿色帽子
复制代码
回复 14# huang6894


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP