2011年10月17日

我的机器翻译学习经历以及即将开启的词对齐学习

统计机器翻译的第一步就是词对齐,随后抽取短语表,然后根据短语表进行翻译解码,中间会根据语言模型来选取最优的翻译结果。整个统计机器翻译的各个步骤都有很多人在不断的深入研究,从mt-archieve这个网页(http://www.mt-archive.info/subjects.htm)可以见识到相关论文的增长速度。面对如此海量的论文,对于一个统计机器翻译的新手,究竟该何去何从呢?这个问题长时间的困扰了我。

去年年初博士毕业后开始接触统计机器翻译。好友张慧一开始就建议我仔仔细细从零开始实现一个机器翻译的系统,可以完全从词对齐开始实现全部的步骤,也可以针对解码器从零开始实现解码功能,经过这个阶段后才能真正领悟统计机器翻译的魅力以及其中的症结。由于项目的压力,我只能抽出业余时间来完成这个计划。起初是想从零开始实现解码器,经过一个多月的业余开发,我的解码器可以得到和moses的最基本stack解码一模一样的各种概率输出。当时我小小的兴奋了一下,感觉对机器翻译总算有了一点点感觉。但是随着翻译句子长度的增加,我的解码器速度变得非常的慢,比起moses的速度差远了,内存开销方面我的解码器也比moses差很多。后续我开始研究moses的各种加速技术以及节省内存开销的方法。在网上四处转悠后发现了kenlm这个比srilm好很多的语言模型工具包。熟练使用后,我把kenlm的代码改装替换掉了我的解码器的语言模型,也同时替换掉了我的项目里使用的语言模型,当时我项目使用的decoder在内存开销方面节省了很多。随着更进一步的优化,我对stack解码器相关的技术了解了更多。当我开始尝试编写cube pruning解码方法时,开始被项目项目相关的其他事宜占用全部的时间,随后我的解码器业余时间研发计划就被搁置下来。仔细算来,我的这个事项居然被耽搁了半年多了。

随着对统计机器翻译的认识不断深入,我越发觉得如果想深入研究机器翻译或者从事相关的开发工作,词对齐方面的研究必不可少。给我造成这种直觉的直接原因,是我原本想准备完成一项短语表过滤的研究任务。但是随着调研和各种对比实验的深入,我发现单纯从已有的低质短语表出发,很难找到更加有效的过滤方法。更加fundamental的方法是进行更好的词对齐以及后续的短语抽取。这个路子可能才是解决问题的思路。

后续我阅读了近两年来的关于词对齐的论文,最近在reading group上主讲的《An Unsupervised Model for Joint Phrase Alignment and Extraction 》、《Feature-Rich Language-Independent Syntax-Based Alignment for Statistical Machine Translation 》、《Bayesian Word Alignment for Statistical Machine Translation》让我对词对齐任务有了进一步深入的认识。词对齐的根本目的是为了抽取短语,好的短语可以产生好的翻译。有人也在绕过词对齐,而直接作短语对齐。细数mt-archieve上的词对齐论文,几百篇的数量让人惊讶。

我想深入的学习词对齐这个点,力争在词对齐上有所突破后再向短语对齐方向努力,进而再结合解码过程中的特点来实现一种新型的短语抽取和解码过程直接相关的翻译系统。这个计划需要好好执行。

接下来的词对齐学习,我想就从Jorg Tiedemann今年5月刚出版的《Bitext Alignment》开始吧。153页的薄册子,希望能在半个月内能看完。给自己加油 :)