Neural machine translation of rare words with subword units
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!

Abstract
神经机器翻译(NMT)模型通常使用固定的词汇,但翻译是一个开放的词汇问题。以前的工作是通过使用字典来翻译词汇表外的单词。在本文中,我们介绍了一种更简单有效的方法,通过将稀有且未知的单词编码为子单词单元序列,使NMT模型能够进行开放词汇翻译。这是基于这样一种直觉,即各种单词类别都可以通过比单词更小的单位进行翻译,例如名称(通过字符复制或音译)、复合词(通过合成翻译)、同源词和外来词(通过语音和模态转换)。我们讨论了不同分词技术的适用性,包括简单的字符n-gram模型和基于字节对(byte pair encoding)编码压缩算法的分词,并根据经验表明,对于WMT 15翻译任务英语→德语和英语→俄语,子词模型分别比回退字典基线提高了1.1和1.3 BLEU。
1 Introduction
2 Neural Machine Translation
3 Subword Translation
3.1 Related Work
3.2 Byte Pair Encoding (BPE)
字节对编码(BPE)(Gage, 1994)是一种简单的数据压缩技术,它用一个单独未使用的字节迭代替换序列中最频繁的字节对。我们将该算法应用于分词。我们不合并频繁的字节对,而是合并字符或字符序列。
首先,我们用字符词汇初始化符号词汇,并将每个单词表示为一个字符序列,再加上一个特殊的词尾符号"·",这使我们能够在翻译后恢复原始的标记化。我们迭代地计算所有符号对,并用新的符号"AB"替换最频繁的对("A", "B")的每次出现。每个合并操作都会产生一个新的符号,表示一个字符n-gram。频繁字符n-gram(或整个单词)最终被合并为一个符号,因此BPE不需要短名单。最终的符号词汇表大小等于初始词汇表的大小,加上合并操作的数量——后者是算法的唯一超参数。
为了提高效率,我们不考虑跨越单词边界的对。因此,该算法可以在从文本中提取的词典上运行,每个单词都根据其频率进行加权。算法1中显示了一个最小的Python实现。在实践中,我们通过索引所有对和增量更新数据结构来提高效率。
与其他压缩算法(如霍夫曼编码)的主要区别在于,我们的符号序列仍然可以解释为子单词单元(subword units),并且网络可以基于这些子单词单元进行泛化,以翻译和产生新单词(在训练时看不见)。
图1显示了一个学到BPE操作的简单示例。在测试时,我们首先将单词拆分为字符序列,然后应用所学的操作将字符合并为更大的已知符号。这适用于任何单词,并允许具有固定符号词汇的开放词汇网络。3 在我们的示例中,OOV "lower"将被分割为"low er·"。
我们评估了两种应用BPE的方法:学习两种独立的编码,一种用于源,另一种用于目标词汇,或者学习在两个词汇的并集上的编码(我们称之为联合BPE)。4 前者的优点是在文本和词汇大小方面更紧凑,并且更有力地保证在各自语言的训练文本中看到每个子单词单元,而后者提高了源和目标分割之间的一致性。如果我们独立应用BPE,同一个名字在两种语言中可能会被不同地分割,这使得神经模型更难学习子单词单元之间的映射。为了提高英语和俄语分段之间的一致性,尽管字母不同,但我们使用ISO-9将俄语词汇音译为拉丁字符,以学习联合BPE编码,然后将BPE合并操作音译回西里尔文,将其应用于俄语训练文本。5
3 在测试时唯一未知的符号是未知字符,或者训练文本中所有出现的符号都已合并为更大的符号,如"safeguar",它将我们训练文本中的所有出现合并为"safeguard"。我们在测试时没有观察到这样的符号,但通过递归地反转特定的合并,直到所有符号都已知,这个问题可以很容易地解决。
4 在实践中,我们只需将训练集的源端和目标端连接起来,即可学习联合BPE。
5 由于俄语训练文本中也包含使用拉丁字母的单词,我们也应用了拉丁BPE操作。


4 Evaluation
4.1 Subword statistics
4.2 Translation experiments
5 Analysis
5.1 Unigram accuracy
5.2 Manual Analysis
6 Conclusion