把酒话桑麻,再泡一壶茶,白头老机译,闲坐说研发,说一点儿机器翻译的掌故吧。曾几何时,机器翻译处于手工业研发时期,每个语言对(language pair)要手工开发两套系统,A 到 B 一套,B 到 A 一套,语言对一多就有一个类似系统数组合爆炸的问题。于是,怎样实现多套语言之间的相互翻译成为机器翻译领域的经典话题之一。各种探索和方案都有提出,主要有两类:一类是所谓基于媒介语的设计思想;另一类是合一文法(unification grammar,又叫 constraint-based grammar)支持的方案。第一种方案很动听,因为如果有一种比较中性可以表达意义的媒介语,那么每个语言只要编制两套针对媒介语的互译系统,就可以实现通过媒介语而成的任意语言对的翻译。这幅图画是如此美妙,为老一辈机器翻译宣传家门所津津乐道。由此而来又引发了媒介语设计和选择的种种争论和探索,有主张全新设计一套基于逻辑的形式语言(日本曾经联合亚洲其他国家实施过这个方案),有主张利用或者改造世界语(Esperanto,立委出道当年也曾著文鼓吹过世界语作为媒介语,荷兰一家公司BSO也曾尝试过),还有研究者坚持认为只有采用自然语言(譬如英语,或者简化版英语)做媒介语才现实可行。第二类合一文法的研究在理论上也很诱人,它的兴起伴随着新型计算机语言 Prolog 问世:合一运算是 Prolog 语言的内置特性。所谓合一文法,就是排除蕴含在传统计算文法(computational grammar)里面的语言分析和生成的过程性,在合一文法的旗下出现过一系列以后缀G(gammar)命名的形式化系统方案(formalisms),如 GPSG,HPSG(立委的博士课题就是在HPSG这个框架下做的机器翻译实验)等。因为语言规则不再具有单向性,那么分析文法和生成文法就可以是同一套语法,由这套文法支持的系统是做分析还是做生成,是在文法资源被调用的时候才得以确定。理论上,A 语言翻译为 B 语言,与 B 语言翻译为 A 语言,在语言资源上归一以后,开发系统的工程就节省了一半,对于多语互译的效率虽然不如媒介语方案高,省工一半也还是非常诱人的。长话短说,这两类方案都是传统的基于规则的系统,虽然都做过相当程度的研究探索,但最终由于局限于手工规则系统难以 scale up 而没成大气候,最终修成正果的还是后起的统计型机器翻译(statistical MT)。多语翻译的问题因此转化为海量双语对照语库的资源问题。同一个架构和算法,原则上只需要同一个双语对照语库对互译的两个方向训练两次即可生成两套机译系统。
昨天晚上心血来潮,突然想到我的 NLP “超级科普”,应该也用英语写出来。可是一想到要一句一句重新来过,就发怵,打退堂鼓。又一想,better sth. than nothing,何不就用 Google 汉英机器翻译打个底子,然后顺一顺不就成了?这样做法当然不如自己重写或者自己完全手工翻译来得顺溜(flow),但省下时间 to kill kill 也还是值得的。