一句话定义
Tokenization 是模型看到文本之前的第一步:把原始字符串切成 token 序列,再查词表映射成整数 ID。
一句话记忆
模型不读文字,只读 token ID。
为什么重要
神经网络只能处理数字,所以文本必须先被离散化。切分方式决定了三件事:词表有多大、同一段文本会变成多少个 token、多语言和代码的覆盖是否均衡。这些都会影响训练成本、上下文占用和最终效果。
常见做法
- 词级切分:按空格或词典切词,词表大、未登录词多。
- 字符级切分:每个字符一个 token,词表小但序列很长。
- 子词切分:在字符和词之间折中,是目前主流。
- BPE:从字符开始,反复合并高频相邻片段,直到达到目标词表大小。
- WordPiece / SentencePiece:类似思路,常用于 BERT 和多语言模型。
- byte-level BPE:在字节层面切分,几乎不会出现未登录字符,也能覆盖 emoji 和罕见符号。
中文通常会被切成单字、常见词或字节片段,所以「一个 token 约等于一个字」只是粗略感受,不能直接换算成字符数。
关键取舍
词表越大,单个 token 承载的信息越多、序列越短,但嵌入矩阵和输出层也越大,低频 token 训练不充分。词表越小,序列越长,注意力计算和显存开销随之上升。分词器还和模型绑定:不同模型的 tokenizer 不同,token ID 不能混用。
用在哪里
- 估算上下文成本、切分长文档、设计多语言/代码数据配比时。
- 选模型或迁移模型时确认 tokenizer;不同模型的 token ID 不能混用。
常见误区
- token 不等于字,也不等于词;不同文本的 token/字符比例差异很大。
- 换 tokenizer 等于换了一套输入语言,不能直接把旧模型的 embedding 拿来复用。
- 长上下文的上限是按 token 算的,不是按字符算的。
相关概念
- Embedding:token ID 进入模型后的第一层表示。
- 上下文窗口:以 token 为单位计算的输入上限。
- Transformer:接收 token 序列的主干网络。