然而,上面提到的场景往往有一个共同点,那就是被翻译的文本往往是不规范的。无论是聊天时手误导致的错别字,还是视频语音原文识别的错误,都会极大地影响译文质量。因此,实际应用场景下的机器翻译对翻译模型的鲁棒性有很高的要求。
今天就为大家介绍一篇由字节跳动人工智能实验室火山翻译团队发表在 EMNLP 2021 Findings 的短文 - Secoco: Self-Correcting Encoding for Neural Machine Translation。这篇论文让翻译模型在学习翻译任务的同时,学习如何对输入的带噪文本进行纠错,从而改善翻译质量。
神经机器翻译在近些年取得了很大进展,但是大部分工作都是基于干净的数据集。在现实生活中,神经机器翻译系统面对的输入往往都是包含噪声的,这对翻译模型的鲁棒性提出了很大挑战。
之前的翻译鲁棒性工作主要分为三类:
第一类是针对模型生成对抗样例,这些生成的对抗样例被用于一起重新训练模型。
第二类是针对训练数据,通过过滤训练数据中的噪声来提升模型质量。
第三类则是专注于处理输入中包含的天然噪声,他们使用规则,回翻等方法来合成噪声,并混合到原始数据中一起训练。
可以看到,大部分的工作都专注于如何生成噪声,很少探究如何进一步使用它们;本文则想要通过建模从噪声数据到干净数据的修正过程,从而增强模型的鲁棒性。
作者针对神经机器翻译提出了具有鲁棒性的自修正框架Secoco (Self-correcting Encoding)。
图2 整体模型架构
虽然这种迭代编辑的过程每一步都需要前面的操作,但是为了简化训练过程,插入预测器和删除预测器都是相互独立的,并与普通的翻译任务同时进行训练。
一个关键的问题是如何生成这些训练数据?关键点在于获取从带噪数据转化为干净数据的编辑操作。作者提供了两种方式。一种是针对有带噪数据和对应干净 reference 数据的情况,一种是没有带噪数据的情况。
对于有reference的数据,可以使用类似计算最短编辑距离的方法,获取从带噪数据转化为干净数据的最短编辑过程,然后将替换操作转化为删除-插入操作。
对于没有reference的数据,可以使用基于规则的方法生成伪数据。针对不同的场景,可以设计对应的规则,然后从干净的数据中生成带噪数据,最后反向这个过程就可以得到编辑过程。
训练完成后,便可以进行解码。正如图2右侧展示的,Secoco 有两种解码方式。第一种是仅使用编码器-解码器结构直接进行翻译 (Secoco-E2E),另一种则是对输入进行迭代编辑后再进行翻译 (Secoco-Edit)。
作者在三个测试集进行了实验,包括一个基于电视剧的中英对话测试集,一个内部的中英语音翻译测试集,以及加入人工噪声的英德WMT14测试集。
表1 测试集统计
如表1所示,对话测试集包含主语省略,标点省略,错别字等问题;语音测试集包含口语词,错别字等 ASR 引起的问题;WMT14 则包含由规则构造的随机插入,随机删除,重复等问题。
实验结果如表2所示。除了 Secoco 之外,作者还和3种方法进行了对比,分别是将合成的噪声数据加入原始数据中一起训练 (BASE+synthetic);使用修复模型加上翻译模型的 pipeline 级联结构 (REPAIR);以及多编码器-单解码器的结构 [1] (RECONSTRUCTION)。可以看出,所有的方法相较于基线模型都有所提升。Secoco 在三个测试集上都获得了最好的效果。
表2 实验结果
此外,在这三个测试集中,对话测试集明显包含更多的噪声,Secoco 最多可以带来3个 BLEU 的提升。语音测试集由于是由 ASR 导出的,因此最好的结果也仅有12.4。
表3 迭代编辑样例
表格3中给出了一些迭代编辑的具体例子。针对每一句输入,模型对其进行迭代删除和插入操作,直到文本不再发生变化。从例子中可以看到,一次编辑操作可以同时删除或者插入多个词。此外,对于上述的测试集,平均每个句子需要2-3次编辑操作。
针对互联网中非规范输入带来的鲁棒性问题,本文主要介绍了一个具有自我修正能力的神经机器翻译框架 Secoco,该框架通过两个独立的编辑操作预测器建模修正带噪输入的过程。实验表明,Secoco 在多个测试集上都优于基线模型,增强了翻译模型的鲁棒性,并提供了一定的可解释性。
雷峰网(公众号:雷峰网)