词元 Token
约 970 字大约 3 分钟
2026-06-28
词元(Token)是大模型里最基本的概念。它既是模型的 输出单位,也是模型的 输入单位——发给模型的提示词(prompt),首先就会被拆成词元。
每一个词元都有一个唯一的 ID,最终真正喂给大模型的,是一个词元 ID 列表。举个例子,看一段英文怎么变成 ID 列表:
用户输入文本
Learn about language model tokenization.分词
[Learn] [about] [language] [model] [token] [ization] [.]查词表映射 ID
每个 token 查表换成一个整数,如
[1122, 98, 4012, ...]最终进入模型
[1122, 98, 4012, 3305, 2351, 7489, 13]这样的整数列表
提示
OpenAI 提供了在线查看词元的工具:https://platform.openai.com/tokenizer,可以直观看到一段文本被切成了哪些 token。
分词策略
1. 词级分词
直接以 "完整的词" 为单位切分,适用于空格分隔的语言(如英语)。
I love natural language processing.转换为
["I", "love", "natural", "language", "processing", "."]特点:粒度大、语义清晰,对英文常见词效果好。缺点是无法处理未登录词——遇到新词、自造词就不认识了,即不支持 OOV。
2. 子词级分词
把词切成更小的子词单元(词干、前缀、后缀),适合处理未知词。
lovely → love、ly特点:兼顾词级和字符级的优点,支持 OOV,能处理新词和自造词。
3. 字符级分词
把每个字符当作一个词元,不依赖词典。
Hello → ["H", "e", "l", "l", "o"]特点:适合拼写敏感任务(语言模型、自动补全);能处理所有字符,OOV 问题彻底消失(不存在造不出来的词)。缺点是序列变长,难以建模高级语义。
4. 字节级分词
先把文本按 UTF-8 字节 切分,再对字节序列建模。基本单位是字节而非字符或词,因此 具有语言无关性。
Hello 😊转换为如下结构,其中前 6 个是 ASCII 字符(H e l l o 空格);后 4 个是 emoji 的 UTF-8 编码
[72, 101, 108, 108, 111, 32, 240, 159, 152, 138]优势:
- 语言无关,对多语言友好
- 处理 OOV 能力强
- 压缩效率高:根据训练数据频率自动构建最佳子词组合,减少 token 总数
不同模型的分词差异
目前主流大模型(GPT 系列、DeepSeek、Kimi 等)基本都采用 字节级 BPE 分词。但不同版本、不同模型的切分结果会不一样。
同一模型不同版本会进化。例如 Python 的 elif,在 GPT-2 里被切成两个词 [el、if],到 GPT-4 已经有了自己的词元 [elif]——这源于模型对代码关注度的提升。
同时,词表规模也在变大:GPT-4 用 cl100k_base(约 10 万词表),到 GPT-4o / GPT-5 升级为 o200k_base(约 20 万,GPT-5 另有 o200k_harmony 变体)。词表越大,同样的文本切出的 token 越少,既省上下文也对多语言更友好。
不同模型差异更明显,以 ChatGPT真厉害! 为例:
['Chat', 'GPT', '真', '厉害', '!']['Chat', 'G', 'PT', '真', '厉', '害', '!']['[UNK]', '真', '厉', '害', '!']['▁Chat', 'G', 'PT', '真', '厉', '害', '!']各主流模型的分词方法对比:
| 模型 | 分词方法 | 词表规模 | 字节级 | OOV 问题 |
|---|---|---|---|---|
| GPT-2 | Byte-level BPE(tiktoken) | ~5 万 | 是 | 无 |
| GPT-4 | Byte-level BPE(cl100k_base) | ~10 万 | 是 | 无 |
| GPT-4o / GPT-5 | Byte-level BPE(o200k_base) | ~20 万 | 是 | 无 |
| DeepSeek-V3 | Byte-level BPE | ~12.8 万 | 是 | 无 |
| Kimi K2 | Byte-level BPE | 大词表 | 是 | 无 |
| BERT | WordPiece | ~3 万 | 否 | 有 [UNK] |
笔记
Claude 的分词器并不公开。Anthropic 没有像 OpenAI 的 tiktoken 那样开源分词器,只提供一个 token 计数 API。
