中文分词为什么特殊?

上篇留了个小尾巴
上一期我们聊了Tokenizer是怎么工作的。BPE、WordPiece、SentencePiece,这些算法名字你可能还有印象。但我自己用ChatGPT的时候发现,用英文问问题和用中文问问题,价格好像不太一样。
查了一下才发现,同一个问题问ChatGPT,英文回答反而更"便宜",中文回答要花更多token。这不是ChatGPT故意为难中文用户,而是中文本身的信息结构给机器出了道难题。这个难题,已经困扰中文信息处理近八十年了。
先说清楚:Token到底是什么
你可能听说过"Token是AI的货币"这个说法。但货币只是比喻,我们来把它说清楚。
Token不是简单的单词,它是文本处理的最小单位。AI用它来压缩和理解人类语言。
你可以把Token想象成乐高积木。英文单词天然就是一块块完整的积木,而中文需要临时"拼装"。
一个英文单词通常对应1个Token。"Hello world",这句话被切开就是2个Token。中文呢?"你好世界",可能被切成4-6个Token,甚至更多。
这里差别就出来了。

英文的分词为什么简单
英文有个"先天优势":空格。
你读英文文章,每个单词之间都有空格。这意味着词和词的边界是"刻"在纸上的。Tokenizer只需要按照空格切,再处理一些特殊情况,比如标点符号和缩写就行。
英文分词就像切生日蛋糕。蛋糕上已经画好了刻度线,你照着切就行。
26个拉丁字母,种类少,组合频率高。Tokenizer见过足够多的英文语料后,基本能把常用单词都收入词表。
不费劲。
中文不一样。
中文书写没有空格,词与词之间没有显式边界。"今天天气很好",这句话七个字,机器怎么知道该在哪儿切?
可以切成"今天/天气/很好"。
也可以切成"今天/天/气/很/好"。
甚至切成"今天天气/很好"。
人读一遍就知道第一种最合理。但机器没有语义理解能力之前,面对同一个句子可能切出完全不同的结果。
这就是中文分词的特殊性:歧义太多。

左边切成三个词,右边切成七个单字。意思一样,但Token数量差了一倍还不止。
你可能会说,那让机器像人一样理解语义不就行了?
问题在于,这种"像人一样理解"需要先有正确的分词。分词不对,后面的理解全错。这是个先有鸡还是先有蛋的问题。
BPE算法——为什么AI倾向于把汉字拆碎
那现在的AI模型怎么处理中文分词?
大多数AI模型用的是BPE算法。简单说,它的工作方式是这样的:从字符开始,逐步合并出现频率最高的相邻字符对。
英文里"t"和"h"经常一起出现?那就合并成"th"。"th"再和"e"一起出现频率高?那就合并成"the"。
这样一层层合并下去,高频的完整单词或词根就被保留了。
问题来了。
中文字符太多了。常用汉字超过3000个,每个字符的出现频率被分散了。
BPE算法会觉得:低频字符留着没用,不如继续拆。拆到最后,低频字变成了笔画级别的颗粒。
所以你看到很多AI模型处理中文时,会把汉字拆得很碎。"你好"可能变成"你"和"好"两个Token,也可能因为频率不够高被拆得更碎。
BPE分词的过程大概是这样的:

从字符开始,不断合并高频组合。高频的词保住了,低频的字越拆越小。
就像把一本字典按使用频率重新排列。常见的词占好位置,生僻字被拆成偏旁部首。
反转来了——为什么国产模型中文反而更省钱
但这里有个反转。
GPT-4时代,89%的汉字被切成多token。也就是说,大部分汉字不是一个Token,而是好几个。
GPT-4o换了新的tokenizer,改善到57%的汉字仍为多token。有进步,但还是超过一半要拆开。
但国产模型,比如Qwen、DeepSeek,中文/英文的token比值反而低于1。
同样一段内容,中文消耗的token数量可能比英文还少。
这不是因为中文更简单,而是因为国产模型针对中文语料做了专门优化。
具体怎么做的?比如把"你好"、"中国"、"我们"这种高频组合固化成单个Token。或者针对中文的bigram、trigram进行更细致的优化。
就像寄快递。国际快递按体积收费,所以同样重量的包裹,中文因为结构分散显得更"占地方"。但国内快递针对中文小包裹优化了打包方式,虽然最终计费还是按token数,但中文效率提升后,实际费用就降下来了。

你看,差距还是很明显的。
实用建议——普通人怎么降低Token成本
知道这些原理后,普通人能做什么?
用官方提供的tokenizer工具。OpenAI、Google、国产模型厂商基本都有在线工具,你可以精确计算一段文字会消耗多少Token。这样心里有数。
控制输入输出的不必要内容。问问题时别绕弯子,直接问。AI回复太长的话,可以让它精简。每一句话都是钱。
大任务拆成小任务分批处理。一次问太多问题,模型可能会"遗忘"前面的内容。分批问,效果可能更好。
关注国产模型的中文性价比。如果你的使用场景以中文为主,国产模型可能是更经济的选择。
就像寄快递,合理的打包和分箱能省运费。这些小技巧加在一起,能省下不少"冤枉钱"。
分词这件事,中文终于不再那么吃亏了
从八十年前的明快打字机到今天的GPT-4o,中文分词的技术演进从未停止。
那段没有空格、没有标点、词边界全靠猜的岁月,困扰了中文信息处理近八十年。
但现在不一样了。
随着国产模型的崛起和tokenizer的持续优化,中文"贵"的问题正在被一点点解决。未来,或许我们不用再为"中文税"买单。
不过,Token的消耗只是由分词决定的吗?
不是的。你输入了多少内容、模型要处理多长的上下文、接口怎么计费……这些因素加在一起,才是你真正要付的账单。
下一期,我们就来聊聊这个很多人关心的话题:上下文长度、Token预算和接口费用,到底是怎么算的?
