我认为它不是严格的BPE(byte pair encoding),但是对字符串也有类似的想法。
假设字典中有三个中文单词(我将使用像CEDICT这样的大字典来实际使用。)
然后接受如下输入。
我喜欢水果(我喜欢水果)
由于中文文本没有被白色空格分割,因此难以处理。
我们可以将输入字符串分解为多个单个字符。
我喜欢水果
然后在[左,右]查找新符号对并将它们组合起来。如果组合单词在字典中,我们可以用新符号替换组合单词。
我们找到了两个新符号,因此输入文本变为
我喜欢水果
我们应该迭代,直到我们在字典中找不到任何组合词。在这种情况下,我们无法在字典中找到新符号。
天真地实现这一点并不困难,但我们需要多次扫描相邻的两个单词。有人说我们可以用优先级队列有效地实现BPE。我不熟悉压缩算法。如果有人能告诉我实施或有用的文件,我将不胜感激。
在这种方法中,词汇单词被分解为单个字符,因此我们可以避免未知单词的问题。
致以最诚挚的问候,
参考:Neural Machine Translation of Rare Words with Subword Units由于计算复杂性,他必须从预先标记化的单词开始。