免费注册 查看新帖 |

Chinaunix

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

实现汉英双语翻译每句自动对齐 [复制链接]

论坛徽章:
0
46 [报告]
发表于 2014-08-07 16:28 |只看该作者
我在dictionary 里添加了本文章的重要单词,现在只是想测试这篇文章 ,我结果出来还是一段英文、一段中文,怎么办啊 ?回复 41# pitonas


   

论坛徽章:
0
45 [报告]
发表于 2014-08-07 16:25 |只看该作者
但是结果并非我所要的啊,我实在win7下运行的 回复 41# 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
44 [报告]
发表于 2014-08-07 15:36 |只看该作者

小伙伴们 ~ {:2_172:}

1: 建立一个通用 %dic
try to download a E-C dictionary, and edit
并编辑出自己适用版本

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


   

论坛徽章:
0
43 [报告]
发表于 2014-08-07 12:11 |只看该作者
你用的是二维数组吗?那如果我输入一篇文章,里面很多句子该怎么处理呢? 回复 33# pitonas


   

论坛徽章:
0
42 [报告]
发表于 2014-08-07 11:21 |只看该作者
大神,帮我改改下面的代码吧,加个注释,其中输入的两篇文章 已经按句子切分好了 回复 33# pitonas


   

论坛徽章:
0
41 [报告]
发表于 2014-08-07 11:17 |只看该作者
本帖最后由 大山里出来的孩子 于 2014-08-13 08:47 编辑

下面大神的那个代码你看懂了吗 ?像我这个应该怎样去修改?其中输入的两篇中英文已经经过分句处理了

my %dic = qw[
   
   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};

            my $c = $dic{$w};

            if ( $CH[$i] =~ /$c/ ) {

                say "$w\t$c = 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";

}

       
       
       
       



回复 4# huang6894


   

论坛徽章:
0
40 [报告]
发表于 2014-08-07 10:12 |只看该作者
是不是首先需要将文章进行切分句子啊??回复 33# pitonas


   

论坛徽章:
0
39 [报告]
发表于 2014-08-07 09:05 |只看该作者
您好 ,您那个代码我没怎么看懂,可不可以帮忙在42句及以后的句子加个注释啊 ,另外 你处理的思路是怎样的?可否告诉我一下,谢谢!!!(方便的话留个qq) 回复 30# pitonas


   

论坛徽章:
0
38 [报告]
发表于 2014-08-06 18:13 |只看该作者
恩你真好,你这个思路很好,我回去想想,我perl语言没学好,没注释,很多没怎么看懂,非常感谢你的回答。有不懂的再问你 回复 33# 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
37 [报告]
发表于 2014-08-06 18:03 |只看该作者
本帖最后由 pitonas 于 2014-08-06 11:20 编辑

小伙伴们, 鼓励 举一反三 ~ {:2_168:}

但是这个只能针对一特定的文章进行处理,要实用于大部分类似的文章又该如何处理呢 ?

WHEN YOU READ 到 line4:
  1. my %dic =  
复制代码
应该想到

1: 建立一个通用 %dic
try to download a E-C dictionary, and edit
并编辑出自己适用版本
  1. my %dic = (
  2.     militias =>  [qw/民兵组织 自卫队 义勇军 国民军/],
  3.     capital =>   [qw/首都 首府 省会 资本 资金 大写字母/],
  4. ....
复制代码
你是直接处理文章那里面的几句话,要使针对这两篇文章所有内容又该如何处理呢 ?

WHEN YOU READ 到 line27, line32:
  1. my @E =
  2. my @C =
复制代码
应该想到

2: read 文章那里面的桔子 to an array. 例如:
  1. open my $ch, 'c.txt';
  2. open my $en, 'e.txt';

  3. $/ = '。';
  4. my @C = <$ch>;
  5. $/ = '.';
  6. my @E = <$en>;
复制代码
回复 32# 大山里出来的孩子


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP