翻译验收

术语表不是查找替换:先界定词边界和例外

解析术语表匹配中词边界与大小写陷阱,提供基于Python标准库re的校验示例及验收清单,说明如何结合OmniDoc术语功能进行翻译质量评估。

阅读文本 / Reading text
本文使用合成样本演示处理方法。代码已通过隔离环境中的示例检查;这不代表对所有真实文件或产品效果的保证。处理重要文件前,请保留原件,并按文中的边界与验收项复核。 术语表里有 API ,不代表文档中每一个包含这三个字母的单词都应该被替换。 APIs 是词形变化, api_gateway 可能是代码标识符,中文术语又不能照搬英语单词边界。先找到候选,再决定是否翻译,比全局替换更稳妥。 每种语言需要自己的匹配约定 本文给出一个刻意保守的英语示例:独立的 API 忽略大小写匹配,字母、数字和下划线相邻时不匹配。这个约定不是自然语言的完整分词规则,也不负责复数、所有格或上下文消歧。 用接近但不该命中的字符串测试 import re def english_candidates(text, term): if not term: raise ValueError("empty term") pattern = re.compile(r"(?<!\w)" + re.escape(term) + r"(?!\w)", re.IGNORECASE) return [(m.start(), m.end(), m.group()) for m in pattern.finditer(text)] text = "API and api; APIs, rapid, api_gateway." found = english_candidates(text, "API") assert [item[2] for item in found] == ["API", "api"] assert all(text[start:end] == raw for start, end, raw in found) assert english_candidates("api_gateway", "API") == [] assert english_candidates("APIs", "API") == [] assert english_candidates("(API)", "API")[0][2] == "API" try: english_candidates(text, "") except ValueError: pass else: raise AssertionError("empty glossary term accepted") 匹配候选不是替换命令 代码保留位置和原文,不直接修改文本。这样审校能区分正文、链接和代码区域,也能看到是否应该保留原词。HTML 或 Word 里的候选位置还需要映射到结构节点,不能只拿整篇拼接字符串的位置回写原文。 场景 本例选择 进一步策略 独立 API 作为候选 按术语表和上下文审查 APIs 不匹配 明确维护词形规则 api_gateway 不匹配 标识符一般受保护 中文术语 不声称覆盖 采用适合中文的分词或规则 大小写不敏感也有边界 Unicode 大小写和语言习惯并不总是简单的一一对应。本文面向简单英语术语,不应推广成所有语言都正确的术语识别器。大型术语表还需解决重叠候选、最长匹配和版本管理,避免同一段落反复产生冲突建议。 让术语表成为可核对的约定 OmniDoc(产品入口) 官网介绍了术语表功能。评估时可以选取含正文、代码标识符与词形变化的脱敏样本,对照译稿看术语是否落在正确语境。术语表的价值不是机械替换更多词,而是让团队的用词约定更稳定。 参考: Python re 。 - 1 -
更新于 2026-10-08