为什么“逐句翻译”会出错
设想一个示意的做法:先生成中文播报,再交给翻译模型转成英文。看起来省事,实际上会遇到三类问题。
第一,信息量不对等。中文解说里的“边路传中”,英文可以说cross,也可以说delivery from the wing,取决于当时的语境和习惯,翻译模型并不知道哪种更适合直播。
第二,事实容易在翻译中变形。数字、时间、人名在翻译时被改写、省略或重排,是很常见的错误。我们在 事实正确与表达自然的分层设计 里讨论过,事实应当由数据层提供,如果翻译层可以自由改写,事实约束就被绕开了。
第三,风格差异。同一个事件,中文播报和英文播报的节奏、句长、常用修辞并不相同,把一种语言的句式硬搬到另一种语言里,听起来就像“翻译腔”。
所以我们倾向于:两种语言都从同一份结构化事件出发,各自生成,各自遵循自己的术语和风格,而不是一种语言翻译另一种语言。
术语表:一件必须有人维护的事
双语主播最基础的资产是术语表。它不是一张简单的“中文—英文”对照,至少要包含:
- 标准词条:例如“越位”对应offside,“任意球”对应free kick;
- 别名与禁用词:同一个概念可能有多种叫法,需要规定哪一种是首选,哪些不用;
- 使用条件:某些说法只适用于特定语境,例如英式与美式对同一个概念的说法不同,比赛暂停后的补时,在英式英语里常说injury time或stoppage time,美式语境里对这项运动的称呼本身也不同;
- 发音信息:让语音层知道怎么读,尤其是缩写和数字。
有了术语表之后,文字生成时不是让模型自己选词,而是把相关词条作为输入约束进去,输出后再核对是否使用了首选词。这一做法与实体校验是同一类思路:能查表的,就不要让模型回忆。
人名与球队译名:同一个人只能有一种写法
体育里最容易出现问题的其实是人名。外籍球员的中文译名往往有多个版本,不同媒体各有习惯;同一个人在中英文之间的转换,也可能因为姓名顺序、连字符、重音符号而不同。
为避免播报中前后不一,需要一个实体库:
- 每个球员有唯一的内部编号,所有事件、统计、文本都通过编号引用;
- 每个编号在每种语言下对应一个主写法,同时记录若干别名,用于识别用户输入或外部资料中的不同写法;
- 球队同理,全称、简称、常用昵称分别记录,并规定哪些场合使用哪一种;
- 遇到库里没有的新球员,系统不自行编译名,而是回退到以编号或位置指代,例如“一名外籍中场”,同时提醒编辑补录。
最后一条很重要:不知道怎么译,就先别译,这比创造一个不存在的译名更安全。
战术术语:两种语言并不一一对应
战术术语是最容易“翻译过去、意思变了”的地方。举几个例子说明现象:
| 中文习惯说法 | 英文常见说法 | 不完全对等之处 |
|---|---|---|
| 高位逼抢 | high press | 大体对应,但英文里有更细的分类,如按触发条件区分 |
| 边后卫 / 边翼卫 | full-back / wing-back | 两者职责和位置高低不同,中文需要根据阵型选用 |
| 伪九号 | false nine | 中文是较新的通行译法,使用频率和语境与英文不同 |
| 造越位 | play the offside trap | 中文常用名词化,英文更多用动词短语 |
上表只是举例,用来说明“并非一对一”,不是完整词表。战术描述在不同解说员、不同地区的习惯里也存在差异。遇到这类词,我们的做法是让编辑维护首选说法,并在无法确定时使用更中性、更描述性的表达,例如“压上逼抢”而不是硬套一个专有名词。
同一个数据事件(比如某个位置的球员前压),在中文解说里可能被归纳为“套边”,在英文里则可能被描述为overlapping run。这里的关键是:事件是一份,说法是两套。
播报习惯:语言之外的本地化
除了词,还有习惯。
- 数字与比分的读法:中文读“二比一”,英文读“two-one”或“two to one”,顺序和用词都不同;
- 句长与节奏:中文解说更常用短句叠加,英文解说更常用带从句的长句,语速也不同;
- 称呼方式:中文常以“号码+姓”或全名称呼,英文常直呼姓氏;
- 情绪表达:进球时的呼喊、评价用语,在两种语言里的强度并不一样。
因此双语不只是文字层的事情,语音层也要分别配置:发音词典、语速、重音、停顿,都应该有各自的一套。
中英夹杂的读音问题
现实里还有一种情况:中文播报中夹带外文名字,或者英文播报中夹带中文人名。这类混读对语音合成是个挑战:
- 外文名在中文句子中怎么读,是按原音、按中文习惯译音,还是直接读字母;
- 缩写和数字的读法在不同语言里不一样;
- 句子内部语言切换的地方,语调和停顿是否自然。
这些都无法完全靠模型自己判断,需要在发音词典里明确规定,并且在语音质量评估中特别抽检夹杂语言的句子。
上线前怎么检查一套双语词表
词表建好之后,可以按下面几步做一次举例式的抽检,这是编辑流程上的设想:
- 选取一批典型事件(进球、犯规、换人、判罚复核),让两种语言分别生成播报;
- 统计同一个概念在两种语言里是否始终使用同一个首选词;
- 让熟悉两种语言的编辑逐句检查,标出“翻译腔”和不符合习惯的说法,回填到词表;
- 对人名做专项检查:同一编号的球员,在所有输出里是否只出现主写法;
- 对语音做专项检查:夹杂外文名的句子、含数字和缩写的句子,是否读对。
每次赛季更换、球员转会或规则更新后,都需要重复一遍,因为词表是活的。
校验与边界
双语播报的校验,可以在事实层沿用同一套:无论哪种语言,输出中的数字和实体,都要与同一份事件数据核对。术语层面则额外检查:是否使用了首选词,是否出现了词表以外的译名,是否有前后不一致。
也要说清楚边界。术语表覆盖的范围有限,越冷门的赛事、越新的战术词,越容易缺失;不同地区对同一术语的使用习惯不同,并不存在唯一正确答案;此外,我们并没有讨论其他语种,如果要扩展,每增加一种语言,都要重做一遍词表、译名和发音。这里给出的是设计思路,并不代表已经覆盖了某个联赛或语种。
同时,语言偏好本身也可以被视为一种用户偏好,这与 球迷个性化 中讨论的思路相通:用户选择的语言、术语深浅(是否需要解释“越位”这类基础词)、播报详细程度,都可以成为个性化的一部分。