Skip to main content

术语表提示词:几乎免费的 12 个百分点

玛丽亚·索科洛娃2026/9/227 min read
术语表术语管理提示词工程机器翻译一致性

你建好了术语表,也把它挂到了任务上。模型还是在同一份文档里,把关键术语翻成了三种不同的说法。

「挂上术语表」和「让术语表被遵守」是两个不同的问题,而大多数流水线只解决了第一个。好消息是,第二个问题异常便宜:提示词里的一条明确指令,值大约 12 个百分点的术语准确率(arXiv:2605.14679)。在翻译工程里,很少有别的改动能以如此低的代价换来这样的回报。

本文讲清楚:提示词里该写什么,为什么最直觉的写法效果反而差,以及如何验证那些真正要紧的术语。

为什么光有术语表守不住

LLM 是一台「流畅度机器」。放任不管,它就会变换措辞——正是这一点让它的输出好读,而这恰恰是你在合同、规格书或登记簿摘录里最不想要的。

有三种反复出现的失败模式。

同义词漂移。 术语第一次译对了,文档后半段却被改写成别的说法。读者看到两个词,会合理地以为是两样东西。

形态逃逸。 模型用了你的术语,但为了句子通顺把它改了形。在形态丰富的语言里这往往正确且必要——但有时也会悄悄把一个法律名称变成毫无意义的东西。

礼貌性替换。 模型觉得你的术语别扭,于是悄悄「改进」了它。这是最糟的一种,因为结果读起来比正确答案更顺。

这些都不是理解上的失败。模型读懂了,只是没人告诉它:在这里,一致性优先于流畅。

换来那 12 个百分点的指令

大多数流水线上线的版本是这样的:

术语表:"интеллектуальная собственность" = "intellectual property"

这是一条提示。模型会把它当作建议,因为里面没有任何内容说明并非如此。

实测更好的版本明确说了三件事:严格照用、每次都用、宁可牺牲流畅也要用术语表。

术语(必须遵守):
- "интеллектуальная собственность" → "intellectual property"
- "исключительное право" → "exclusive right"

规则:
- 严格按给定形式使用目标术语,每次出现都要用。
- 在整份文档中保持一致——不要为了文风变换措辞。
- 如果术语在语法上放不进去,请调整它周围的句子,而不是调整术语本身。

最后一条是最常被省略的,而它承担了真正的工作。没有它,模型面对一个冲突——你的术语,还是一个通顺的句子——它会通过扭曲术语来化解。明确告诉它哪一边可以让步,这个歧义就彻底消失了。

按片段给提示,而不是按文档

还有第二项结构性改进,完全免费:只挂上与当前片段相关的术语条目,而不是把整份术语表塞进每一次调用。

每个提示词里塞 400 条术语既昂贵,更糟的是嘈杂——模型得在 398 条无关条目中找出那两条要紧的。先把术语与片段做匹配,只发送命中的条目,你会得到一份简短而精准的清单:

术语表(必须使用这些译法):'ОГРН' → 'OGRN', 'ЮЛ' → 'legal entity'

我们自己的流水线按片段、按批次这样做,差别并不细微:一个只点名两个术语的片段提示词,命中这两个术语的可靠性,远高于把它们埋在术语墙里的写法。

批量翻译时,映射关系必须挺过批处理

如果你按批次翻译片段——为了成本,你也应该这么做——那么按片段的提示必须始终附着在各自的片段上。很容易写出一个把所有提示汇总到顶部的批处理提示词,也很容易让模型随后把第 3 个片段的术语用到第 7 个片段上。

把它们和片段一起编号:

请翻译每个编号片段:
[0] Сведения об основном виде деятельности
[1] ОГРН 1132537002553

分片段术语表(必须使用这些译法):
  [1]: 'ОГРН' → 'OGRN'

编号把每条提示绑定到它的片段。没有编号,术语表就是一袋词;而一个在错误时刻伸手进这个袋子的模型,会产生看起来像幻觉的术语错误。

用回译验证要紧的术语

提示词能提高命中率,但不能保证。对于出错代价高昂的那一小撮术语——法律名称、产品名、监管类别——请加一道验证。

回译是便宜的做法:把译文片段翻回源语言,看关键术语是否挺过了这趟往返:

  1. 源文:исключительное право
  2. 译文:exclusive right
  3. 回译:исключительное право

当第 3 步返回别的东西时,你就得到了一个值得人工过目的信号。这是筛子,不是证明:回译有已知的盲区,若错误是对称的,一个错误术语也可能干净地走完一圈。但它能抓住替换和漂移这两种最要紧的失败模式,而代价只是对一份简短术语清单多做一次调用,而不是对整份文档。

把它留给你标记为关键的术语。对整份文档跑一遍,只会让成本翻倍,去核对那些根本没人会质疑的内容。

术语表与翻译记忆库的区别

两者解决的是不同的问题,这里值得说精确,因为把它们混为一谈的流水线,往往两样都做不好。

术语表作用于术语层面,是规定性的:这个词必须这样译。它在片段内部生效,术语出现在哪里就管到哪里。

**翻译记忆库(TM)**作用于片段层面,依据的是历史:这整句以前就是这样译的,所以复用。它在片段与已批准内容匹配时生效。

TM 的复用——精确或模糊——发生在句子层面。术语表的执行在更低一层,作用于 TM 没有匹配上的句子内部的词。一份文档可以有 80% 来自 TM 复用,剩下 20% 依然需要术语表执行;而一份没有任何 TM 的新文档,同样需要术语保持稳定。

想让术语在句子之间被复用,那是术语表。想让句子被复用,那是 TM。

要点回顾

  • 挂上的术语表是提示;被执行的术语表是指令。 写明「必须」,写明「每次出现」,并写明术语在语法上放不进去时该怎么办。
  • 人们省略的那一行,恰恰是化解冲突的那一行。 告诉模型调整术语周围的句子,而不是调整术语。
  • 只发送与当前片段匹配的术语,而不是整份术语表。 简短精准的清单胜过冗长嘈杂的,而且更便宜。
  • 在批处理中让提示与片段保持绑定。 给它们编号,否则一个片段的术语会跑到另一个片段里。
  • 只对关键术语做回译。 它是针对替换和漂移的筛子;对所有内容都跑一遍,只会让账单翻倍而毫无收益。

常见问题

术语表多大之后,提示词方案就不管用了?

限制不在术语表的规模,而在于一个提示词里放了多少条术语。先与片段做匹配、只发送命中项——一份 400 条的术语表完全可用,只要每次调用只看到其中三条。

如果两条术语相互重叠怎么办?

优先取更长的匹配:两者同时出现时,「exclusive right」应当胜过「right」。请在构建提示词之前解决重叠,而不是指望模型自己解决——否则它会在不同片段里给出不同的解决方式。

对必须发生词形变化的术语也适用吗?

适用,而且这正是第三条规则最重要的场合。指示模型调整周围的句子,而不是术语本身。对于术语确实必须变格的语言,请把这些条目标记为可变形并明确说明,而不是让模型去猜「严格照用」是否意味着「永不改变」。

该在机器翻译输出上执行术语表,还是在翻译过程中?

在过程中。译后替换是一件钝器:它会命中其他词内部的子串,破坏与句子的一致关系,也无法区分真实出现和巧合。在翻译过程中执行,能让模型围绕术语构建出正确的句子。

12 个百分点值得多花那些提示词 token 吗?

非常值得。指令每次调用只有几十个 token,而匹配后的提示比完整术语表更短。与重新翻译一份没能通过术语审核的文档相比,这根本不是一个量级的比较。

结语

术语控制是翻译工程中少数几个「小而具体的改动带来大而可测的提升」的地方。指令只有几行,按片段匹配的实现直截了当,回译检查只作用于一份短清单而非整份文档。

你换来的,是「有一份术语表」和「术语表真的被遵守」之间的差别。而对任何需要把文档与原文逐行核对的人来说,这正是拥有术语表的全部意义。

KTTC 在翻译过程中按片段应用术语表,并在按模板处理的文档中保持术语稳定——在那里,一个说法不一致的术语意味着一次被驳回的申报。试用 KTTC,带上你自己的术语表,看看它能存活多少。

We use cookies to improve your experience. Learn more in our Cookie Policy.