AI 有时会把一个生僻字显示成几个奇怪符号,或者数不清一句诗到底几个字,这些怪现象多半能追溯到字节级分词这种设计。想看懂它,得先从模型怎么「读」文字说起。
分词先把文字切成小块
模型并不直接认识文字,进它嘴里的都是 token,也就是把文本切出来的一小块一小块单元。常见汉字大多一刀一块,英文常常一个词一片,切块方式由分词器决定。每个模型家族用的分词器可能都不一样,同一段话在不同模型那里数出来的块数会不同,费用和限长也跟着不同。能带走的判断:token 和字不是一回事,计费、限长、数数,背后全按 token 走。
| 受影响的方面 | 怎么受影响 | 你会在哪察觉 |
|---|---|---|
| 计费 | 按 token 计价,块数多就更贵 | 生僻字多的文本账单偏高 |
| 限长 | 块数决定一次能塞进多少内容 | 同一段话在不同模型数出的块数不同 |
| 数数与拆字 | 单位是 token,与汉字不一一对应 | AI 数错字数、笔画 |
普通词表为什么装不下生僻字
分词器随身带一本词表,收录训练时高频出现的字词组合,常见词整块收录,效率高。但词表容量有限,通常在几万到十几万条之间,装不下世界上所有字符。生僻字、方言字、古字、新造的 emoji,在词表里找不到现成条目,只能被拆成更小的碎片,一块块拼起来。这就像快递分拣:常用包裹贴整箱标签直接过,冷门货拆开按单件登记,慢是慢了,件不会丢。
字节兜底:任何字符都不丢
字节级分词的关键就在兜底机制:万一词表完全没有收录,字符会退回到最底层的字节序列来表示。文本在计算机里本来就是一串字节,按字节切块保证了任何输入都能被表示、也能被原样重组回来,哪怕模型并不理解它的含义。快递的类比在这里失效:拆件可能弄丢,字节切块不会丢信息,它只是把一个大问题换成许多小问题,代价是块数变多、计算更费。这也解释了为什么生僻字多的文本占用和开销会悄悄上涨,块数变多意味着计算量变大,参数量那篇讲过的总账逻辑在这里同样成立。
对照体验:生僻字与 emoji 的表现
拿同一段文本做对照最直观:常见汉字一般一刀一块;夹着生僻字的句子块数明显变多;emoji 常由多个码位拼成,切块更碎,数错个数的概率也随之上升。让 AI 数「秋」字有几笔、一句话有几个字,它可能出错,因为它看到的单位和你以为的不一样。DeepSeek、豆包这类模型遇到拆字、数数类问题也偶有翻车,下次见到别急着怀疑它的智力,先想想分词这一层。顺带一提,小尺寸模型词表往往更精简,生僻字更容易被切碎,选本地小模型时可以参考这篇小参数模型的甜点位。
分词现象速查对照表
- 常见汉字:通常一刀一块,开销正常
- 生僻字与古字:词表没有,退回字节,块数变多
- emoji:多个码位拼接,切块更碎
- 数数与拆字任务:受切块影响,偶发出错
对照表末条留个心眼:凡涉及字数、字形的任务,结果要人工复核。
所以再遇到怪现象,先想想分词这一层:它解释了乱码、错数和偏贵的账单,也提醒你,模型眼里的文字和你屏幕上的并不完全一样。
聊聊字节级分词的常见疑问
- 模型数不清字数,是它笨吗?:多半是分词的锅。它按 token 计数,token 与汉字不是一一对应,数数出错并不代表理解力差。
- 生僻字会被模型完全丢掉吗?:不会。字节兜底保证任何字符都能表示并还原,只是切块变碎,处理质量和效率会打折扣。
- 普通用户需要在意分词方式吗?:平时不必,遇到计费异常、输出被截断、数数出错这几类问题,往分词上想一步,往往就找到原因了。
本文只讲技术概念与选型思路,不构成法律意见;涉及具体合规决策,请咨询执业律师。


