跳转至

BPE编码

字节对编码-Byte Pair Encoding: Neural Machine Translation of Rare Words with Subword Units

我们计算语料库中显示的每个单词的频率。 对于每个单词,我们在单词末尾附加一个特殊的停止标记“ </ w>”。 我们稍后将讨论其背后的动机。 然后,我们将单词拆分为字符。 最初,单词的标记是其所有字符加上附加的“ </ w>”标记。 例如,单词“ low”的标记顺序为[“ l”,“ o”,“ w”,“ </ w>”]。 因此,在对数据集中的所有单词进行计数之后,我们将获得带有标记的单词的词汇表及其相应的计数,例如:

{'l o w </w>': 5, 'l o w e r </w>': 2, 'n e w e s t </w>': 6, 'w i d e s t </w>': 3}

在每次迭代中,我们计算每个连续字节对的频率,找出最频繁的一对,然后将两个字节对标记合并为一个标记。

对于上面的示例,在合并的第一次迭代中,因为字节对“ e”和“ s”出现了6 + 3 = 9次( 'n e w e s t '的6次 + 'w i d e s t '的3次),这是最常见的。 我们将它们合并为新的令牌“ es”。 请注意,因为在此特定示例中标记“e ”,“ s”也消失了。

在合并的第二次迭代中,令牌“ es”和“ t”出现了6 + 3 = 9次,这是最常见的。 我们将它们合并为一个新的令牌“ est”。 请注意,因为标记“ es”和“ t”也消失了。

在合并的第三次迭代中,令牌“ est”和“ </ w>”对最频繁,以此类推。

我们可以计算迭代次数或令牌的最大数量,以控制我们想要的令牌数量。

停止令牌“ </ w>”也很重要。 如果没有“ </ w>”,则说如果有标记“ st”,则该标记可能在单词“ st ar”或wold“ wide st”中,但是它们的含义完全不同。 对于“ </ w>”,如果存在令牌“ st </ w>”,则模型会立即知道它是wold“ wide st </ w>”而不是“ st ar </ w>”的令牌。 ”。

每次合并之后,可能存在三种情况,令牌的数量减少一个,保持不变或增加一个。 但是实际上,随着合并数量的增加,令牌的数量通常会先增加然后减少。


最后更新: January 18, 2023
回到页面顶部