文章

Token?词元?:为什么一个专业术语的翻译能引发这么大的社会争议|语言学习

Token?词元?:为什么一个专业术语的翻译能引发这么大的社会争议|语言学习

“词元”这个译名,最近被正式确立为 token 在人工智能领域的中文名。当选的理由如下:“词”点明语言场景,“元”传达基本单元之意,合在一起,准确表达了 token 作为“语言基本语义单元”的本质。

这个理由不是没有道理。在分词器的语境里,说“这个词被切成了三个词元”,读者大致能猜到意思。但如果把“词元”拿到分词器之外单独使用,违和感就出来了:它太像一个固定的、离散的、不可再分的“原子”,而 token 恰恰不是这样的东西。

这不是吹毛求疵。它触及翻译中一个古老的难题:当一个词在源语言里承载着多重含义和流动范围时,硬给它安一个看似精确的汉字名,究竟是“信”,还是用表面的清晰掩盖了实质的模糊?

含多义故:玄奘的“五不翻”与 token 的困境

一千三百多年前,玄奘在译经时提出一条原则,后人概括为“五种不翻”。所谓“不翻”,不是不翻译,而是不意译,保留原语的音译。

五种情形分别是:秘密故,如“陀罗尼”,咒语保留音译;含多义故,如“薄伽梵”一词含六种含义,汉文里找不到一个词能同时装下;此无故,如“阎浮树”,中夏没有这种树,没有对应物可译;顺古故,如“阿耨菩提”,意译是“无上正等正觉”,但自摩腾以来一直存梵音,约定俗成,不必另起炉灶;生善故,如“般若”,译成“智慧”分量太轻,保留原音更能让人生敬。

这五条里,和 token 关系最直接的是第二条:含多义故。

“薄伽梵”在梵文里有六种含义,汉文没有一个词能同时承载。译出其中一层,就丢掉另外五层。token 的处境非常相似。它在编程里是词法分析切出的符号;在认证系统里是凭证、令牌;在日常英语里是“标记”“信物”“代币”;到了大语言模型里,它又变成文本被切分后得到的离散单元。这些含义共享一个模糊的内核——“一个用来占位或标记的东西”——但这个内核本身拒绝被精确界定。译成“词元”,只锁定了“语言模型里的那个 token”,而且锁定得并不准确;编程里的 token、认证里的 token,都不可能叫“词元”。

玄奘的处理方式是:既然一个汉字词装不下,就不装,保留原音。这不是偷懒,是承认范围。

“元”字的陷阱:token 的范围是统计出来的

“词元”这个译名最核心的问题,在“元”字上。

“元”在中文构词里有一种很强的暗示:基本、初始、不可再分。元素、元胞、元数据,都带着这层意味。“词元”的论证也正是沿着这条线展开的:它是“基本离散符号单元”,所以叫“元”。

但 token 不是这样工作的。以现代大模型普遍使用的 BPE 分词为例:算法从字节开始,反复统计相邻片段在语料中共同出现的频率,把频率最高的一对合并成新单元,再继续统计、继续合并,直到词表达到预设的大小。也就是说,一个 token 的范围,是由训练语料的统计分布和词表大小这个超参数共同决定的。同一个字符串,在中文语料和英文语料上被切开的位置可以完全不同;换一个模型,切法又变。它没有一个先验的、语言学意义上的“最小单位”地位。所谓“元”,描述的是一种并不存在的固定性。

这还不是最要紧的。token 早已越过了纯文本的范围。在图像、语音乃至更一般的多模态模型里,输入被离散化之后,同样以 token 序列的形式进入计算。这时候再说“词元”,连“词”这个前缀都开始勉强了。有论者因此主张用“符元”——“符”对应符号,不绑定语言模态,更接近 token 作为“离散符号单元”的结构本质。这个主张是否正确可以再讨论,但它至少暴露了“词元”的一个真实弱点:它的适用半径,比 token 本身窄得多。

换句话说,“词元”在“分词器”旁边能站住,是因为“分词”这个动作替它兜住了底:读者会自然理解为“被分词出来的单元”。一旦离开这个搭配,“词元”就要独自承担“元”字带来的静态暗示,而这种暗示与 token 的实际行为并不吻合。这是语境的补救,不是译名本身的严谨。

音译不是退让,是另一种更恰当的选择

反对保留 token 的人常常会说:满屏英文词,妨碍普通读者理解。这个担心是真实的,但它把“理解”和“意译”绑得太紧了。

汉语历史上吸收外来概念,从来不是只靠意译一条路。“咖啡”是音译,“逻辑”是音译,“沙发”“幽默”“休克”都是音译,没有人觉得它们妨碍了理解。音译的代价是语感上的陌生,收益是它能直接让读者初见时明白这是一个汉语里原先没有的词。token 被保留下来,读者第一次遇到时可能需要查一下,但查到的定义是相对而言更加准确的诠释,而不是望文生义导致的偏颇。这比读到一个每个字都认识、连起来却暗示了错误信息的“词元”,要好得多。

如果非要在意译里挑一个,个人认为“词片”比“词元”要略胜一筹:“片”天然带有大小不一的意味,不表达“最小”,也不表达“不可再分”。但它仍然把 token 的“词”这一元素表达出来了。

本文由作者按照 CC BY 4.0 进行授权