如何用技术搞好英俄翻译?

本文涉及的产品
文本翻译,文本翻译 100万字符
文档翻译,文档翻译 1千页
语种识别,语种识别 100万字符
简介:

神经网络翻译模型受限于其可以使用的词表大小,经常会遇到词表无法覆盖源端和目标端单词的情况,特别是当处理形态丰富的语言(例如俄语、西班牙语等)的时候,词表对全部语料的覆盖度往往不够,这就导致很多“未登录词”的产生,严重影响翻译质量。

已有的工作主要关注在如何调整翻译粒度以及扩展词表大小两个维度上,这些工作可以减少“未登录词”的产生,但是语言本身的形态问题并没有被真正研究和专门解决过。

我们的工作提出了一种创新的方法,不仅能够通过控制翻译粒度来减少数据稀疏,进而减少“未登录词”,还可以通过一个有效的词尾预测机制,大大降低目标端俄语译文的形态错误,提高英俄翻译质量。通过和多个比较有影响力的已有工作(基于subword和character的方法)对比,在5000万量级的超大规模的数据集上,我们的方法可以成功地在基于RNN和Transformer两种主流的神经网络翻译模型上得到稳定的提升。

研究背景

近年来,神经网络机器翻译(Neural Machine Translation, NMT)在很多语种和场景上表现出了明显优于统计机器翻译(Statistic Machine Translation, SMT)的效果。神经网络机器翻译将源语言句子编码(encode)到一个隐状态(hidden state),再从这个隐状态开始解码(decode),逐个生成目标语言的译文词。NMT系统会在目标端设置一个固定大小的词表,解码阶段的每一步中,会从这个固定大小的词表中预测产生一个词,作为当前步骤的译文词。受限于计算机的硬件资源限制,这个词表往往不会设的很大(一般是3万-5万)。

并且随着词表的增大,预测的难度也会相应地增加。基于词(word)的NMT系统经常会遭遇“未登录词”(Out of vocabulary, OOV)的问题,特别是目标端是一个形态丰富(Morphologically Rich)的语言时,这个问题会更加严重。以“英-俄”翻译为例,俄语是一种形态非常丰富的语言,一个3-5万的词表往往不能覆盖俄语端的所有词,会有很多OOV产生。OOV的出现对翻译质量的影响是比较大的。

针对这个问题,有很多方法尝试解决。其中一些方法会从翻译粒度的角度出发(translation granularity),另外还有一些方法尝试有效地扩展目标端词表大小。这些方法虽然能有效地减少OOV,但是这些方法并没有对目标端语言的形态(morphology)进行专门的建模。

对于俄语这种形态丰富的语言,词干(stem)的个数会比词的个数少很多,因此很自然的,我们会想到要对词干和词尾(suffix)分别进行建模。我们设计实现了一种方法,在解码时每一个解码步骤(decoding step)中,分别预测词干和词尾。训练阶段,目标语言端会使用两个序列,分别是词干序列和词尾序列。词干序列和词尾序列的生成过程如下图所示:

76224222a5edc4ac06ac292737b1acff4f5034cf

(词干序列和词尾序列的生成,“N”表示词干和词本身相同,即这个词没有词尾)

通过这种方式,数据稀疏问题会得到缓解,因为词干的种类会显著小于词的种类,而词尾的种类只有几百种。

相关工作

基于子词(subword)的和基于字符(character)的这两种方法,从调整翻译粒度的角度出发来帮助缓解目标端形态丰富语言的翻译问题。一种基于子词的方法利用BPE(Byte Pari Encoding)算法来生成一个词汇表。语料中经常出现的词会被保留在词汇表中,其他的不太常见的词则会被拆分成一些子词。由于少数量的子词就可以拼成全部不常见的词,因此NMT的词表中只保留常见词和这些子词就可以了。

还有一种基于字符的NMT系统,源端句子和目标端句子都会表示为字符的序列,这种系统对源端形态丰富的语言可以处理得比较好,并且通过在源端引入卷积神经网络(convolutional neural network, CNN),远距离的依赖也可以被建模。上述两种方式虽然可以缓解数据稀疏,但是并没有专门对语言的形态进行建模,子词和字符并不是一个完整的语言学单元(unit)。

还有一些研究工作是从如何有效地扩大目标端词汇表出发的,例如在目标端设置一个很大的词汇表,但是每次训练的过程中,只在一个子表上进行预测,这个子表中包含了所有可能出现的译文词。这种方法虽然可以解决未登录词的问题,但是数据稀疏问题仍然存在,因为低频的词是未被充分训练的。

神经网络机器翻译

本文在两种主要的神经网络翻译系统上验证了“基于词尾预测”的方法的有效性,分别是基于递归神经网络的机器翻译(Recurrent Neural Network Based, RNN-based)和谷歌在17年提出的最新的神经网络翻译模型(Transformer),详细介绍可以查看相应论文。RNN-based神经网络机器翻译如下图:

6e929e3336e3f3c9af1ff95797b25adf910763b5

(“NeuralMachine Translation by Jointly Learning to Align and Translate”, Bahdanau etal., 2015)

Transformer的结构如下图:

bb7cc6ca6c7495b9b4f796da44eddbdf21e06fa6

(“AttentionIs All You Need”, Ashish Vaswani et al., 2017)

俄语的词干和词尾

俄语是一种形态丰富的语言,单复数(number)、格(case)、阴阳性(gender)都会影响词的形态。以名词“ball”为例,“ball”是一个中性词,因此不会随阴阳性的变化而变化,但当单复数、格变化时,会产生如下多种形态:

383d072d72c960de324f96450304f38a0e2c431a

一个俄语词可以分为两部分,即词干和词尾,词尾的变化是俄语形态变化的体现,词尾可以体现俄语的单复数、格、阴阳性等信息。利用一个基于规则的俄语词干获取工具,可以得到一个俄语句子中每一个词的词干和词尾。

词尾预测网络

在NMT的解码阶段,每一个解码步骤分别预测词干和词尾。词干的生成和NMT原有的网络结构一致。额外的,利用当前step生成的词干、当前decoder端的hidden state和源端的source context信息,通过一个前馈神经网络(Feedforwardneural network)生成当前step的词尾。网络结构如下图:

781f7229f9c9c3a0598031b49c3f91f7aa692d4f

最后,将生成的词干和词尾拼接在一起,就是当前step的译文单词。

实验

我们在RNN和Transformer上都进行了实验,在WMT-2017英俄新闻翻译任务的部分训练语料(约530万)上,效果如下图:

1a675ac912b902263f4670b8c514ffc643c44c5e

其中,Subword是使用基于子词方法作为baseline,Fully Character-based是使用基于字符的NMT系统作为baseline。“SuffixPrediction”是我们的系统。

另外,我们还在电子商务领域的数据上,使用超大规模的语料(5000万),证明了该方法的有效性,实验结果如图:

d12e00cdc07b3fc639778c1e1dfd85cd97f0b7dd

测试集包括商品的标题(Title)、详情(Description)和用户评论(Comment)内容,示例如下:

5ca3ac259a0a70dbe8f036b230d9cfe4f3cdc6e6

一些翻译结果的例子:

ba08f30d66be8d07350bae8ea987d5f588b51b1e

第一个例子中,标号为1和2的俄语词的形态代表着这个词是一个反身动词(reflexive verb),反身动词的直接宾语和主语是同一个事物,换句话说,反身动词的施事者和受事者是同一个事物。从源端句子中可以看出,“return”的施事者是购买商品的人,受事者是某个要退还的商品,因此1和2的译文词是错误的。3的译文词是正确的,它的词尾代表着它是一个不定式动词(infinitive verb),这个不定式动词是可以有宾语的。在第二个例子中,标号1和2代表复数形式,4代表单数。第三个例子中,3代表过去时,1和2代表现在时。上面的例子中,相比于基于子词和基于字符的模型,我们的模型可以产生更正确的俄语形态。

总结

我们提出了一种简单、有效的方法来提高目标端是形态丰富语言(例如“英-俄”)的NMT系统的翻译质量。在解码阶段的每一个步骤中,首先生成词干,然后生成词尾。我们在两种NMT模型(RNN-based NMT和Transformer)上,和基于子词(subword)和字符(character)的方法进行了对比,证明了方法的有效性。我们使用了大规模(530万)和超大规模(5000万)的语料,在新闻和电子商务两个领域上进一步这种方法可以带来稳定的提升。在我们的工作中,词尾在NMT中首次被专门地建模。


原文发布时间为:2018-05-11

本文作者:阿里巴巴翻译平台

本文来自云栖社区合作伙伴“阿里技术”,了解相关信息可以关注“阿里技术”。

相关文章
|
4月前
|
人工智能 自然语言处理 供应链
面向企业的 ChatGPT 究极手册:第一章到第二章
面向企业的 ChatGPT 究极手册:第一章到第二章
146 0
面向企业的 ChatGPT 究极手册:第一章到第二章
|
30天前
|
人工智能 自然语言处理 前端开发
还不懂如何与chatGPT高效交流?保姆级且全面的chatGPT提示词工程教程来啦!(二)进阶篇
这篇文章是chatGPT提示词工程的进阶教程,涵盖了加入鼓励词/行为词、拆分复杂需求、纠正反馈、使用英语提问、角色扮演、限定回答格式、多符咒结合以及参考其他人的提示词和使用提示词插件等技巧。
还不懂如何与chatGPT高效交流?保姆级且全面的chatGPT提示词工程教程来啦!(二)进阶篇
|
4月前
|
存储 人工智能 安全
面向企业的 ChatGPT 究极手册:第七章到第八章
面向企业的 ChatGPT 究极手册:第七章到第八章
135 0
面向企业的 ChatGPT 究极手册:第七章到第八章
|
4月前
|
机器学习/深度学习 人工智能 安全
面向企业的 ChatGPT 究极手册:第九章到附录 A
面向企业的 ChatGPT 究极手册:第九章到附录 A
103 0
|
11月前
|
人工智能 前端开发 API
手把手带你用Python和文心一言搭建《AI看图写诗》网页项目
手把手带你用Python和文心一言搭建《AI看图写诗》网页项目
384 1
手把手带你用Python和文心一言搭建《AI看图写诗》网页项目
|
4月前
奇淫技巧系列第三篇:阅读源码时基于一组快捷键让我们知道身在何方!
奇淫技巧系列第三篇:阅读源码时基于一组快捷键让我们知道身在何方!
|
4月前
|
算法 芯片
嵌入式工程师如何快速的阅读datasheet的方法
嵌入式工程师如何快速的阅读datasheet的方法
126 0
|
人工智能 JavaScript API
AI 加成?翻译贼 6?deepl 踩坑记
昨儿个老板突然让把某官网文档翻译成英文,文档是 markdown 写的,好像有上百篇吧,人工翻译是不可能了,所以找到了 deepl 的 API,打算让我脚本快速翻一下。所以就成功让我水出了本篇。
|
人工智能 自然语言处理 程序员
编程不头秃,Google「AI程序员」来了,聊天就能敲代码
编程不头秃,Google「AI程序员」来了,聊天就能敲代码
141 0
|
编解码 iOS开发
一节微课诞生的全过程(无保留分享,望收藏)
本来是想以直播的方式把制作这节微课的过程分享出来,但考虑到大家的时间不统一,制作过程太长,这节微课录音之后制作动画就足足用了两天
180 0