Appearance
Token 化与 DeepSeek 实例
理解 token,最好先不要把它理解成“字数”,而要把它理解成:
模型真正看到的文本切片
模型并不是直接读中文、英文或代码,而是在读 tokenizer 切出来的一串 token。
文本是怎么被切成 token 的
模型大致会经历这样一个过程:
text
原始文本
-> tokenizer 按训练时学到的规则拆分
-> 变成 token 序列
-> token 再映射成整数 id
-> 模型处理这些 id用 DeepSeek 开源 tokenizer 看实际切分
下面这些例子来自开源 DeepSeek tokenizer 的实测。
例 1:一句纯中文,不是按“一个字一个 token”死切
文本:
text
请用三句话总结这段文字。DeepSeek tokenizer 实测:
text
[请] [用] [三] [句话] [总结] [这段] [文字] [。]对应 token id:
text
[2788, 642, 1131, 11572, 10728, 32311, 10541, 320]这里最值得注意的是:
句话是一个 token总结是一个 token这段是一个 token文字是一个 token
例 2:一句纯英文,空格会进入 token
文本:
text
Please summarize this text in three sentences.DeepSeek tokenizer 实测原始 token:
text
[Please] [Ġsummarize] [Ġthis] [Ġtext] [Ġin] [Ġthree] [Ġsentences] [.]对应 token id:
text
[12473, 45706, 566, 3051, 295, 2038, 15174, 16]这里的 Ġ 表示这个 token 前面带空格。
例 3:中英混合、路径、JSON 名字,会被按技术片段切
中文混合例子:
text
请读取 docs/api.md,并输出 JSON。DeepSeek tokenizer 实测:
text
[请] [读取] [ docs] [/api] [.md] [,] [并] [输出] [ JSON] [。]总计 10 tokens。
英文对应写法:
text
Read docs/api.md and output JSON.DeepSeek tokenizer 实测:
text
[Read] [ docs] [/api] [.md] [ and] [ output] [ JSON] [.]总计 8 tokens。
例 4:代码路径和文件后缀,也会拆得很细
文本:
text
请分析 src/components/AgentPanel.tsx 的错误。DeepSeek tokenizer 实测:
text
[请] [分析] [ src] [/components] [/] [Agent] [Panel] [.ts] [x] [ ] [的错误] [。]总计 12 tokens。
中英文 token 消耗为什么会不一样
大致上可以记住几个经验:
- 英文常见词和带空格片段往往压缩得更好
- 中文没有单词空格,常常显得更碎
- 中英混写通常比纯中文或纯英文更容易多耗 token
- 代码、JSON、URL、文件路径通常都比自然语言更吃 token
结论
- token 不是字数,也不是单词数
- 中文不是固定“一个字一个 token”
- 英文里的空格往往直接进入 token
- 路径、代码、JSON、文件后缀会被按技术片段拆开