AI 为什么数不清 strawberry 里有几个 r?秘密藏在 Token 里

TL;DR

数单词里的字母对人很简单,对大语言模型却可能很棘手。原因不是 AI 完全看不见字母,而是它通常先把文字切成 Token,再在更深层重建字符信息。本文从 strawberry 难题出发,讲清分词方式如何影响拼写、计数、中文处理与提示技巧。

数单词里的字母对人很简单,对大语言模型却可能很棘手。原因不是 AI 完全看不见字母,而是它通常先把文字切成 Token,再在更深层重建字符信息。本文从 strawberry 难题出发,讲清分词方式如何影响拼写、计数、中文处理与提示技巧。

AI 为什么数不清 strawberry 里有几个 r?秘密藏在 Token 里

如果让一个小学生数一数 strawberry 里有几个字母 r,他大概会从左到右指着字母数。大语言模型却不是这样“看字”的。它接收到文字后,通常先经过分词器,被切成一个个 Token(词元)。Token 可能是一个完整单词,也可能是半个单词、一个标点或一段常见字符组合。

这就是为什么模型能写出流畅文章,却偶尔在数单词字母时栽跟头:它处理语言的基本积木,并不总是单个字母。

模型眼里的 strawberry 不是十颗珠子

为了节省计算,分词器倾向于把常见片段合并。人看到的是连续的十个字符,模型最初拿到的却可能是一个或几个编号。每个编号对应词表中的一段文字,再被转换成一组数字进入神经网络。

这有点像你看到“中华人民共和国”时会把它当成一个熟悉名称,而不是每次都从七个汉字重新拼起。整体识别能提高阅读效率,但如果突然追问“第三个字是什么”,你需要把整体重新拆开检查。

模型也会做类似的重建,只是过程并不可靠。2025 年发表在 ACL Anthology 的字符级能力研究发现,模型的嵌入层并没有完整编码 Token 内的字符信息,尤其是首字符之后的信息;字符知识往往要到中间或更高层才被重新构造出来。换句话说,AI 并非完全“看不见字母”,而是需要绕一段路才能把字母找回来。

加载链接预览…

为什么有时又能数对

模型不是固定的查表程序。它可能从训练数据里见过这道著名问题,也可能在推理过程中把单词展开成 s-t-r-a-w-b-e-r-r-y,然后完成计数。不同模型、不同提示方式甚至同一模型的不同生成过程,都可能给出不同结果。

因此,“模型数不清字母”不能被简化成“模型不知道拼写”。更准确的说法是:字符级操作并非大多数语言模型的原生强项,它们要从 Token 表示中恢复字符,再执行位置或计数任务,链条越长,出错机会越多。

类似问题还包括:

  • 判断两个词是否押韵;
  • 把一句话每隔三个字符插入符号;
  • 反转一个陌生单词;
  • 精确统计某个汉字或标点出现几次;
  • 处理长串编号、序列号和无规律密码。

中文并不天然更容易或更难

中文常以单字或常见词组切分,但具体方式取决于模型使用的词表。同一句中文在不同分词器中可能变成不同数量的 Token,生僻字还可能被拆成更细的字节表示。因此,不能用“一个汉字必然等于一个 Token”来估算成本,也不能断言中文一定比英文更费 Token。

真正影响结果的是词表、文本常见程度和分词算法。常见表达通常更容易得到紧凑表示,混合语言、生僻字符和长编号则可能被切得更碎。

遇到字符题,怎样让 AI 更可靠

最有效的办法不是反复强调“认真一点”,而是把隐藏步骤显式化。例如要求模型先把单词按字符分隔,再标出目标字母的位置,最后计数。这样可以把一次模糊的整体判断变成几个可检查的小步骤。

如果结果关系到代码、财务或数据清洗,最好直接使用确定性工具:让程序遍历字符串、使用正则表达式或调用计算器。语言模型适合解释规则和生成代码,却不该替代能精确执行规则的程序。

strawberry 难题真正有趣的地方,不是嘲笑 AI 连字母都不会数,而是提醒我们:流畅的语言能力与精确的符号操作是两种不同能力。模型读懂了大意,不代表它在任何时候都把每个字符握在手里。

KEEP READING