[关闭]
@Lucien 2016-09-26T11:27:33.000000Z 字数 9420 阅读 680

互联网机器翻译核心技术


我今天给大家分享的题目是“互联网机器翻译”。

首先,我会介绍一下机器翻译相关的背景。这里面也会包括互联网翻译的一些特色特点,中间会介绍机器翻译的核心技术,包括统计方法,百度在系统开发上的一些实践问题。最后会介绍一下百度翻译的一些产品应用的情况。

首先,从《圣经》中的一个小故事开始,就是通天塔的故事。据说一开始大家都是使用相同的语言,但是上帝为了阻止人们修建能够通往天堂的通天塔,所以就强制的把人们给分散到了世界各地,就让世界各地的人说不同的语言,这个就成为了人们之间的一种障碍,这就阻止了通天塔的修建。
这是在古埃及出土的一块石碑,这个石碑的特殊之处在于,它跟普通石碑不一样的地方在于它上面刻录了多种的文字,上面有古希腊语、古埃及语,还有当地语言。这说明早在2000多年前人们就已经有了翻译的需求。
回到机器翻译这个问题中,我们知道世界上第一台计算机它是诞生在1946年,其实很多人都不知道,我们机器翻译的这个设想,实际上早在1947年的时候,就由美国的一位科学家提出了翻译的设想,我们可不可以用计算机自动的实现不同语言间的翻译?
机器翻译涉及到了计算语言学、认知科学、信息论、语言学综合的一个交叉学科,具有非常高的科学的价值。正因为如此,他也被人们认为是人工智能领域一个的一个终极目标之一。如果实现了这一点,人们可以认为机器已经具备了语言直接互相转换的智能。
人们这样就开始了进行长达几十年的研究,早在1947年的时候提出了一个翻译的备忘录,在70年代的时候提出了基于规则的翻译方法。这个翻译方法实际上是说,我们让很多语言学的专家,他会懂多种语言,我们去编写语言上的分析、转换、生成的规则。基于这些规则我们可以自动实现两种不同语言之间的一个翻译。这种方法的优点在于,它的可控性非常强。如果我们能够定好这个规则,这个翻译的准确率就会非常高。缺点在于,构建这个规则的时间周期非常长,对专家的要求非常高,需要长达几年的时间去写这个规则库,这个规则库多了以后,还会造成冲突。
到了80年代的时候,人们又提出了一个基于实例的翻译方法,我现在有大量的语料库,我通过这个模糊匹配去进行编辑、改写。这个方法的好处是,我一旦命中了之后,它的准确率很高,它的坏处是说,这个命中率通常比较低,覆盖率不够广。
更广泛的是到90年的时候,我们提出了统计的方法。这个方法一直到现在也是机器翻译领域里面非常主要的一个方法,到现在的线上系统也在做这个方法。
我们可以看到,这个统计的方法在2000年左右,互联网兴起的时候,它发展的速度其实越来越快了,它得到了越来越快速的发展。
我们可以看到,互联网的诞生导致网民的数量,十几年的时间里增长到了7亿,网页的数量增长的非常快,经过10年的时间,现在已经到了2000亿这样一个规模。2000亿只是中国的网页,实际上世界上的更多,超过了万亿以上。在这万亿以上的级别中,80%以上的数据实际上不是中文的,这样这里面就会隐藏着大量翻译的需求。
在网上看到了这样一段文字,我们肯定很想知道它是什么意思,除了学习阿拉伯语的人,我们更多的普遍人是看不懂它的意思的,有了这个自动翻译之后,我们就可以非常便捷的知道这个意思是什么。这是一个新闻的描述。
我们要去上网,我们很多人是有一定的语言基础的,比如说英语,英语大家基本上都会。我们看大量的文章实际上在速度上还是有一些慢的,我们看到感兴趣的标题是可以很快的点过去的,这样就可以加快人们的时间(用机器翻译)。在互联网方面,对机器翻译的需求是多种多样的,这里面也有非常丰富应用的场景。
现在中国大概有2亿多的学生,他在学习过程当中,学习英语过程当中,肯定会有很多的查词、写作、阅读翻译的需求。在工作过程当中,我们经常要找国外的资料,找一些程序的网站,经常要看英文。那个时候如果有一个翻译系统进行文档之间的翻译,这就可以加快我们的速度。
另外一个,如果跟外国人进行邮件沟通,或者像Facebook这样的交流,这实际上也是需要翻译的。在电商领域,我们中国也会面临着大量的进口、出口这样的交易。现在还有各种各样的海淘,这个里面也会存在着把商品卖出去,或者是去买国外商品的需求。
另外一个是旅游,在去年的时候,国家旅游局发布的数字,我们出境游的数量人次已经超过了1亿次,我们在异国他乡的时候也会有很强烈的使用翻译的需求。
在互联网的背景下我总结了一下它的特点,互联网翻译的特点。
这个需求是非常丰富的,应用场景非常多,可以满足很多用户各种各样的需求。这些需求,我们可能不一定满足的很好,但是,可以在很大的程度上进行创新,围绕着用户的需求做更深度的满足。
这些需求的特点是多语言、多领域的,它不是中英或者是英中,还要做日韩、欧洲的各种语言。领域方面可能有旅游、电商,不同领域翻译的质量也是不太一样的,需要的数据也不太一样。
另外一个,互联网数据本身来讲会存在着一个比较大的噪声。这里面有一个语量噪声过滤的需求。另外一个,网上会有很多的新词,这种新词是动态发生的,我们就要动态的参加这些词语翻译的能力。
最后,我总结一下,互联网翻译要处理的数据是海量的,处理的网页也是全库的网页,也就是2000亿这个量级的。另外一个,申请的系统,它对用户来讲是海量的翻译请求,也是实时响应的。现在每天的请求已经超过了1亿次,响应时间,绝大多数都可以在100毫秒返回。
前面讲了一下互联网需求的特点,接下来我来介绍一下我们是怎么样去做这件事情的。
我把它分成了4个小部分:
1、看统计翻译的方法
阿基米德曾经说过一句话非常著名的话,如果你给我一个支点的话,我就可以撬动起整个地球。实际上,大家不知道的是,在机器翻译领域,实际上也有人说过类似的话,在机器翻译领域一个著名的科学家Archimedes,他说过,如果你给我足够多的预料,我可以在几个小时之内给你构建起一个语言的翻译系统。只要有足够的数据,这个就可以自动的翻译出各种各样的知识出来。
这个统计翻译的思想是说,Warren Weaver曾经说过一句话,在我看一篇俄文文章的时候,实际上我会认为这篇文章是用英语写的,只不过这篇文章用了很奇怪的方法去编码,这样我就不认识了,这个时候我就需要一个解码的功能,这样我就可以读懂这篇文章了。
这个公式是说,在统计翻译里面基本上可以用这个公式来描述。这里面有一个F,F其实相当于是说句子,E表示目标语言的句子,统计翻译要做的是两件事情,第一件事情是给任意的句子或者是任意一个目标语言的句子要去构建一个概率分布模型,把这个概率找出来,这个对应的是P。第二件事情是说,在这个模型下面要去搜索译文空间,在这个里面把最大概率的译文给找出来。这个公式实际上是描述了统计翻译的思想。
这个思想在下面有一个噪声信道模型,我们可以把这个模型进行一个简单的变换。我们把这个条件、概率进行了反转,反转之后就变成了两项,一项是翻译模型,一项是语言模型。
翻译模型是这样的,我有一个反语的语料库,在这个里面我们可以学习出各种各样的符号片断,这些片断之间分布的概率。有了这样一些短语片断之后,我就可以得到两个任意候选之间互相生成的一个概率。
另外一项就变成了语言模型。语言模型相当于我有大量的单语的语料,有了这个单语的语料之后我要用这个去刻画、学习,生成的句子的译文是不是符合目标学语言的分布,如果符合的话,这个模型的得分就会比较高。
比较通用的理念,也是最关键的是要去做平滑,我们是会做KN平滑的。这些语言模型都是用来描述目标语言的流离度了,有了这两个模型之后再加上一个解码器,有了这个解码器之后,你任意拿一个句子,我可以在解码空间里去搜索所有可能的译文,然后得到一个概率,用这个概率做一个译文输入。通常的翻译系统是会给出一个译文,有一个译文概率的得分,同时也可以给出N个译文。
我们如果想要加更多特征的话,我们可以加入一个对数线性模型,可以把语言模型得分、神经网络语言模型,各种各样的特征我们都可以放到这个对数线性模型里面去。
统计机器翻译的方法,经过了20多年的发展,主要形成了三类方法,是基于短语、词、句法分析的方法。这些方法各有利弊,不同的应用上面有一些优势和劣势。句法翻译的很准,但是需要有一个圆圆的语法分析器。
百度翻译我们也看到了,在用户里面是有这个翻译需求的,于是我们就组建了这个翻译的团队。在11年6月30号的时候,我们正式上线了中英、英中的系统,13年上了层次短语,14年是句法系统,15年是深度学习的系统。我们用非常短的时间在上面解决了大规模数据的训练,高速的解码,还有很多创新的地方。
关于这个系统的细节,接下来何博士会做更深入的介绍,我在这里面就不再展开了。
前面讲的是一些统计方法,我们知道在翻译里面,在统计的方法里面,其实训练语料,其实是整个系统的一个燃料,我们就需要去做一些知识的挖掘。
好在百度有世界上最大的中文网页库,我们现在也推出了英文的搜索,所以它里面也会有一些英文的网页,在这里面有大量的页面。这里面是商务英语学习类的一个网页,那里面就会有大量的中英文互译的句子的资源。
另外一种,这是一个苹果的官方页面,它有中文版还有英文版,这两种不同的版本。基于这两个页面,它实际上有很多的内容其实是互译的,所以我们可以在这里面也挖掘出很多可用的语言信息。
另外一种是更广泛一些的,这不是互译的,这个句子不是互译的,但是我们可以看到一些关键词条是可以互译的,所以在这面也可以找出一些互译的知识出来。(见PPT)
我们会去解析这个页面知道哪一面是正文,知道行和距离的位置,基于这些特征去猜测是不是互译的片断,根据翻译上的基本概率,我们去判断作为双语的一个相似性。基于这些算法就可以得到大量的翻译的可用的知识了。
刚才讲了互联网上一个非常高噪声的东西,也会有很多的东西,比如说好好学习、天天向上,在网上翻译的是Goog goog study,day day up。互联网对机器翻译的需求是非常强的,在网页上会使用大量机器翻译翻译出来的句子,这些句子用在我们的系统里,可能也会造成很多的错误。机器翻译出来的句子,实际上在语言学这一块,它的规律其实做得不是很完美,所以我们可以统计一些特征,把这些句子给区分出来。
前面讲的是怎么样在互联网当中挖掘出大量的双语资源,有了这些资源之后怎么来搭建这样一个系统?构建这个系统最关键的一步是,一开始需要做一下词对齐,前面挖出来的网页实际上是没有对齐的关系的,我们只知道这两个句子是互译的,但是词是不知道的。我们是需要解决句子内部词和词之间对应的关系。这在原来统计翻译条件概率的模型基础上我们又增加了一个基于词对齐的隐含的一个变量。
基于这个我们一开始可以给一个初始的概率分布,我们通过翻译概率,我们能够计算出来对齐的概率分布。基于这个对齐我们又可以去迭代的得到翻译的概率。实际上反复迭代更新之后,我们可以用EM切换最大化的算法,拿到它比较可靠的对齐概率。像这个图里面,这条线画的这条边,我们可以知道不同词之间是可以互译的。
做到这一点之后,这些知识就更加有用了,比如说这个(见PPT),这个有了一个对齐的关系,中文和英文哪些词是对应的,哪些词是有关系的,这样就可以抽取互译的片断和可译的单元。
下面这个表里面,下面这个很短的小句子就可以抽出下面这个表里面用来翻译的片断,用这些片断我们就可以进行翻译系统的翻译了。
这个是用户输入的句子,一个中文的句子之后我们可以给它进行分词,分词完之后我们进行一个短语片断的切分,然后就用刚才互译的小片断,这样就可以把译文给出来,给出来之后还可以进行一下全排列,或者是根据解码器的搜索空间进行搜索,把这些可能的侯选都给出来。这样我们就可以组合得到一个概率最大的对应的译文。
前面那个问题还有一个关键的问题没有说,因为搜索空间是指数级的,指数级的话你的机器是会很快爆掉的。这里面我们用了一个解码算法,我们会把搜索空间给组织起来,怎么样去组织?我们可以把相同的翻译侯选,相同的路径给合并起来,放到一个对站里面。这个对站的长度是100,我在这里面最多放100个侯选,然后我再往后扩展,这样就可以把指数级的搜索空间变成多项级的搜索空间,这样就变成了一个可计算的。坏处是,搜索是不完备的,只能够搜索整个庞大空间里的一个柱型的空间,所以它叫Seam Search。如果要做更系统的做法的话,这个还可以去做Cube Growing的算法,这样是可以有10倍以上的提升。
前面说的是整个系统,我稍微总结一下,我们如果要做一个统计翻译的系统,实际上这里面包含了这么一些东西,要有双语、单语的资源,还有词对齐、调序、训练、索引,然后得到语言模型,还要增加一个解码器,还有一个参数优化的模块,这样就可以调出最好的那一组参数,有了这个参数我们就可以获取到最高质量的译文。
前面是把构建这个统计系统需要的一些工作做了一些总结和介绍。在互联网这种背景下,它实际上有一些它自己特有的需要解决的一些问题。
针对互联网的需求,它的范围非常广,实际上我们也用了一个多策略的翻译引擎。在这里面主要的还是基于统计的翻译模型,我们会结合深度学习的模型。针对术词、专名,我们也可以动态的去识别,像一些比较固定的表达,我们也有相应的方法去覆盖,这样就可以形成一个比较完备的线上的翻译系统,在各个方面也可以得到一个比较好的翻译效果。
另外一个,在翻译这个过程当中,它的领域是非常多的。我们在一个通用模型的基础上,我们可以做到一个领域的自适应,这样每个特定领域的应用,通常都会拿到比原来通用系统翻译出的一个更好的效果。比如说针对新闻,我们也可以用一些语料去调查,针对口语也可以用一些语料去优化。这样就可以拿到多个领域的模型。
在我们前面讲的翻译系统的构建的时候,实际上是说,互联网基本上是一个大数据的模型,我们现在要处理的这种模型的离线训练,包括词对齐,还有翻译模型的训练,都是基于一个分布式的计算平台,在这里面我们也用了HPC、Hadoop在线的平台,在线解码也用了快速剪枝、并行解码的技术,我们还使用了GPU的集群,这样就可以提升训练和响应的速度。
前面是把这个数据往大的做,这个模型的数据大到T级的话,这个翻译质量还会提升。另外一个,在一些应用场景下面还要往小了做。比如说在手机上,手机上是面临着存储资源的有限,它的SD卡,可用的内存也是比较少的,整个手机的计算也是比较小的。线上的计算肯定是不可以在上面跑的。这样我们也有一些定制化的策略,比如说包括一些词条的裁减。我们可以用一些同义词去替换,另外我们的模型也会做一些压缩。这个模型就会变得很小。
另外,我们可以根据要用的侯选,每次用户在手机上输入其实是挺费劲的,一次就输入一个句子,我们可以把只跟这个句子相关的片断动态载入。这样就可以做到离线模型用的内存仅有30M。
这个是在百度翻译的APP里面的,在没有网络的情况下,比如说在国外的话,通常的资费也比较贵,网络情况也不是很好,我们只需要下载这个包的话就可以在手机上跑这个系统。一个很小的手机设备就具备了一个非常高质量的翻译能力。
在做翻译系统的过程当中,除了刚才讲的中英是非常丰富的语言之外,实际上也有一些很小的语言,我们的语言实际上是非常多的,在这里面会有很多的翻译方向,实际上预料是比较少的。比如说要做一个中文到西班牙语的翻译系统。如果预料比较少,只有几十万,或者是100万,更少级别的时候,实际上是说,这个模型是不太完备的,翻译效果也不会很好,这个时候怎么办?我们也用了一个枢轴语言的技术。这种语言技术我们是去找这两种语言中间的一个桥梁,比如说我们选英文作为它中间的桥梁,中到英的双语语料是比较多的,有了这个模型之后,我们可以在这两个模型级别上进行推导,可以推导得到一个中文到西班牙语的一个翻译模型。有了这两个模型我们还可以进一步的结合起来,做一个更深入的融合。融合之后,这个译文的质量就会比原来只用很小的语料拿到的系统高很多。
下面是比较小的一个例子,我刚才讲的比较抽象。我们看这个例子,我们做中文到西班牙的翻译,我们可以看到非常好吃对应的英文译文,实际上是有两种翻译方式的。Delicioso是可以对应到西班牙语里,这就是一个标准语言枢轴语言的推导,基于这个我们还可以做很多。
我们看很可口这个词,这个也是跟非常好吃的意思是非常像的,而且对应的英文的译文都是相同的,我们这样就可以把很可口跟西班牙语对应起来,这样就可以得到更多的翻译侯选,这样我们的整个模型就会更加的丰富。
基于这样一些策略,百度目前已经支持了线上的27种语言,还有702个翻译方向,包括中英日韩、泰语,这是中国人用的非常多的语言,还有大量欧洲语言的翻译,还有文言文、粤语这样一些有特色的翻译。
前面是关于技术部分的,我大概就讲到这里。下面结合百度的一些产品实践,看看这些技术、能力,可以输出到什么样的产品里面。这些肯定不一定够,大家还要一起努力地去做。
目前我们已经形成了一个比较丰富,或者是比较完备的产品形态,包括PC端的产品,还有移动端的产品,就是百度翻译的APP,还有API的翻译,这包含了27种语言,最好的线上的效果,能够实时的访问。另外,稳定性也非常的高。
这个是PC端文本翻译的例子,这个是百度的首页,我们输入一个文本点击之后就可以拿到一个译文。另外一个是网页的翻译,在这里面可以输入一个域名,输入一个英文的网站,它可以自动的识别语言,给出中文的翻译,这样方便我们浏览。如果不想输域名的话,我们也可以用一个更好的方式,安装一个百度的插件,你访问英文国外网站的时候,它就可以自动的给你翻译出来。
刚才讲的是百度翻译的APP,其中也会包含英文会话、图像、摄像头的翻译、离线翻译这样一些特色的功能。
会话翻译相当于是这个界面里面直接按下面两个语音识别的按钮,直接从语音输入转化成文本,文本再做翻译。在技术说来看,这个流程是这样的,我们已经打通了语音识别、语音合成、翻译的过程。这些能力实际上都是对外开放的。基于这些能力,我们可以做到用户语音到语音之间自动翻译的功能。
图像这样的场景,在图像翻译里,就相当于是我们在旅游,我们在国外看路牌、买东西、点餐,其实像点餐这样的问题还是挺常见的,特别是一些欧洲的国家,他的菜单是缺少多语言知识的,这时候这种图像的翻译就会比较有用。
这个是我们三种使用的一个形态,第一种是说,我们可以图文翻译,我拍一张照片,我告诉他哪一些东西是需要翻译的,我用手指涂抹一下,这时候就可以给出译文。
第二种、我拍一下整屏的图片、菜单,这时候这个菜单就会自动的识别哪些是文本,哪些不是文本,识别之后,我们自动的给这些文本翻译出译文。
第三种、用这个摄像头的框对准了我们想要翻译的文字,它就可以自动的弹出译文,还有一些丰富的释意。
另外一种,我们不止是做词到词的翻译,而且我们还可以做图像到文字的翻译。你给一个图像,它能够自动识别出来,比如说看到这个照片,要让它知道这是一个芒果,我们就要同时给出一个芒果和它的译文。
产品形式是对外开放的API。这种API可以非常快速、方便的获得百度高质量翻译的能力。
这个API使用起来也非常的简单。假如说我们要翻译Apple这样一个词,我们在平台上申请了一个APP的ID,还有一个设置的密码,我们要翻译这个东西只需要经过几个很简单的过程就可以了,计算一下它的拼接字符串,把它密钥带进去,然后有一个请求,然后就可以拿到翻译结果。用一个非常少的代码就可以获取到整个翻译平台的能力。
一些比较典型的合作使用的场景,比如说在华为手机里也有摄像头翻译的能力,这个是文本的,你选定了一段文字之后,它会弹出一个翻译的框,这个时候就有一个翻译的接口。三星的Note-7里面也有同样的功能,你用笔翻译了文本之后,可以通过API给用户带来一个更好的线上翻译的结果。
除了移动手机、机构、电商、酒店、旅游相关的一些网站,还有像一些工具软件,目前我们这个APP还有一些政府机构的支持,目前已经支持了20000多家第三方的应用。

大家可以利用这种翻译的能力,也可以想象出更多的可能应用的场景,然后去帮助到我们的用户。我的报告到这里就结束了,谢谢大家的聆听。

提问:谢谢胡老师今天精彩的分享。我刚才听完之后我有一个问题,基于多策略融合,现在百度有基于实例、规则、短语的,你说文言文翻译是在实例上的,现在目前主要的流量是分布在短语系统和深度学习系统里的。我想问一下这个流量你是怎么分配的?哪一些在深度学习里,哪一些在短语系统上?

胡晓光:这个流量绝大部分会优先给到深度学习的系统,这个系统的翻译质量是最高、也是最好的,但是这里有一个问题,就是比较耗资源。大量的来自于网页的翻译,网页翻译的特点是说,目前的请求数量不是很多,它每天有几十万的请求,或者是百万的量级,不是像普通翻译一样,是亿这样的量级。这种流量的关键问题是什么?一个页面里面要翻译的东西特别多,这时候就会用短语的系统去覆盖,这样处理的就会比较好一些。

刚才讲的规则还有实例的方法,实际上是融合在短语系统里的,是一个共同起作用的效果。如果拿来一个句子,实例覆盖不了,规则覆盖不了的时候,我们会用短语系统,如果能够覆盖的话就会优先展现出来。

提问:你好!我想问一下你刚才提到的关于枢轴语言的问题,我们知道现在中转英的翻译不是很完美,可能会有一些损失,你再用英转到西班牙语的一些方法,就会把之前的错误给放大。你们有没有尝试过,选什么样的枢轴语言的效果会更好一些?学术界可能会做的一些逻辑表达式的一个中间的语言,从这种中间的语言再去翻译到实际人们用到的语言的一种尝试?

胡晓光:关于这位同学的问题,我这边是这样的,这个枢轴语言我们现在目前主要还是集中在用英文去做枢轴语言,因为英语的资源是比较多的,它确实会有一些损失,为了避免这些损失,我们也会做一些推导,如果确实有损失,我们实际上也可以把这种损失降的比较低,把噪声给去掉。
中间语言这种,我们还没有去做过这样的事情,当然,在学术上也是一个比较有研究意义的。

提问:我想知道百度在做SMT模型的时候用了什么样的特征?

胡晓光:我们在里面用到了这种主流的常用的翻译,比如说正向翻译、调序,大概有几十种。其实我们也研究过更多的特征,包括用一些副特征的方法,就是说我把这种很稠密的特征做成很稀疏的,这种我们也做过,这个方法有一个问题是在于,在开发结算上会做得很好,但是在实际的测试当中,这个效果就没有原来那么好了。这是我们使用特征的一些情况。

提问:胡老师,您好!我想问一个问题,目前的百度翻译除了有多语种翻译之外,还有多领域翻译,从网上看到的双语语料,绝大多数都是新闻类的,但是工业类、领域类的语料相对稀少,对于语料相对稀少的情况,百度翻译是如何解决的?

胡晓光:我们为什么要做多领域?是在于我们整个通用的模型,虽然语料很多,但是特定的语料比较少,比如说要做论文的翻译,或者是百度学术这种科技文章的翻译,这个时候我们要拿到很大量的语料,去构建一个系统,某些领域可能是可能的,但是在某一些领域是不太可能的。这样就可以用比较小的一部分语料去调优一下它的参数,各种模型也可以融合起来。比如说神经网络这样的系统,这样的系统其实可以在一个非常通用的方法基础上往后加很小的语料,因为它比较小,我们也可以上一些比较精密的方法。在接下来何中军博士也会有一些介绍。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注