casel

笔记立场6 分钟

这套底层从上到下都是英文优先

不只是训练数据。分词器、评测、文档、报错信息,还有「该打什么字」这类口口相传的经验。

训练数据偏向英文,这件事人人都知道。 谈语言覆盖时最先被提到的就是它,而且确实如此。但这也是整个问题里最没意思的一层,因为只有这一层拿得到预算。它下面的几层,很少拿得到。

这个假设藏身的五个地方

  • 分词器:照着拉丁字母调出来,于是别的文字体系要为同样的意思付更多 token。
  • 评测集:决定一个模型能不能发布,而它们压倒性地是英文的。
  • 文档和提示词指南:教的是一种只存在于英文里的提问方式。
  • 报错信息:偏偏在用户最迷糊的时候切回英文。
  • 口口相传的经验:哪种说法管用的那些窍门,换一种语言就带不过去。

单看每一条都只是擦伤。合在一起,它们决定了谁会觉得这个工具能用。一个产品可以在技术上支持多语言,用起来却仍像在英文应用外面套了一层翻译壳——而用户大概三十秒就能分辨出来。

我们为此做了什么

我们把语言当成产品的表层,而不是一个 locale 文件。 也就是说,界面、模型的行为和支持,都跟着你进来时用的语言走。也就是说,我们自己的评测跑在我们声称支持的那些语言上,而不是先跑英文、事后再翻一遍。还意味着,我们优先去追那些只在拉丁字母之外才会现形的毛病。

这比「做个英文产品再加语言切换」要慢。但也只有这个版本值得做,因为切换那套恰恰在最要紧的地方失灵——就在有人正试着描述自己在乎的东西的那一刻。

一个只对拿来测试的那批用户最好用的工具,永远会把其余所有人叫做长尾。

在这里没人会说的语言上,我们一定会做错某些部分。我们的打算是把「测过什么」在公开场合讲清楚,让出错这件事看得见,而不是被受影响的人默默扛下来。