BPE(字节对编码)从字符或字节级词汇表出发,反复统计语料中相邻符号对的频率,把最频繁的一对合并为新符号加入词表,直到词表达到目标大小(常见 3万到15万)。分词时按合并规则贪心地把文本切分为词表中的子词序列。

为什么需要子词分词:按词切分词表爆炸且无法处理未登录词;按字符切分序列太长、语义信息稀薄。子词是折中——常见词完整保留('the'),罕见词拆成有意义的片段('unhappiness' → 'un'+'happiness'),任何文本都能被表示。现代 LLM 用字节级 BPE,从 256 个字节起步,天然支持任意 Unicode 字符与多语言。

易错点:分词粒度直接影响成本与效果——中文等语言平均每个字 1-2 个 token,英文一个单词约 0.75 词/token;数字常被逐位切开导致大模型算术差;tokenizer 的词表大小影响嵌入层参数量。追问方向:为什么分词结果对模型能力有影响(如大小写、空格敏感)?SentencePiece 与 tiktoken 的区别?