AI根本不认字?揭秘它怎么读懂你的话
你有没有发现,AI有个特别气人的毛病——它总拼错你的名字。
我叫「曦远」,它给我回成「西元」。朋友叫「翊宸」,AI直接编了个「意辰」出来。更离谱的是,有时候你名字里有个生僻字,AI直接给你乱码处理。
你以为AI是文盲?不,它连「字」都不认识。
今天咱们就聊聊这个藏在AI背后的「翻译官」——Tokenizer。搞懂它,你就搞懂了AI看世界的方式。
AI看文字,就像你看着一堆编号看报
想象一下,有人给你一份报纸,但上面所有的字都变成了数字。
第1号是「的」,第2号是「了」,第3号是「吃」……整张报纸密密麻麻全是编号。你还得根据这些编号,猜出文章在说什么。
这不是脑洞,这就是AI阅读的真实方式。
当你给ChatGPT发消息时,它并不直接看到你的文字。在你和AI之间,站着一个「翻译官」——Tokenizer。它的工作就是:把你的文字切成碎片,每个碎片对应一个数字编号,然后把这些编号交给AI去处理。
AI从头到尾只见过数字,没见过一个汉字。
所以下次AI叫错你名字的时候,别怪它——它连你的名字长什么样都不知道,它看到的只是一串数字。就像一个只认编号的外星人,你指望它记住每个编号背后对应什么字,偶尔搞混也不奇怪。
从逐字读到碎片化:AI阅读的三次进化
早期的AI,真的是一个字一个字读的。
那时候的模型按字符处理输入,就像你蒙着眼睛用手指点字阅读——每个字单独拿出来,效率极低。读一句「我今天去超市买了三个苹果」,AI要处理15个独立的字符,每个都要单独「理解」一下。
后来有人想了个聪明办法:既然人类是按「词」来理解语言的,那AI也可以按词来切分嘛。
这招对英文很好使。「I love you」天然就能切成三个词。但对中文来说就抓瞎了——中文没有空格分隔词语,「我今天去超市」到底该切分成「我/今天/去/超市」还是「我/今天/去超/市」?这事儿到今天都没完美解决。
2019年,OpenAI在GPT-2里用了一个叫BPE(字节对编码)的算法,算是找到了一个还不错的折中方案。它既不完全按字,也不完全按词,而是自动找出文本里经常一起出现的字节组合,把它们合并成一个整体。
你可以理解为:AI学会了认「偏旁部首」和「常见词组」,不再死磕单个字了。这套方案一直用到现在,成了行业主流。
Token:不是字也不是词,是AI的「视力碎片」
那Token到底是什么?
它不是字,也不是词。它是介于两者之间的「碎片」。
打个比方:想象你要把一篇文章交给一个只认编号的外星人。最笨的办法是逐字翻译,每个字给一个编号——精确但效率极差。更聪明的办法是,把经常一起出现的词组打包成一个编号。比如「人工智能」四个字,如果经常一起出现,就直接打包成第8888号。
Token就是这个打包过程的结果。
一个Token可能是一个字(「的」「了」「是」),可能是一个词(「人工智能」「高质量发展」),也可能是半个字——对,你没看错,有些中文字因为出现频率低,会被切成两半甚至三半。
中文为什么更「贵」?
说到这儿,有个扎心的现实。
同样的意思,中文通常需要更多Token。英文「hello world」可能只需要2到3个Token,但中文「你好世界」可能被切成7到8个Token。一篇3000字的中文文章,大概要消耗4000到5000个Token。
这不是因为中文「差」,而是因为目前主流的Tokenizer主要是用英文语料训练出来的。它对英文更熟悉,能高效地打包英文的常见词组;但面对中文时,很多组合它没「见过」,只能切碎了处理。
而各大AI平台是按Token收费的。
所以,用中文跟AI聊天,确实比英文更贵。不是平台歧视你,是Tokenizer在中间多切了几刀,每一刀都是钱。
BPE算法到底在干嘛?
前面提到的BPE算法,听起来很吓人,其实原理特别简单。
一句话概括:谁经常一起出现,就把谁打包。
想象你有一堆零件,初始状态下每个零件都单独存放。然后你开始观察:零件A和零件B经常一起被使用,那你就把它们粘在一起,当成一个大零件。接下来零件AB和零件C也经常一起用,再粘一次……
不断重复这个过程,最终你会得到不同大小的「零件包」。那些高频出现的组合被打包得很大(一个Token覆盖好几个字),低频出现的就保持很碎(一个字被切成好几个Token)。
这就是BPE。没有魔法,没有玄学,就是朴素的「打包逻辑」。
为什么AI会拼错名字?
现在终于能回答开头那个问题了。
名字,尤其是生僻名字,在训练数据里出现频率很低。BPE算法没见过这些字怎么和其他字搭配,于是就把它们切成更小的碎片——甚至切到单个字节。
碎片越多,AI「看」得就越模糊。
就像你看一张打了马赛克的照片,细节越碎,你越容易认错人。AI也一样,当你的名字被切成七八个碎片时,它就很难准确还原出正确的字,只能根据概率「猜」一个最接近的。
「曦远」变成「西元」,不是AI没文化,是Tokenizer把它切碎了,AI看着一堆碎片,拼了个它觉得最像的。
知道了这些,你能做什么?
理解Tokenizer不只是满足好奇心,它能帮你省钱、提效。
写prompt的时候,空格和标点很重要。在关键词之间加空格,能帮Tokenizer更准确地切分,让AI更精准理解你的意图。写代码相关的问题时,用英文提问通常更省钱——因为代码本身就是英文生态的产物。
另外,不同AI模型的Tokenizer是不一样的。同一段话在GPT-4上可能切成100个Token,在Claude上可能切成80个。所以你写了一段很完美的prompt,换个模型效果突然变差了,可能不是你写得不好,是Tokenizer切法不一样。
想亲自体验一下?推荐两个免费的在线工具:tiktokenizer.com和tokenizer.huggingface.co。把任意文字丢进去,你就能亲眼看到AI是怎么把你的话「碎尸万段」的。试试输入你的名字,看看它被切成了几块——可能会让你笑出声。
未来:中文的Token正在变便宜
好消息是,情况正在改善。
随着中文语料在训练数据中占比越来越大,新一代的Tokenizer对中文的处理效率越来越高。像DeepSeek、通义千问这些国产模型,其中文Token效率已经明显优于早期模型。
理想状态下,未来的Tokenizer应该能做到「语言公平」——表达同样意思的内容,无论用中文还是英文还是阿拉伯语,消耗的Token数量大致相当。
那一天到来之前,至少我们现在知道了:中文用AI更贵的锅,Tokenizer得背一半。
一句话总结
AI能写诗能编程能和你聊哲学,但它认识你的方式只是把文字切成数字碎片——人类用理解来阅读,AI用概率来拼凑,两者之间的鸿沟,才是AI真正的「黑箱」。
你有没有遇到过AI读错你的名字或者乱码的情况?说出来让大家笑一笑(不是),顺便看看是不是Tokenizer在搞鬼😂
夜雨聆风