跳转到主要内容

不,中文对 LLM 并不比英文更省 token

一位中文母语者测试“中文字符更省 token”这个流行说法。跨六种 tokenizer,包括 Qwen、GLM、DeepSeek 等中文优先模型,英文每次都使用更少 token。本文讨论数据、BPE 机制,以及为什么字符数和 token 数不是一回事。

8 分钟阅读
分享:
AI 驱动

AI 驱动 · 每小时限 20 次请求

两条流动丝带,一条由中文笔画组成,一条由罗马字母组成,最后分解成不同大小的彩色 token 方块
中文笔画和罗马字母最终都会被模型看成 token,而不是屏幕上的字符长度。

中文互联网里一直有个说法,大概是:“用中文和 LLM 交流更省 token。一个汉字信息量更大,所以 token 更少,也更省钱。”我在知乎、微信文章和技术论坛都见过。它听起来很合理。中文更紧凑,同样意思字符更少,所以应该更高效。

但我是中文母语者,对这个说法一直有点怀疑。于是我测了一下。

测试方式

我从 Golden CLAUDE.md 仓库里拿了两个文件:英文版 CLAUDE.md,以及同内容的中文版 CLAUDE.zh.md。语义相同,语言不同。然后我把两个文件跑过我能找到的分词器。

英文版:5,474 个字符,5,514 字节。中文版:2,452 个字符,5,634 字节。

中文字符数少了 55%。但字节数反而更多,因为 UTF-8 里每个汉字通常占 3 字节,而 ASCII 英文字符占 1 字节。对”中文更小”这个直觉来说,这已经不是什么好信号了。

然后看 token 数。

分词器英文 token中文 token差异
GPT-4o / GPT-5.x (o200k_base)1,1961,479+23.7%
GPT-4 / GPT-3.5 (cl100k_base)1,2002,001+66.8%
GPT-3 时代 (p50k_base)1,3293,753+182.4%

中文用了更多 token。在最老的分词器上,几乎是三倍。在最新的分词器上,仍然多接近四分之一。方向从来没有反过来。

那中文模型呢?

最自然的反驳是:也许西方模型对中文处理得差。那 Qwen、GLM、DeepSeek 呢?这些是中文背景更强的模型,它们的分词器肯定看过更多中文文本。

我也测了。

分词器英文 token中文 token差异
Qwen 2.51,2031,351+12.3%
GLM-41,2021,307+8.7%
DeepSeek-V21,3241,427+7.8%

差距确实小很多,从 GPT-4o 的 +24% 降到 DeepSeek 的 +8%。但它没有反转。英文仍然赢。

为了确认离线分词器结果在真实 API 里也成立,我把同样两个文件通过阿里云 百炼发给实时 API,并检查模型实际返回的 prompt_tokens

模型(实时 API)英文 token中文 token差异
Qwen 3.5 Plus1,2721,363+7.2%
GLM-51,2051,310+8.7%

API 计数包含聊天模板开销,所以原始数字比离线测试高。但相对差异反映的是同一个结论。

三组彩色方块从左到右差距逐渐缩小,但红蓝两组从未真正反转
差距在缩小,但没有反转。

为什么英文赢:分词的工作方式

LLM 读的不是字符,而是 token。token 是模型在训练中学会识别的文本片段。把文本拆成 token 的算法叫 BPE(字节对编码,Byte-Pair Encoding)。简化版流程是:

  1. 从所有单独字节开始(256 个基础 token)
  2. 在训练语料里找到最常出现的相邻 token 对
  3. 把这一对合并成一个新 token
  4. 重复 50,000 到 200,000 次

在这之前还有一步很重要:正则会先把输入切成块,大致按单词或标点分。BPE 的合并发生在这些块内部,而不是跨块发生。这就是为什么整个英文单词可以变成单个 token:正则先把一个形状像英文单词的干净输入块交给 BPE。

结果就是:常见模式会被压缩进单个 token。西方模型的训练数据以英文为主,所以英文模式拿到了更多词表预算。

大概像这样:

英文: "The golden rules apply to every session"
分词: [The] [golden] [rules] [apply] [to] [every] [session]
数量: 7 个 token

中文: "金规适用于每个会话"
分词: [金] [规] [适] [用于] [每] [个] [会] [话]
数量: 8 个 token

英文里,带空格前缀的 " golden" 可以成为单个 token。分词器在训练中见过这个模式足够多次,于是一路合并下来。

中文更碎,但也不是完全按字切。用于 合并成了一个 token。o200k_base 词表里其实有超过 3,000 个多字 CJK token,比老分词器多很多。但大多数字符仍然单独存在,因为 CJK 字符组合太多,词表不可能全部覆盖。

这不表示中文对计算机不好。它只表示构建这些分词器的人把大部分词表预算给了英文,因为训练数据就是那个样子。

人们混淆了三个指标

这个误解存在很久,是因为人们把三个不同测量混在一起。

字符数:中文赢。“永远不要假设一个库存在”是 11 个汉字;“永远不要假设一个库存在”带空格是 29 个字符。这是人眼看到的,也是直觉来源。

字节数:大致接近。中文字符 UTF-8 通常 3 字节,英文字符 1 字节。同样内容的字节数最后差不多(这次测试是英文 5,514 vs 中文 5,634)。

Token 数:英文赢。BPE 会把常见字节序列合并成单个 token。英文单词因为训练数据占比高,合并得很激进;中文字符大多仍然分散。

短中文标记、较长罗马字母、两堆相近大小的书,以及英文拥有更少但更大的 token 方块
字符数、字节数和 token 数是三种不同测量。

“中文更省 token”这个说法,是把字符数观察直接套到了 token 上。但它们不是一回事。字符数是 token 数的很差代理,驱动因素完全不同。

在变好,但很慢

也有好消息。看 OpenAI 分词器的演进:

  • p50k_base(GPT-3 时代,词表里 39 个 CJK token):中文多 +182%
  • cl100k_base(GPT-4,754 个 CJK token):中文多 +67%
  • o200k_base(GPT-4o,5,776 个 CJK token):中文多 +24%

从 39 个 CJK token 到 5,776 个,差距确实在缩小。Qwen 和 DeepSeek 这样的中文背景模型把差距进一步压到约 +8%。

但“没那么差”不等于“更好”。我找到的最好情况,Qwen 3.5 Plus 仍然是中文多 +7.2%。英文还是更省 token。

如果你在选择提示词语言,这意味着什么

在 GPT-4o 上,相同内容的中文提示词比英文大约多 24% token。规模化使用时,这是真钱,也是真上下文窗口消耗。其他西方模型大概率类似,具体数值取决于分词器。

在 Qwen 或 DeepSeek 上,差距降到 7-12%。小很多,但仍然存在。

如果你是在选择用什么语言写提示词:用你思考时最自然的语言。token 差异还没大到值得你切换语言,而且翻译自己想法造成的清晰度损失,可能比 token 成本更伤响应质量。

字符数不是 token 数。你的中文提示词在屏幕上看起来更短,但模型看到的是更长。任何告诉你“切到中文可以省 token”的人,都在混淆人眼看到的东西和模型实际处理的东西。

想复核数字?

测试文件是 Golden CLAUDE.md 里的 CLAUDE.mdCLAUDE.zh.md。同一组行为规则,一个英文,一个中文。如果你找到某个分词器在完整文档上中文更省,我真的想知道。

许可

Article text © 2026 Mark Huang. Licensed under Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0) unless otherwise noted. 文章文本可在非商业场景下分享或翻译,但需标注原文 URL。商业使用需事先取得书面许可,并清楚引用原始来源。

代码片段、截图、第三方素材和网站源码可能适用单独条款。

建议署名: Based on "不,中文对 LLM 并不比英文更省 token" by Mark Huang, originally published at https://markhuang.ai/zh/blog/chinese-token-myth.

订阅更新

Go、AI/LLM 和分布式系统的技术文章,绝不滥发。

评论

正在加载评论...