第 2 章:分词——把文字切成模型能吃的块
上一章:LLM 是什么 | 回到 学习主页 | 下一章:Transformer 如何读懂一句话
神经网络是矩阵运算的机器,只吃数字。所以任何文本进入 LLM 之前,都要先经过一道翻译工序:分词(Tokenization),把字符串切成一个个 token,再映射成整数编号(token ID)。
直觉:token 是「词的碎片」,不是词
如果你以为 1 个 token = 1 个单词,在英文里会频繁出错。比如 GPT 系列分词器会把下面这句话切碎:
"tokenization" → "token" + "ization"
高频常见词会作为整体保留(the、and),生僻词和长词会被拆成更小的片段。平均来说,英文 1000 个 token 约等于 750 个单词。
为什么不用「按空格切词」这种最简单的方法?因为词表会爆炸:人类语言的单词量动辄数百万,还随时有新词、拼写变体、网络用语冒出来——任何没见过的词都会变成「未登录词」(OOV,Out-of-Vocabulary),模型只能抓瞎。另一个极端「按字符切」又太碎:一句话变成几百个 token,序列极长,模型要看的「距离」太远(第 3 章会看到,注意力成本随序列长度平方级增长)。
子词分词(subword tokenization)是折中方案:常见词整体保留(序列短),罕见词拆成有意义的碎片(词表小、没有 OOV)。
BPE:从字符开始「捏」出词表
GPT 系列用的算法叫 BPE(Byte Pair Encoding,字节对编码)。它最初是 1994 年一种数据压缩算法的名字,2016 年被引入机器翻译,如今是 LLM 分词的事实标准。它的思路是「自下而上地捏词」:
- 把训练语料里所有单词拆成字符,每个字符是一个初始「词表项」;
- 统计所有相邻词表项组合出现的频率;
- 把最频繁的组合(比如
t+h→th)合并成一个新词表项; - 重复第 2、3 步,直到词表达到预设大小(GPT-2 是 50257 项)。
于是高频片段(ing、tion、the)自动成为独立 token,生僻片段维持碎片状态。训练完成后,分词器带着这张词表工作:遇到新文本就按词表里的项切分,再把每项换成整数 ID。整个过程是纯规则的——同一段文字永远切出同样的结果,没有随机性。
Note
从 GPT-2 起,OpenAI 的分词器直接在 UTF-8 字节上跑 BPE(byte-level BPE),而不是在 Unicode 字符上。好处是:不管输入什么语言、什么乱七八糟的符号,都能切——哪怕是不完整的半个汉字。
中文的特殊性
中文没有空格分词这道天然边界,分词器通常把一个常用汉字或常见双字词作为一个 token:1 个汉字大约占 1–2 个 token。后果很实际:
- 同样一段意思,中文的 token 数通常比英文少,同样 1000 字的中文比英文「省」token;
- 但如果训练语料里中文比例低,分词器对中文的切分效率就差——一个生僻汉字可能被拆成多个字节级 token,推理变慢、成本变高。
一个完整例子
输入 "I love coding",整个流水线是:
- 标准化(normalization):统一大小写、Unicode 规范形式;
- 预分词(pre-tokenization):按空格和标点粗切:
I/love/coding; - BPE 切分:按词表把每块切成子词,比如
coding可能保持整体; - 映射:每个子词查表得到整数 ID,得到
[40, 1842, 12908]之类的序列; - 拼接特殊 token:加上表示开头的 token(如
<|endoftext|>或对话模板标记)。
这串整数,就是模型的真正输入。
一句话总结
分词是把文字翻译成整数序列的工序:现代 LLM 用 BPE 算法从语料中自动「捏」出子词词表,在词表大小和序列长度之间取平衡。token 是词的碎片而非单词本身,中文约 1–2 个 token 每字。分词之后,每个 ID 还需要被映射成向量——那是下一章的内容。
来源
- BPE 起源于 1994 年的数据压缩算法,2016 年被引入机器翻译:已核实(维基百科 Byte pair encoding 条目)
- byte-level BPE 自 GPT-2 起用于 GPT 系列:已核实(同上条目)
- 英文约 1000 token ≈ 750 单词:OpenAI 官方文档的粗略口径(「100 tokens ≈ 75 words」),业界广泛引用;原帮助页面已迁移,无法直接访问复核
- 中文约 1 字 1–2 token:与既有笔记 Tokenization 口径一致,系经验估计而非严格标准
相关笔记
- Tokenization — wiki 版笔记:三大子词算法(BPE / WordPiece / Unigram)对比与工程陷阱
- LLM — 分词在 LLM 全图中的位置