wenyi文译实时术语表实战:自动抽取专名、检测译法冲突,彻底告别前后不一
【免费下载链接】wenyi将被语言阻隔的作品,带到读者的语言中。Bringing literature into your language.项目地址: https://gitcode.com/gh_mirrors/we/wenyi
wenyi(文译)是一款面向长篇小说的 AI 翻译工具,其核心亮点之一是实时术语表:翻译每完成一批段落,就会自动从原文与译文中抽取人名、地名、称谓等专名,写入术语库约束后续翻译;一旦发现同一原文术语出现了不同译法,立即记录为译法冲突,等你人工裁决——从此彻底告别前后不一。
无论你是用 Web 界面还是 CLI 命令行,wenyi 的术语表都会"边翻译、边积累、边校验",让几百章的长作品始终保持命名一致。
一个术语表要解决的痛点
长作品翻译最头疼的不是翻不出句子,而是同一个角色在第 3 章叫"艾伦",第 40 章变成"阿伦"。传统做法是人工整理一张 Excel 术语表,再祈祷模型每次都遵守。wenyi 的做法是把术语表变成翻译流程的"活零件":
- 自动抽取——不靠你手动整理,模型边翻边把新专名提炼进库;
- 按需注入——每批次只注入本章匹配到的词条,无关术语不占上下文;
- 冲突留痕——已定译法不会被自动覆盖,新译法进入冲突队列等待裁决。
官方对术语库的定位描述得很清楚:它用于约束后续翻译,并为最终审校提供证据。详见 docs/zh/pipeline.md。
自动抽取三步闭环:抽取、对齐、冲突检测
第一步:从已译段落里抽取专名
每翻译完一个批次,GlossaryExtractor会拿"原文片段 + 译文片段 + 现有术语表"调用轻量模型,返回结构化的候选词条:原文(source)、译名(target)、读音(reading)、类型(person/term/appellation/honorific 等)、性别、别名和备注。
抽取不是无脑全量注入——如果传入全书语料,只有出现至少两次的现有词条才会被注入提示词,低频词条保留在库中但不反复消耗上下文,这在 packages/core/wenyi_core/glossary/extractor.py 中实现。
第二步:首次译法对齐
更巧妙的是"历史对齐"机制。当一个新术语此前已在前面章节被翻译过,抽取器会找到该术语第一次出现的原译文对照,让模型判断"库里这条译名"和"当初实际怎么翻的"是否一致:
- 一致 → 词条入库;
- 能判断 → 改用首次译法入库,保证全书口径统一;
- 不确定 →暂缓入库,避免把一个错误的译名固化、污染后续文本。
相关逻辑见 extractor.py 中的 _align_with_first_occurrences。
第三步:冲突检测,绝不静默覆盖
GlossaryStore.upsert_term的裁决规则非常克制(见 packages/core/wenyi_core/glossary/store.py):
| 情形 | 处理 |
|---|---|
| 新术语 | 直接入库(inserted) |
| 译名相同 | 合并别名、补全读音/性别/备注(unchanged) |
| 译名不同 | 保留已确立译法,新译法写入term_conflicts表,词条标记为conflict,等待人工裁决 |
也就是说,自动抽取永远不会偷偷改掉你确认过的译名——所有分歧都摆在明面上。
Web 端管理术语表:搜索、批量操作与冲突裁决
在 Web 端,术语表是独立导航页(前端实现在 apps/web/src/features/glossary/GlossaryPage.tsx),一个表格覆盖全流程:
- 搜索与筛选:按原文、译名或别名搜索,按"人物 / 术语 / 称谓 / 敬语 / 口癖 / 固定表达"六类筛选;
- 增删改:弹窗添加或编辑词条(含读音、性别、别名、备注),支持多选批量删除;
- 导入导出:支持 CSV / JSON 双向导入导出;导入时若与现有词条冲突,会逐条列出,由你选择"覆盖"还是"跳过";
- 冲突裁决:页面底部琥珀色卡片列出所有未解决冲突,每条对比"当前译法"与"AI 建议",点一下保留当前或采纳建议即可,裁决后所有相关冲突自动关闭。
后端对应的 REST 接口在 apps/api/wenyi_api/routers/glossary.py,包括术语增删改查、/conflicts列表与/conflicts/{cid}/resolve裁决、JSON/CSV 导入导出。
⚠️ 小提示:翻译任务运行中术语表保持只读,编辑需先暂停任务,避免写冲突。
CLI 快速排查:三条命令掌握全书译名
偏好命令行的用户,wenyi CLI 提供了完整的术语管理子命令(实现在 packages/cli/wenyi_cli/commands/glossary.py):
uv run wenyi glossary list book.epub # 列出全部已确立译名与状态 uv run wenyi glossary conflicts book.epub # 查看未解决的译法冲突 uv run wenyi glossary resolve book.epub "原文术语" "指定译名" # 裁决并关闭冲突list以表格展示 Source / Translation / Type / Status,状态为conflict的词条一目了然;conflicts逐条打印"现有译法 vs 建议译法(含出现章节)";resolve调用 resolver.py,把最终译法写回术语库并关闭该术语的全部冲突。
这三条命令在 docs/zh/usage.md 的"独立阶段与术语管理"一节有完整说明。
术语一致性还能再进一步吗?
术语表负责"约束未来",而已完成的历史段落怎么办?wenyi 的答案是把术语库作为审校证据:review阶段会用最终术语库全书检查译文中的译名漂移,发现问题可结合--autofix发布修订。人工校阅页面则让你逐段核对原文与译文,逐段确认译名统一。
此外,docs/zh/configuration.md 提供了glossary_scope配置:chapter只注入本章相关术语(默认,省上下文),full注入全量术语表(更严格)。而术语抽取与历史对齐两个操作默认路由到fast档模型,既省成本又保持响应速度。
小结
wenyi 文译的实时术语表把"译名一致"从人工纪律变成了工程机制:
- 📥自动抽取:每批翻译完成后即刻提炼新专名,无需手动维护;
- 🎯首次译法对齐:新词条优先对齐历史首次译法,不确定就暂缓;
- ⚖️冲突留痕:译法分歧不静默覆盖,Web 与 CLI 双端一键裁决;
- 🔍审校兜底:术语库同时作为 Review 证据,历史漂移也能被发现。
从第 1 章到第 500 章,专名自始至终一个译法——这就是实时术语表带给长作品翻译的确定性。
【免费下载链接】wenyi将被语言阻隔的作品,带到读者的语言中。Bringing literature into your language.项目地址: https://gitcode.com/gh_mirrors/we/wenyi
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考