Neural Machine Translation of Rare Words with Subword Units
1 Introduction
问题:
实际翻译场景中,对于稀有词的翻译有困难,因为神经网络中的词表的单词是有限制的,而实际翻译的开放词汇问题。
之前的工作:
词级NMT模型:词汇表外单词的翻译可以通过回退到字典查找来。
但是,这种技术所做的假设在实践中往往不成立。例如,由于语言之间形态合成程度的差异,源词和目标词之间并不总是一一对应。此外,词级模型无法翻译或生成看不见的单词。将未知单词复制到目标文本中,是一个合理的策略的名称,但形态变化和音译是通常是必需的,尤其是字母不同的时候。
本文贡献:
作者研究了在子词单元水平上运行的NMT模型。
结果: 除了使翻译过程更简单之外,我们还发现子词模型在翻译稀有单词时比大词汇量模型和退字典实现了更好的准确性,并且能够有效地生成训练时没有看到的新词。我们的分析表明,神经网络能够从子词表示中学习复合和音译。
贡献: 在NMT网络本身中建模开放词汇翻译,而不需要对罕见词进行后退模型;采用BPE分词。
2 NMT
编码器-解码器网络:
编码器 是带有门控循环单元的双向神经网络,读取输入序列(1,…, m),并计算隐藏状态的前向序列、和一个反向序列,将隐藏状态进行拼接,得到注释向量。
解码器 是一个预测目标序列循环神经网络,单词是基于循环隐藏状态si、之前预测的单词yi和上下文向量ci预测的。
3 子词翻译方法:BPE
类别:命名实体、同源词和外来词、形态复杂的词
假设:将罕见词分割成适当的子词单元,足以让神经翻译网络学习透明的翻译,并将这些知识推广到翻译和生成看不清的单词,
字节对编码(BPE)是一种简单的数据压缩技术,它迭代地用单个未使用的字节替换序列中最频繁的字节对。作者将该算法应用于分词,合并字符或字符序列,而不是合并频繁的字节对。
步骤:
1 将原始数据集划分成单词集合,再将每个单词划分成字符集,对于每个单词最后一个字符后面加上’-’(标记单词边界,以后用于字符恢复成单词),这样就得到了一个大的字符集合。
2 统计上面的得到的字符集合,统计每个单词内 2-gram字符出现频次,得到频次最高的2-gram字符,例如(‘A’,‘B’)连续出现的频率最高,则以“AB”替换所有单词内出现的(‘A‘,‘B’),然后将该新词添加到词表中。这里注意:该新词以后可以作为一个整体与单词内其他字符合并;替换或合并不跨单词边界。
3 对步骤2循环进行多次,直到达到就得到我们预设的词表大小。最终的vocab_size = init_size(这里为0)+ merge_operation_count, merge_operation_count是模型唯一的超参数。
算法:
在测试时先将单词拆分为字符序列,然后应用已经学到的操作将字符合并为更大的已知符号。这适用于任何单词,并允许具有固定符号词汇的开放词汇网络。
(图片见下页)
![](https://i-blog.csdnimg.cn/blog_migrate/3748f231a35b86653f6d1a2f47fa1512.png)
比较
与其他压缩算法(如哈夫曼编码)的主要区别在于,我们的符号序列仍然可以解释为子词单元,并且网络可以在这些子词单元的基础上概化来翻译和产生新的单词(在训练时看不见)。
评估
两种应用BPE的方法:
学习两个独立的编码,一个用于源词汇表,一个用于目标词汇表,或者学习两个词汇表联合的编码(联合BPE)。
前者的优点是在文本和词汇量方面更加紧凑,并且更能保证每个子词单元都在相应语言的训练文本中出现,而后者则提高了源和目标分割之间的一致性。如果我们独立地应用BPE,相同的名称在两种语言中可能会被分割成不同的部分,这使得神经模型更难学习子词单元之间的映射。
4 实验和分析
评估的目标:
1 我们能否通过子词单位来表示神经机器翻译中罕见和未见词的翻译?
2 在词汇量、文本大小和翻译质量方面,哪种子词单元分割效果最好?
Unigram accuracy:
因为子词单元比单词更稀疏。在我们的训练集中,频率等级5万对应训练数据中的频率为60;频率从50万到2。因为子词表示不那么稀疏,所以减少网络词汇的大小,并通过子词单元表示更多的单词,可以带来更好的性能。
结果:对于英语-俄语来说,不知名的名字很少能被复制,通常需要音译。因此,WDict基线对于oov的表现更差(9.2%精度;子词模型提高了精密度和查全率(BPE-J90k的精密度为21.9%,查全率为15.6%)。
Manual Analysis:
baseline的方法对于所有示例都效果不好,要么是删除内容,要么是复制了应该翻译或音译的源单词。减少子词模型的词汇量实际上可以提高性能。
未来研究的一个途径是学习翻译任务的最佳词汇量,我们希望自动依赖于语言对和训练数据量。我们也相信在双语分割算法中有进一步的潜力来创建更多可对齐的子词单元,尽管分割算法在运行时不能依赖于目标文本。虽然相对有效性取决于特定于语言的因素,如词汇量大小,但我们认为子词分割适用于大多数语言对,从而消除了对大型NMT词汇表或回退模型的需求。
5 结论和未来方向
结论:
这种用于分词的字节对编码的变体,它能够用变长子词单元的紧凑符号词汇表来编码开放词汇表。通过将罕见和未见的单词表示为子词单元序列,来进行开放词汇翻译,这比使用后退转换模型更简单,也更有效。
使用BPE分割和简单的字符双字符分割来显示基线上的性能增益,减少子词模型的词汇量实际上可以提高性能,可以消除对大型NMT词汇表或回退模型的需求。
未来研究方向:
1 学习翻译任务的最佳词汇量,希望自动依赖于语言对和训练数据量。
2 找到一个更好的方法来创建更多可对齐的子词单元。