UPTools UPTools
文本 主笔:工具匠

简繁转换为什么老出错?「一简多繁」与词组级转换

上周有个运营同事跑过来吐槽,她把一份简体产品文案用某个在线工具转成繁体,发给香港的合作方,结果被人家截图发回来嘲笑:「你们这头发是长在头上的,还是发出去的?」她一头雾水,打开转换结果一看,「头发」被转成了「頭發」。

「發」是发财的发,「髮」才是头发的发。一个简体字「发」在简化时合并了两个完全不同的繁体字,纯字表一对一映射根本判断不出来。

这事坑过的人不少。下面把根因讲清楚。

一简多繁是什么

简化汉字那会儿,为了少写笔画,做了一件偷懒的事:把读音或字形相近的几个繁体字,合并成一个简体字。于是出现了「一简多繁」这个怪现象,一个简体字在还原成繁体时,可能对应好几个不同的字,到底用哪个,得看语境。

举几个最常踩的:

  • →「發」(发财、发展)或「髮」(头发、理发)
  • →「幹」(干事、才干)、「乾」(干燥、干涸)、「干」(干涉、相干)
  • →「面」(面对面、表面)或「麵」(面条、吃面)
  • →「後」(以后、后面)或「后」(皇后、太后)
  • →「裡」(这里、里面)或「里」(公里、邻里)
  • →「鬥」(战斗、斗争)或「斗」(北斗、一斗米)

每一个字单独拎出来,转换器都能蒙对一半,蒙错一半。

典型翻车现场

把这些字塞进常见词里,就能看出纯字表转换有多离谱:

简体原文正确繁体字表转换(错)错在哪
头发頭髮頭發把头发的「髮」当成了发财的「發」
干涸乾涸幹涸把干燥的「乾」当成了才干的「幹」
吃面吃麵吃面该用面条的「麵」,结果没转
皇后皇后後后该用「后」,结果套上了以后的「後」
这里這裡這里该用里面的「裡」,结果没转

最后两个特别要命。「吃面」转成了「吃面」,看上去啥也没变,但繁体里根本没有「面」表示面条这个用法,港澳台读者一眼看出来是机翻。「这里」转成了「這里」,里外不分,同样露馅。

为什么纯字表会错

纯字表转换的逻辑长这样:建一张 { '发': '發', '干': '幹', '面': '面', '后': '後' } 的对照表,然后遍历字符串,逐字替换。

问题显而易见。这张表只能存一个对应关系,存了「发→發」就转不了「髮」,存了「发→髮」就转不了「發」。两个字必须二选一,结果就是无论选哪个,都有一半场景出错。

「面」和「后」更坑,因为它们的某一个繁体形式就是字本身(「面」的「面对面」用法、「后」的「皇后」用法)。字表里要么写「面→面」(等于没转),要么写「面→麵」(把面对面也转成麵麵),两种都不对。

逐字替换丢失了语境信息,而判断该用哪个繁体字,靠的恰恰是语境。单看一个「发」字,机器没法知道这是头发还是发财。

词组级转换怎么解决

正解是先查词组,再查单字。流程大致是:

  1. 维护一张词组词典,里面存的是「头发→頭髮」「发财→發財」「干燥→乾燥」「干涉→干涉」这类成对的短语。
  2. 转换时,先在原文里做最长匹配,找到词组就用词组的结果。
  3. 词组没命中的单字,才落到单字对照表。

这样「头发」被词组词典截胡,转成「頭髮」;「发现」命中另一个词组,转成「發現」。单字「发」如果既不在任何词组里,按默认规则处理(通常会偏向高频用法)。

OpenCC(开放中文转换)就是这么做的,它内置了几万条词组词典,是业界事实标准。绝大多数靠谱的简繁转换库底层都是 OpenCC 或者它的衍生版本。如果你自己在写转换逻辑,别想着自己攒字表能搞定,直接用 OpenCC 的词库。

台湾繁体和香港繁体的用词差异

就算字符级全转对了,还有一层坑:用词。同样是繁体,台湾和香港叫法不一样,跟大陆更不一样。

  • 软件(大陆)→ 軟體(台湾)/軟件(香港)
  • 计算机(大陆)→ 電腦(台湾、香港)
  • 网络(大陆)→ 網路(台湾)/網絡(香港)
  • 激光(大陆)→ 雷射(台湾)/激光(香港)
  • 屏幕(大陆)→ 螢幕(台湾)

所以「软件工程师」转成台湾用词是「軟體工程師」,转成香港用词是「軟件工程師」,不是把「软」字换成「軟」就完事。OpenCC 里针对台湾和香港分别有独立的词库(TWHK 变体),就是为了处理这种差异。严格的本地化,必须同时做字符转换和用词转换,否则给台湾用户看「軟件」,一样会觉得别扭。

实操

要把一段简体文本稳妥地转成繁体,别用只支持字表的工具。可以直接丢进 UPTools 简繁转换工具 试一下,多拿几个含「发」「干」「面」「后」的句子对比,看会不会把「头发」转成「頭發」。如果会,说明它底层就是一张字表,写正经文案的时候慎用。文本全部在浏览器本地处理,不上传任何内容。

三句话总结

简繁转换的真正难点不是字对字,而是「一简多繁」,一个简体字对应多个繁体字,得靠语境判断。纯字表一对一映射必然出错,把「头发」转成「頭發」是它绕不过去的坎。可靠方案是词组级转换,先查词组词典,词组没命中再退回单字,OpenCC 是事实标准。

相关文章