模型并不直接读汉字,它读的是被切碎的词元。本文解释 Token 与分词的概念,为什么一个词可能被切成好几段、为什么生僻内容常被拆得零碎,以及这如何影响计费、长度限制和模型的奇怪表现。
核心要点
- 分词是把文本切成模型认识的最小单位,切法由训练决定
- 常见词往往是一个词元,生僻词会被拆成多个片段
- 字符数不等于词元数,这直接影响长度限制与调用成本
模型不识字,它数的是词元
人类的阅读单位是字和词,模型的阅读单位叫词元,英文是 token。在文字进入模型之前,先要经过一道分词程序,把整段话切成一串编号,模型真正处理的就是这串编号。你看到的中文回答,是模型算完之后再翻译回来的结果。
切分规则不是人为写死的,而是从大量文本中统计出来的。高频的组合会被优先保留成一个整体,罕见的组合则退而求其次,拆成更小的片段。所以同一个概念在不同语言里,占用的词元数量可能相差很多。
为什么它有时数不清字母
因为常见的英文单词通常整体是一个词元,模型看到的是编号而不是字母序列,让它数某个单词里有几个字母,就像让你数一串身份证号里有几个 8,不看清楚很难保证准确。这类任务之所以常被拿来当例子,正是因为它暴露了分词带来的盲区。
同样的道理,它在处理生僻人名、罕见术语、超长数字时更容易出错,因为这些内容在训练语料里出现得少,被切成了不常见的碎片组合。反过来,格式规整、出现频繁的内容,它处理起来就稳得多。
这和你的使用有什么关系
首先是长度。模型的上下文窗口按词元计算,不按字数计算,同样一段话在不同语言下占用的额度并不一样。其次是成本,很多服务的计费单位就是词元数。最后是可控性:如果你要模型严格遵守某种格式,最好给出清晰的分隔符,让分词结果稳定可预期。
一个实用的小提醒:遇到模型反复在某类内容上出错,可以先想想这段话会被切成什么样。把长串数字用空格或标点分组、给专有名词加明确标注,往往比反复重写提示词更有效,理解分词等于多了一个排查问题的角度。
常见问题
中文一个字就是一个词元吗?
不一定。常见的字和词通常各自成词元,但生僻字、罕见组合可能被拆成更小的片段。不同模型使用的分词表不一样,同一句话的词元数也会有差别,具体要看所用模型的分词器。
本文为 AI 科普内容,仅用于知识普及,不构成任何技术选型、投资或职业决策建议。