Byte-Pair Encoding 算法

Byte-Pair Encoding(BPE)算法是一种常用于分词器(Tokenizer)中的无监督分词方法,其主要思想是将文本中最常见的字符对(或子词对)不断合并,从而构建出一个词汇表。由于进行多轮 (假设 kk 轮)合并,而每一次合并都会基于统计频率将一对 Token 合并为一个新 Token,因此在 kk 轮迭代后,BPE 算法可以将长度为 kk 的单词合并为一个 Token

  1. 将输入的文本转化为 UTF-8 Encoding
  2. 统计 Byte-Pair 的频率
  3. 计算频率最高的 Byte-Pair,合并为一个新的 Token
  4. 用新的 Token 替换旧 Byte-Pair 出现的位置
  5. 回到第 22 步,重新统计 Byte-Pair (Token-Pair) 频率
  6. 直到词汇表大小达到预设值

BPE 算法通过这种逐步合并的方式,不仅能有效地表示常见词汇,还能灵活处理低频词和新词,对于大型语言模型的分词和词表构建有很大的优势。


BPE 代码实现