最近打算深入了解一下机器翻译系统的具体功能模块,以东北大学的Niutrans为蓝本,其用户手册里有一些对其他开源的统计机器翻译系统的介绍,觉得也不错,就简要地记一下发在这里。
Moses:Edinburgh大学SMT小组开发。最新版本的同时支持基于短语的以及基于句法的模型(从短语,规则的提取到解码)。提供了分解的翻译模型,使得信息在不同层之间利用。还有混淆网络以及词格作为输入的使用,减弱了在ambiguous upstream 系1-best输出的错误。此外Moses的package提供了很多有用的脚本和工具,用以支持附加的特征。
Joshua:另一种state-of-the-art(顶尖)的开源SMT系统,Johns HopkinsUniversity开发的。其基础模型是[Chiang,2005]提出来的基于层次短语的模型。相比于基础模型,
Joshua 提供了一些有趣的特征,比如有语法的解码,利用map-reduce进行的平行训练以及多种的解码。由于它是以Java实现的,所以扩展性比较好,能用在不同的平台运行和开发。对于新想法以及当前先进的结果,用Java实现也比较简便(相比于C/C++)。
SilkRoad:就是丝路系统。这是一个基于短语的SMT系统,由中国的五个大学和研究机构研发(中科院自动化所,软件所,计算所,厦门大学,哈工大)。丝路系统是亚洲第一个开源的SMT系统。首要目标是支持中-外翻译,当然也有其他语言对的翻译。它有一些有用的组件,比如分词模块,可以让用户很容易地建立中-外翻译系统。此外,丝路系统支持有多重的解码以及规则提取,利用不同组合的支系统,为实验提供多样的选项。
SAMT:SAMT是一个由卡内基梅隆大学机器翻译小组研发的增强句法的SMT系统。它利用目标树减少了翻译规则。其亮点是提供了简单有效的方式去利用SMT中的句法信息,并且在一些工作中都显示出不错的效果。因为其是由hadoop实现的,所以可以从对大数据集的分布式处理中受益。
Cdec:这是一种powerful的decoder。可以用作一种校准或者一种SMT的学习框架。很快,因为是用C++开发的。
?
Phrasal:由斯坦福自然语言处理小组开发。作为对传统的基于短语模型的补充,它也支持基于非层次短语的模型,是对基于短语翻译到非连续短语的扩展。所以,能对不可见的数据提供更好的普遍化的方法,甚至处理在层次模型中(比如在Joshua中)miss的cases。[A large-scale statistical machine translation system written in Java. http://www-nlp.stanford.edu/wiki/Software/Phrasal]
Jane:另一种用C++实现的基于短语和基于层次短语的模型。支持很多有趣的特征(比如MIRA对于权值的调整),在一些工作中也取得了显著的结果。