
摘要
子词切分(subword segmentation)被广泛用于解决机器翻译中的开放词汇表问题。目前主流的子词切分方法是字节对编码(Byte Pair Encoding, BPE),该方法保留高频词的完整性,同时将低频词拆分为多个子词单元。尽管在相同词汇表下可能存在多种不同的切分方式,BPE却会将每个词唯一地切分为确定的子词序列,这种确定性可能阻碍模型更好地学习词的构成性特征,并降低对切分错误的鲁棒性。迄今为止,克服BPE这一确定性缺陷的唯一方法是设计新的子词切分算法(Kudo, 2018)。相比之下,我们证明BPE本身具备生成同一词语多种切分结果的能力。为此,我们提出BPE-dropout——一种基于传统BPE、简单且有效的子词正则化方法。该方法通过随机扰动BPE的切分过程,在保持固定BPE词汇框架的前提下,使同一词语在训练过程中产生多种不同的切分形式。在训练阶段使用BPE-dropout,推理阶段采用标准BPE,可使翻译性能相比传统BPE提升最高达3 BLEU,相比先前的子词正则化方法提升最高达0.9 BLEU。
代码仓库
PatxiofromAlphensign/subword-nmt-mods
GitHub 中提及
VKCOM/YouTokenToMe
GitHub 中提及
mozilla/subword-nmt
GitHub 中提及
rsennrich/subword-nmt
GitHub 中提及
kh-mo/QA_wikisql
GitHub 中提及
google/sentencepiece
tf
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| machine-translation-on-iwslt2015-english-1 | Transformer+BPE-dropout | BLEU: 33.27 |
| machine-translation-on-iwslt2017-arabic | Transformer base + BPE-Dropout | Cased sacreBLEU: 33.0 |
| machine-translation-on-iwslt2017-english | Transformer base + BPE-Dropout | Cased sacreBLEU: 39.83 |
| machine-translation-on-iwslt2017-english-1 | Transformer base + BPE-Dropout | Cased sacreBLEU: 15.2 |
| machine-translation-on-iwslt2017-french | Transformer base + BPE-Dropout | Cased sacreBLEU: 38.6 |