由于工作的关系,有一段时间没有仔细关注过统计机器翻译开源系统Moses了。前些天看到哈工大郎君师兄的文章《钱老与Moses》以及近段时间有读者询问一些和Moses相关的问题,就又回到Moses的主页和它的邮件列表中找寻一些感觉。
近期关于Moses最大的改进当属它加入了对层次短语模型(hierarchical phrase-based model)及基于句法的模型(syntax-based model)的支持,这两个模型被统称为tree-based model,而与之相应的解码算法chart decoding也相应的在Moses中实现,这些大概在10月下旬左右完成的。12月8日,Moses的主持者Philipp Koehn在邮件列表中发了一个通知“Hierarchical and syntax-based decoding in Moses”,除了可以作为一个小的总结外,同时也提供了一个如何训练和使用tree-based model的tutorial:
Hi everybody,
as you may know, Moses now also supports hierarchical and syntax-based models: translation models that are based on a context-free grammar formalism and that allow the use of syntactic information at the source and/or target.
The tree-based model and chart decoding code in Moses has been available for a while, but there is now also a tutorial:
http://www.statmt.org/moses/?n=Moses.SyntaxTutorial
…
这应该算得上是Moses发展过程中的一个里程碑,虽然层次短语模型方面存在Joshua这样的开源系统,虽然基于句法的模型方面也有SAMT系统,但是Moses无疑是第一个集“phrase-based, hierarchical, and syntax-based translation models”为一身的开源统计机器翻译系统,这属于Moses的成功,同时也属于Moses社区的成功!
回头再说一下郎君师兄的《钱老与Moses》,文章写得很好,尤其关于创新这方面的思考值得回味,但是我对于郎君师兄的结论稍有一点不同的看法:
...
通过这些,我知道了Moses是在每天进步的,而且相关的维护人员也是热情高涨的在从事着相关的工作。仔细观察这两个邮件列表,我发现全世界很多国家的人在一起参与Moses的日常更新,不管是Bug的提交和发现,还是代码的SVN Checkin。
Moses的这种共享,使得我这个从来没有碰过机器翻译的外行居然在短短的时间里实现了Moses的训练、测试、单步跟踪等工程实践上的事情,同时 Moses开发时的良好架构和丰富标准注释使得我能采用Doxygen来获得完美的代码文档。我很钦佩Moses的创建者和维护者们。
一时又想到了上面提到的钱老当年的老师卡门的那个对话:卡门教授,你把这么好的思想都讲出来了,就不怕别人超过你?’卡门说:‘我不怕,等他赶上我这个想法,我又跑到前面老远去了。’
我想创新就是Moses这样吧。特别推荐搞NLP但是不做MT的朋友都看看Mose的方方面面。肯定会有巨大收获的。
最后这几段关于Moses写得非常不错,但唯独“创新就是Moses吧”我不敢苟同,借用《大教堂和市集》里的一段话:
我不这样想,我承认Linus是一个极好的黑客(我们有多少人能够做出一个完整的高质量的操作系统内核?),但是Linux并不是一个令人敬畏的概念上的飞跃,Linus不是(至少还不曾是)象Richard stallman或James Gosling一样的创新天才,在我看来,Linus更象一个工程天才,具有避免错误和开发失败的第六感觉,掌握了发现从A点到B点代价最小的路径的决窍,确实,Linux的整个设计受益于这个特质,并反映出Linus的本质上保守和简化设计的方法。
同样,我也不这样想,我承认Koehn是一个极好的推动统计机器翻译发展的学者,但是Moses并不是一个令人敬畏的概念上的飞跃,在统计机器翻译领域,Koehn不是(至少还不曾是)像Brown,Och这样的创新天才,但是更像一个工程天才,他在早期推出的Pharaoh解码器虽然没有开源,但是其规范的说明文档给了很多统计机器翻译“门外汉”足够的启示,之后的升级版本Moses,虽然主要的代码部分并非他个人所写,但是作为Moses开源系统的领导者,他很好的完成了自己“守门人”的角色,让Moses在市集模式及开源社区的支持下茁壮成长。
郎君师兄“特别推荐搞NLP但是不做MT的朋友都看看Mose的方方面面。肯定会有巨大收获的”,我也推荐读者朋友关注一下Moses,不过自然语言处理国外优秀的开源工具还有很多,有时不得不感慨:搞自然语言处理,生在美国最幸福;搞统计机器翻译,生在欧洲最开心。为什么是欧洲呢?因为他们不仅有EuroMatrix,还有EuroMatrixplus。
注:原创文章,转载请注明出处“我爱自然语言处理”:www.52nlp.cn
本文链接地址:https://www.52nlp.cn/moses-recent-developments-and-others
欧洲有euromatrix美国也有GALE啊。我倒觉得现在做NLP搞SMT就是幸福,呵呵。不过欧洲搞这个确实有得天独厚的优势,开车几个小时就换个语言,每个人都说好几种。
[回复]
52nlp 回复:
13 12 月, 2009 at 12:07
呵呵,我孤陋寡闻了!
[回复]
内容好丰富,机器翻译的方方面面都涉及到了,发现自己的知识面有点窄,呵呵。
[回复]
52nlp 回复:
18 4 月, 2010 at 00:07
也是边写边学的,慢慢来就知道了。
[回复]
国内SMT任务艰巨啊
[回复]
52nlp 回复:
31 8 月, 2010 at 23:09
国内NLP任务同样艰巨!
[回复]
大家好,我在Ubuntu 14.04 LTS (amd-64)
VMware虚拟机上运行moses的时候MERT这一步出现了错误,错误信息如下:
nohup: ignoring input
Using SCRIPTS_ROOTDIR: /home/kkdown/work/mt/moses/scripts
filtering the phrase tables... Thu Jul 23 13:47:12 CST 2015
exec: /home/kkdown/work/mt/moses/scripts/training/filter-model-given-input.pl ./filtered /home/kkdown/work/mt/working/train/model/moses.ini /home/kkdown/work/mt/corpus/news-test2008.true.fr
Executing: /home/kkdown/work/mt/moses/scripts/training/filter-model-given-input.pl ./filtered /home/kkdown/work/mt/working/train/model/moses.ini /home/kkdown/work/mt/corpus/news-test2008.true.fr > filterphrases.out 2> filterphrases.err
Exit code: 255
ERROR: Failed to run '/home/kkdown/work/mt/moses/scripts/training/filter-model-given-input.pl ./filtered /home/kkdown/work/mt/working/train/model/moses.ini /home/kkdown/work/mt/corpus/news-test2008.true.fr'. at /home/kkdown/work/mt/moses/scripts/training/mert-moses.pl line 1723.
有人碰到过这个问题吗?请大家帮帮忙··
[回复]