免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
36 [报告]
发表于 2014-08-06 16:54 |只看该作者
大神,你是直接处理文章那里面的几句话,要使针对这两篇文章所有内容又该如何处理呢 ?回复 30# pitonas


   

论坛徽章:
0
35 [报告]
发表于 2014-08-06 16:52 |只看该作者
大神啊,神奇的代码,好复杂,但是这个只能针对一特定的文章进行处理,要实用于大部分类似的文章又该如何处理呢 ?回复 30# 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
34 [报告]
发表于 2014-08-06 16:08 |只看该作者
一个思路 ( 没有 充分考虑 细节 及 效能 ):
请自行捉摸, 捉摸 ~ {:2_179:}
  1. CHECK: [ Egypt|the|capital ]
  2. Egypt        埃及 = ok
  3. capital        首都 = ok
  4. CHECK: [ Tripoli|Tripoli ]
  5. Tripoli        的里波里 = ok
  6. Tripoli        的里波里 = ok
  7. CHECK: [ after|their|airport ]
  8. airport        机场 = ok
  9. CHECK: [ where|militias|week ]
  10. FAIL !!        check next sentence
  11. militias        民兵 = ok
  12. week        星期 = ok
  13. ========================
  14. match        @C[ 0 .. 1 ]
  15. ------------------------
  16. Egypt's state media is also reporting the deaths of 23 Egyptians in the Libyan capital, Tripoli, after a rocket hit their home near the airport, where deadly fighting between rival militias is entering a third week.
  17. 埃及国家电台也报道说,有23名埃及人在利比亚首都的里波里丧生,此前一枚火箭弹击中了这些埃及人在机场附近的住所。当地对立民兵组织之间的激战已经进入了第三个星期。
  18. ------------------------
  19. CHECK: [ Egypt|the|capital ]
  20. Egypt        埃及 = ok
  21. capital        首都 = ok
  22. CHECK: [ Tripoli|Tripoli ]
  23. Tripoli        的里波里 = ok
  24. Tripoli        的里波里 = ok
  25. CHECK: [ after|their|airport ]
  26. airport        机场 = ok
  27. CHECK: [ where|militias|week ]
  28. FAIL !!        check next sentence
  29. militias        民兵 = ok
  30. week        星期 = ok
  31. ========================
  32. match        @C[ 2 .. 3 ]
  33. ------------------------
  34. Egypt's state media is also reporting the deaths of 23 Egyptians in the Libyan capital, Tripoli, after a rocket hit their home near the airport, where deadly fighting between rival militias is entering a third week.
  35. 埃及国家电台也报道说,有23名埃及人在利比亚首都的里波里丧生,此前一枚火箭弹击中了这些埃及人在机场附近的住所。当地对立民兵组织之间的激战已经进入了第三个星期。
  36. ------------------------
复制代码
  1. #!/usr/bin/perl
  2. use 5.010;

  3. my %dic = qw[
  4.   Egypt 埃及
  5.   state 国家
  6.   media 电台
  7.   reporting 报道
  8.   deaths 丧生
  9.   Egyptians 埃及人
  10.   Libyan 利比亚
  11.   capital 首都
  12.   Tripoli 的里波里
  13.   rocket 火箭
  14.   hit 击中
  15.   home 住所
  16.   near 附近
  17.   airport 机场
  18.   fighting 激战
  19.   rival 对立
  20.   militias 民兵
  21.   entering 进入
  22.   third 第三
  23.   week 星期
  24. ];

  25. my @E = (
  26. q[Egypt's state media is also reporting the deaths of 23 Egyptians in the Libyan capital, Tripoli, after a rocket hit their home near the airport, where deadly fighting between rival militias is entering a third week.],
  27. q[Egypt's state media is also reporting the deaths of 23 Egyptians in the Libyan capital, Tripoli, after a rocket hit their home near the airport, where deadly fighting between rival militias is entering a third week.],

  28. );
  29. my @C = (
  30. q[埃及国家电台也报道说,有23名埃及人在利比亚首都的里波里丧生,此前一枚火箭弹击中了这些埃及人在机场附近的住所。],
  31. q[当地对立民兵组织之间的激战已经进入了第三个星期。],
  32. q[埃及国家电台也报道说,有23名埃及人在利比亚首都的里波里丧生,此前一枚火箭弹击中了这些埃及人在机场附近的住所。],
  33. q[当地对立民兵组织之间的激战已经进入了第三个星期。],
  34. );

  35. my $i = 0;
  36. for my $e (@E) {
  37.     my $begin    = $i;
  38.     my @sentence = map { [/\w+/g] } split /,/, $e;
  39.     for my $ws (@sentence) {
  40.         my $index = $#{$ws} >= 3 ? [ 0, $#{$ws} / 2, -1 ] : [ 0, -1 ];
  41.         my @word  = @$ws[@$index];
  42.         my $ok    = 0;
  43.         say "CHECK: [ ", join( '|', @word ) . ' ]';
  44.       NEXT: for my $w (@word) {
  45.             ++$ok and next unless exists $dic{$w};
  46.             my $c = $dic{$w};
  47.             if ( $C[$i] =~ /$c/ ) {
  48.                 say "$w\t$c = ok";
  49.                 $ok++;
  50.             }
  51.         }
  52.         unless ( $ok > @word * 2 / 3 ) {
  53.             say "FAIL !!\tcheck next sentence";
  54.             ++$i and goto NEXT;
  55.         }
  56.         sleep 1;
  57.     }

  58.     say '=' x 24;
  59.     say "match\t\@C[ $begin .. $i ]";
  60.     say '-' x 24;
  61.     say $e;
  62.     say @C[ $begin .. $i++ ];
  63.     say '-' x 24;
  64. }

复制代码

论坛徽章:
0
33 [报告]
发表于 2014-08-06 13:50 |只看该作者
你会用动态规划处理吗 ?回复 27# huang6894


   

论坛徽章:
0
32 [报告]
发表于 2014-08-06 12:36 |只看该作者
你去帮忙喊个大神过来吧 ,我认识的少 回复 27# 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
31 [报告]
发表于 2014-08-06 12:35 |只看该作者
大山里出来的孩子 发表于 2014-08-06 11:29
你下面的那个中文句子的句号怎么对应应恩英文句子那个逗号呢,若是一句英文对应三局或四句中文呢,或者是一 ...


对呀,所以就不能了~

论坛徽章:
0
30 [报告]
发表于 2014-08-06 11:32 |只看该作者
按标点符号去分也行,只要能正确的对其就好,可不可以把代码贴出来看看 回复 24# huang6894


   

论坛徽章:
0
29 [报告]
发表于 2014-08-06 11:29 |只看该作者
你下面的那个中文句子的句号怎么对应应恩英文句子那个逗号呢,若是一句英文对应三局或四句中文呢,或者是一句中文对应好几句英文呢回复 24# 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
28 [报告]
发表于 2014-08-06 11:25 |只看该作者
回复 21# 大山里出来的孩子


    我的意思是:

按句号划分:

利比亚政府部队星期六及星期天在东部城市班加西和武装伊斯兰民兵发生冲突,造成至少38人丧生
  At least 38 people have been killed in the eastern Libya city of Benghazi as Libyan government forces clashed with armed Islamist militants on Saturday and Sunday.

可以~

埃及国家电台也报道说,有23名埃及人在利比亚首都的里波里丧生,此前一枚火箭弹击中了这些埃及人在机场附近的住所当地对立民兵组织之间的激战已经进入了第三个星期
  Egypt's state media is also reporting the deaths of 23 Egyptians in the Libyan capital, Tripoli, after a rocket hit their home near the airport, where deadly fighting between rival militias is entering a third week.

不可以~
--------------------------------------------------------------------------------------------------------------------------

论坛徽章:
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
27 [报告]
发表于 2014-08-06 11:17 |只看该作者

这个实现有难度 ~ {:2_176:}
一起等大神吧 ~ {:2_168:}
回复 20# 大山里出来的孩子


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP