在自然语言处理(NLP)特别是大模型(LLM)时代,BPE、WordPiece 和 SentencePiece 是三种最主流的子词分词(Subword Tokenization)算法。 它们的共同目标是:在“字符级”(Character-level)和“单词级”(Word-level)分词之间寻找平衡。既能解决未登录词(OOV)问题,又能控制词表大小,同时保留语义信息。 以下是这三种算法的原理、区别及详细对比。 --- 1. BPE (Byte Pair Encoding) 原理:基于频率的合并 BPE 最初是一种数据压缩算法,后被引入 NLP。它的核心思想是统计语料中相邻字符对(Character Pair)的出现频率,迭代地合并频率最高的字符对。 训练过程(构建词表): 1. 预分词:将文本按空格切分成单词,并在每个单词末尾添加特殊符号(如 )以标记单词边界。 2. 初始化:将所有单词拆分为字符序列。词表初始包含所有基础字符。 3. 统计:统计所有相邻字符对(如 )在语料中出现的频率。 4. 合并:找到频率最高的字符对,将其合并成一个新的子词(如 ),加入词表。 5. 迭代:...