AI 审核
AI 评估会自动检查本地化引擎生成的译文。在仪表板中,AI 评估称为测量项,位于 Radar → 测量项下。两者只是名称不同,含义相同。每个测量项都会针对译文回答一个问题,给出通过或不通过的结论,或 0 到 100 分的评分,并解释原因。AI 评估在翻译完成后异步运行:不会阻塞翻译、修改译文,也不会决定译文是否发布。
工作原理#
每次本地化完成后,Radar 都会将其记录为一个 localization.completed 事件,包含原文、译文、源语言区域、目标语言区域、引擎和请求上下文。凡是针对该事件类型运行且筛选条件匹配的测量项,都会将一次评估加入队列。评估结果会与对应的事件一起存储。
引擎生成的译文不设单独的评估器资源。同一组测量项也可以检查从已连接的来源收集到的译文变更,例如 GitHub 仓库或 Zendesk 帮助中心。下文介绍的编辑测量项正是以这些变更为依据。
打开雷达 → 测量后,默认显示内置选项卡;您的测量则列出由您组织编写的测量。两个选项卡都会列出每项测量适用的事件类型、值类型、语言、已测量的事件数量,以及是否已启用。
内置测量项#
Lingo.dev 定义每个内置测量项的计算内容和适用的事件类型。您的组织决定是否启用,以及选择哪些事件。
| 测量项 | 回答的问题 | 运行对象 |
|---|---|---|
| Glossary adherence | 相关术语表术语在译文中的采用比例 | 已完成的本地化 |
| Rule adherence | 适用规则在译文中的遵循比例 | 已完成的本地化 |
| MQM | 根据模型列出的错误计算的 0 到 100 分评分 | 已完成的本地化 |
| 编辑率 | 是否有人修改过译文 | 译文创建和更新 |
| 编辑距离 | 文本改动的比例,以百分比表示 | 译文创建和更新 |
| 编辑模式 | 一次变更涉及哪些编辑类型 | 译文创建和更新 |
要启用某个测量项,请在 Radar → 测量项中打开它,选择要检查的语言、源语言、引擎和采样比例,打开已启用开关,然后选择保存更改。内置测量项无法编辑或删除。术语表遵循度和规则遵循度也可以按引擎启用,参见为引擎启用 AI 评估。
Glossary adherence #
检查译文是否采用了引擎使用的术语表术语。检查会筛选出目标语言区域匹配、且源文本出现在原文中的术语,评判模型再为每个术语返回一项判定。自定义翻译(例如 "Deploy" → "Bereitstellen")可以自然地发生词形变化;不可翻译的术语(例如 "OAuth")必须保持不变。同一术语的条目存在冲突时,遵循其中任意一条即可。
分数为返回的判定中标记为已采用的比例。如果原文没有适用的术语表术语,结果为 N/A。
Rule adherence #
逐条独立评估引擎针对目标语言区域使用的规则,判定为已遵循、未遵循或不适用。如果引擎使用三条规则,评判模型就会返回三项判定,每项都附有各自的理由。
Rules 曾被称为 instructions
仪表板、AI 评估器选项卡中的开关和 Radar 都将它们称为规则。REST API 仍通过 /instructions 提供单条规则。
分数为适用规则中已遵循规则的比例。不适用于内容的规则不计入评分,例如,译文只包含产品名称时,正式称谓规则就不适用。如果没有适用的规则,则不产生分数。
这两项检查读取的是检查运行时引擎的术语表术语和规则,而不是引擎生成译文时所用内容的快照。
MQM#
MQM 只要求模型列出译文中的错误,不要求模型评分。每项错误都注明有问题的具体词语、所属的 MQM 核心维度(准确性、术语、语言规范、风格、语言区域惯例、受众适宜性、设计与标记,共七个维度)、严重程度,以及一行问题说明。如果事件指定了引擎,模型还会看到该引擎针对该语言的品牌语调、规则,以及原文使用的术语表术语。
分数根据这份错误列表计算得出。如果某项错误所指的词语未出现在译文中,该项错误会被剔除。其余错误按严重程度赋予权重:中性为 0、轻微为 1、重大为 5、严重为 25,再将总分按每 100 个原文词归一化:
max(0, 100 − 100 × summed error weights / source word count)100 分表示没有错误,同一公式也用于计算各维度的分数。对于不以空格分词的文字,如中文、日文、韩文和泰文,每个字符计为一个词。原文没有词时,结果为 N/A。
编辑率、编辑距离和编辑模式#
这三项会将译文变更与字符串的上一版本进行比较。如果译文由 Lingo.dev 写入,例如 Zendesk 帮助中心同步,或通过 GitHub App 提交译文、通过 CLI 推送译文的仓库,则会对 Lingo.dev 写入的每个版本给出一次结果,并对人工修改该版本的变更再给出一次结果:
- Lingo.dev 写入的版本判定为未变更:编辑率为
false,编辑距离为 0。 - 紧接在 Lingo.dev 写入版本之后的人工修改版本会与该版本比较:给出编辑率
true、变更的编辑距离及编辑模式。 - 后续的人工编辑、还原为 Lingo.dev 的文本,以及除空白字符外未改动 Lingo.dev 文本的变更,结果均为 N/A。
因此,每个 false 代表一条由 Lingo.dev 写入的译文,每个 true 代表一条经人工修改的译文。Lingo.dev 写入的 100 条译文中有 5 条被修改,编辑率就是 5%。
在 探索中,为布尔值选择平均值,即可直接得出该比率:Lingo.dev 生成的每条译文只计入一次,有人修改过则记为通过,无人修改则记为未通过,修改不会重复计入。修改会计入原译文所属的时间段,因此,随着人们编辑近期某一周生成的译文,该周的比率可能会上升。
编辑率会在比较前去除首尾空白字符,并合并内部连续的空白字符,因此 Save changes 和 Save changes 视为未变更。编辑距离为原始文本之间的 Levenshtein 距离(插入、删除和替换的次数),除以较长文本的长度,再乘以 100。文本过长、无法比较时,结果为 N/A。结合这两项结果,可以区分频繁的小幅修正和偶尔的重写。编辑模式会将变更归入语体、用词、术语、语序调整、语法、标点、增译、漏译、误译和格式等类别。
这三项都不判断修改后的措辞是否更好,也不衡量耗时。
为引擎启用 AI 评估 #
引擎的 Reviewers 选项卡包含两个部分:
自动评估为术语表遵循度和规则遵循度各提供一个开关。打开开关会将引擎添加到对应的内置测量项,并启用该测量项;关闭开关则会移除该引擎。测量项的语言和采样设置保持不变。当内置测量项对所有引擎运行时,每个引擎的开关都显示为开启。关闭某个引擎的开关后,系统会保存当前其余引擎的列表,因此之后创建的引擎只有加入列表后才会接受 AI 评估。如果您的套餐按 AI 评估次数计费,此处会显示按次计费及费率。
建议中包含引擎建议的开关。引擎建议会针对自定义测量项的低分结果采取行动,而不是生成这些结果。
MQM 和自定义测量项不在此选项卡中。请在 Radar 中启用 MQM,并在自定义测量项的条件中选择引擎。
自定义度量项 #
自定义测量项将您的某项质量要求明确为可检查的标准,例如保留限定条件、遵循品牌语调要求,或清楚区分两个产品概念。自定义测量项归组织所有。
命名并选择结果类型
取一个易于识别的名称。在值下,选择通过或不通过以获得二元判定,或选择 0 到 100,使用可自行定义中间值含义的评分尺度。如果需要让评判模型能够返回 N/A,请保持允许不适用开启。
选择触发条件和语言
表单默认将已完成的本地化设为触发条件,用于对引擎生成的译文进行 AI 评估。不选择任何语言即表示包含所有目标语言。
创建后缩小范围
选择 创建测量。测量保存后,该条件处于启用状态。在测量的 常规 选项卡中,可按源语言、引擎或样本缩小条件范围,也可通过 运行于 下的 选择事件 添加其他事件类型。如果没有已连接的集成发送该测量所针对的事件类型,选项卡会在 运行于 下给出提示,并提供 设置 → 集成 的链接。
通过或不通过的结果汇总为通过率,75% 表示有评估结果的 4 条译文中有 3 条通过。0 到 100 的结果汇总为平均值。百分比表示提示词所定义尺度上的数值,而不是译文正确的概率。
选择哪些译文接受 AI 评估#
每个条件及每个内置测量项的设置,都用于缩小相应类型的事件范围:
| 筛选项 | 选择范围 |
|---|---|
| 语言 | 目标语言区域。任意语言选择所有目标语言区域 |
| 源语言 | 源语言区域。任意源语言选择所有源语言区域 |
| 引擎 | 需要对其译文进行 AI 评估的引擎。任意引擎也包括之后创建的引擎 |
| 采样 | 每个事件,或符合其他筛选条件的事件的 50%、25%、20%、10%、5% 或 1% |
选择保存更改以应用设置。语言区域的选择遵循语言区域层级,而非精确文本匹配:fr 也会选中 fr-CA,而 fr-CA 不会选中 fr-FR。记录中未指定引擎的请求,不会匹配限定了引擎的条件。
采样结果由事件和测量项共同确定,因此同一事件再次接受评估时,在给定的采样设置下,是否被选中的结果保持不变。批次较小时,实际采样比例可能与配置的比例不同。
所选类型的事件即使未通过选择器,也仍会返回结果:N/A。结果的理由以“条件未满足”开头,并注明对应的选择器。此类结果不计费。计算质量指标时,不要将这些结果计入分母;但在说明有多少翻译量接受了 AI 评估时,应将其考虑在内。
已启用开关会同时开启或关闭一项测量的所有条件。关闭后,后续的 AI 评估将停止;已进入队列的任务仍可能完成。
编写指令 #
提示词是自定义测量的核心,用于明确告诉评判模型要检查什么。请将其写成具体、可验证的标准。
好的指令#
通过或不通过:
Check whether all HTML tags in the source text are preserved
exactly in the translation. Tags must not be added, removed,
modified, or reordered. Pass if all tags are preserved, fail
if any tag is missing or altered.0 到 100:
Rate the fluency of the translation on a scale of 0-100.
100 means a native speaker would find it completely natural.
0 means it reads like machine output. Deduct points for
awkward phrasing, unnatural word order, or overly literal
constructions.什么样的指令才算好#
- 具体标准 - 明确定义什么算通过、什么算不通过,或 0 和 100 分别代表什么
- 可观察的结果 - 评判模型应能通过阅读文本作出判断,而不必猜测意图
- 每项测量只关注一个问题 - 将多维度的质量检查拆分为独立的测量
- 何时不作判断 - 开启允许不适用后,请说明标准在什么情况下不适用,避免将与标准无关的翻译和缺乏判断依据的翻译混为一谈
在依赖新测量的结果评估大量翻译之前,先用你能检查的译文进行测试,既要包含已知错误,也要包含可接受的改写。
N/A 结果#
开启允许不适用后,评判模型可以返回 N/A,而不必给出判定或分数。例如,对不区分正式与非正式称呼的语言进行正式称呼检查时,就可以返回 N/A。N/A 结果不计入平均值和通过率,既不会拉低分数,也不会抬高分数。关闭此选项后,评判模型必须给出通过、不通过或分数。无论此选项如何设置,未满足条件的事件都会直接返回 N/A,不会提交给评判模型。
查看结果#
每个结果都附有理由;如果有依据支持,还会提供修改建议。
- 雷达 → 日志 → 测量项列出所有评估结果。按测量项和值筛选,再打开其中一条,查看其值、推理过程、建议及评判器的请求。
- 引擎的日志选项卡为每个翻译请求提供一个 AI 评估列。该列取每项自定义测量的最新结果计算平均值,将通过计为 100、不通过计为 0,并排除 N/A。如果所有结果都是 N/A,则显示 N/A;如果没有结果,则显示未评估。术语表遵循度、规则遵循度和 MQM 不计入此列。
- 报告在 Radar 概览和 Explore 中以图表展示结果随时间的变化。
如果引擎翻译的自定义测量结果为不通过或低分,也可以触发引擎建议。结果本身不会改变翻译。
对已有翻译进行 AI 评估#
今天启用的测量会分析新事件。要将其应用于已收集的事件,请打开该测量的回填选项卡,选择一个时间区间。上方的已测量会显示该区间内已有测量结果的事件数量,包括总数和各个来源的数量,例如某个代码仓库显示“1,180 / 7,600”。日期下方会按事件来源(各个 GitHub 代码仓库、Zendesk 帮助中心、Crowdin 项目和 Lingo.dev),以及该测量已启用条件所对应的事件类型,统计区间内的事件数量,让您了解回填将读取哪些事件。回填既可以只测量尚无结果的事件,也可以重新测量整个区间,替换该测量在区间内的原有结果。重新测量前,请保存比较时需要用到的定义和结果。
审核模型#
评估模型不由你选择。术语表遵循度、规则遵循度、MQM、编辑规律和自定义测量均由平台指定的模型评判,该模型的配置独立于引擎使用的翻译模型。编辑率和编辑距离的计算则不使用模型。
修改或移除测量#
在自定义测量的常规选项卡中,编辑其提示词、名称、值类型、允许不适用设置及条件,然后选择保存更改。修改标准会改变后续结果的含义,因此请将先前的定义与用于比较的结果一并保留。
删除自定义测量会移除其定义和条件。已记录的结果仍会保留,显示为未知测量,但不再计入引擎的 AI 评估列。如果希望停止后续的 AI 评估,同时保留定义,请关闭该测量,而不是删除它。
通过 MCP 管理测量#
如果你使用 Lingo.dev MCP server,你的 AI 编程助手可以列出、创建和更新测量,设置测量条件,开启或关闭测量,以及读取测量结果:
"Create a pass-or-fail measurement on completed localizations
that checks whether HTML tags are preserved in translations.""Add a 0 to 100 fluency measurement for English to German
translations from the docs engine, sampling 50% of them."