神经机器翻译模型通常使用固定的词汇,即使翻译从根本上来说是一个开放的词汇问题(名称、数字、日期等)。有两大类方法可以解决词汇表外词汇(OOV,即词汇表未登录的词)的翻译问题。
一种方法是简单地将罕见字从源复制到目标(如最罕见的字是名称或数字正确的翻译只是一个副本),要么基于注意力模型,使用外部对齐模型,甚至使用一个更复杂的专用指向网络。
另一个大类方法是使用sub-word units,即分词单位,如chararacters,mixed word/characters或者更加智能的分词。
wordpiece模型(WPM)的实现,最初是为解决谷歌语音识别系统开发时遇到的日语/韩语的分割问题。这种方法完全是数据驱动的,并保证生成
任何可能的字符序列的确定性分割。
对于任意单词的处理,首先将单词分解为给定训练过的单词模块的单词快。在对模型进行训练之前,加入特殊的单词界线符号,使原词序列保持不变,使得可以从文字序列中恢复且没有歧义。
在解码时,模型首先产生一个wordpiece序列,然后被转换成相应的单词序列。
以下是一个单词序列和相应的wordpieces序列例子:
• Word: Jet makers feud over seat width with big orders at stake
• wordpieces: _J et _makers _fe ud _over _seat _width _with _big _orders _at _stake
在上面的例子中,单词Jet被分成了两个单词:
单词feud也被分成了两个单词:
其他单词仍然是单个单词,而“_”符号表示的是开始的单词头。
wordpiece模型是使用数据驱动的方法生成的,以最大限度地提高语言模型的可能性,给出一个不断变化的词定义。给定一个训练语料库和一些需要的tokens,优化问题就是选择D个wordpieces,在根据所选的wordpieces进行分割时的wordppiece数量中,使得所产生的语料库是最小的。根据数据将基本字符减少到可管理的数量,并将剩余的字符映射到一个特殊的unknown字符,为了避免罕见的单词污染给定的wordpiece词典表。
原作者发现使用的总词汇量为8k到32k之间的单词既能达到良好的准确性(BLEU分数),又能达到快速的解码速度。
在翻译中,从源到目标直接复制罕见的实体名或数字通常是有意义的。为了方便这种直接复制,在源语言和目标语言我们总是使用共享的wordpiece模型。使用这种方法,可以保证源语句和目标语句中的相同字符串将以完全相同的方式分割,使系统更容易学会复制这些tokens。
wordpiece在字符的灵活性以及单词的效率之间达到了一种平衡。作者还发现,模型在使用单词时可以获得更好的整体BLEU分数,这可能是因为模型现在可以有效地处理本质上无限的词汇量,而不需要仅仅依靠字符。
仅仅依靠字符将使输入和输出序列的平均长度更长,因此需要更多的计算。
论文使用的第二种方法是混合词/字符模型,与单词模型一样,保持固定大小的单词词汇量。
然而,与传统的将OOV词(词表外的词)压缩为单个UNK符号的词模型不同,此处将OOV词转换为其组成字符的序列。
在字符前面加上特殊的前缀,以便可以显示单词中的字符的位置,将他们与普通词汇中的字符区分开来。
有三个前缀:< B >,< M >和< E > 分别表示单词的开头、中间和结尾。
例如:
单词Miki不在词汇表中,它将被处理成以下特殊tokens:< B > M < M > i < M > k < E > i
这个过程是在源句和目标句上完成的。在解码过程中,输出也可能包含特殊tokens序列。作为后处理步骤的一部分,使用前缀将标记化反转到原始单词是非常简单的。