BPE算法之我见

BPE算法本质是基于合并的,而不是基于切分的,理解这一点很重要。

在BPE整个迭代的过程中,是基于“词表”的,但是最后要生成的是“子词表”,拿来用的也是“子词表”。

拿论文里的例子来说,最开始词表长这样:

l o w < 5
l o w e r < 2 
w i d e s t < 6
n e w e s t < 3

如果你不迭代,直接基于这个词表去生成子词表,那生成的子词表就是二十六个字母:

l
o
w
e
s
t
r
n
i
d
<

然后进行五次合并操作之后,词表会变成这样:

low < 5
low e r < 5
w i d est< 6
n e w est< 3

基于这个词表生成的子词表长这样:

est<
low
w
e
r
n
i
d
<

如上,注意按照长度排列了一下,然后用这个子词表去切分输入文本。这里说是切分,实际上还是合并。比如来了一个单词:

biggest

我还是先把它切成字符:

b i g g e s t

然后从子词表里找,发现 est< 能合起来,那就把 est< 合起来。然后发现别的合不起来了,就按照这个结果切分了:

b@@ i@@ g@@ g@@ est

感觉查到的相关资料都没太讲明白。

你可能感兴趣的:(BPE算法之我见)