测评 AI 翻译工具,先给同一份原文准备人工参考译文,核对候选译文逐条对齐,再计算 BLEU、chrF 并逐句检查否定、数字、术语及遗漏。SacreBLEU 能把评分设置保存为签名,便于复算;分数表示与参考的文字匹配情况,不能直接证明单条翻译的事实正确。
本文不运行翻译模型,原文、参考和三组候选都由人编写。下面的分数由本地脚本实际计算,只用于说明指标和事实检查之间的区别,不是任何 AI 翻译产品的测评成绩。

准备原文、参考译文和候选
| 编号 | 中文原文 | 人工英文参考 |
|---|---|---|
| 1 | 该模型支持本地推理,不会上传输入文本。 | The model supports local inference and does not upload the input text. |
| 2 | 会议上午九点开始,十一点结束。 | The meeting starts at nine in the morning and ends at eleven. |
这些是虚构教学句子,不对应真实模型或实际会议。参考译文应由人按原文审定,不能直接把其中一个待测工具的答案设为唯一标准。真实任务有多个合理译法时,可以准备多参考或保留独立人工语义审核,避免只奖励与参考措辞相同的译文。
演示中 A 完全复制参考,B 故意把“不上传”改成“上传”、把九点改成十点,C 使用另一种合理表达。三组都只有两条;条数和顺序必须与参考一致,不能把缺失条目静默删掉后再比较。
BLEU、chrF 分别衡量什么
BLEU 主要综合不同长度的词片段匹配,并考虑候选长度;chrF 主要按字符片段计算匹配的 F 分数。SacreBLEU 官方项目说明了可复现评分、分词选项、BLEU、chrF/chrF++ 及版本签名。本例使用标准 chrF,word_order=0,没有额外词级片段。
本例评分对象是英文译文,BLEU 使用 13a 分词;中文原文用于人工语义核对,不进入这里的英文评分。测中文输出时应按任务选择相应分词配置并重新记录签名,不能沿用英文设置把数值与另一篇报告直接比较。
下面计算两条候选组成的语料级分数,不是把单句 BLEU 求平均。短句、单参考和同义改写都会影响匹配数;BLEU 和 chrF 都不是“正确译文占比”,也不是彼此相同的尺度。
安装并运行评分脚本
本例在 Windows、Python 3.11.15、sacrebleu 2.5.1 运行。建议在独立环境安装:python -m pip install sacrebleu==2.5.1。将完整代码保存为 translation_scores.py,运行 python translation_scores.py。
import json
from sacrebleu.metrics import BLEU, CHRF
# Human-written teaching references and candidate translations.
references = [
'The model supports local inference and does not upload the input text.',
'The meeting starts at nine in the morning and ends at eleven.',
]
candidates = {
'A_exact': list(references),
'B_wrong_facts': [
'The model supports local inference and uploads the input text.',
'The meeting starts at ten in the morning and ends at eleven.',
],
'C_paraphrase': [
'The model can run inference locally without sending your text to a server.',
'The meeting runs from 9 a.m. until 11 a.m.',
],
}
bleu, chrf = BLEU(tokenize='13a'), CHRF(word_order=0)
output = {}
for name, hypotheses in candidates.items():
if len(hypotheses) != len(references) or any(not text.strip() for text in hypotheses):
raise ValueError('译文缺失或条数不一致')
output[name] = {
'BLEU': round(bleu.corpus_score(hypotheses, [references]).score, 4),
'chrF': round(chrf.corpus_score(hypotheses, [references]).score, 4),
}
print(json.dumps(output, ensure_ascii=False, indent=2))
print('BLEU_signature', bleu.get_signature())
print('chrF_signature', chrf.get_signature())
本地执行结果:
{
"A_exact": {
"BLEU": 100.0,
"chrF": 100.0
},
"B_wrong_facts": {
"BLEU": 67.613,
"chrF": 83.9317
},
"C_paraphrase": {
"BLEU": 4.5909,
"chrF": 30.4828
}
}
BLEU_signature nrefs:1|case:mixed|eff:no|tok:13a|smooth:exp|version:2.5.1
chrF_signature nrefs:1|case:mixed|eff:yes|nc:6|nw:0|space:no|version:2.5.1
A 与参考完全相同,两个分数都是 100。B 的 chrF 为 83.9317,却有两处关键事实错误;C 的 BLEU 只有 4.5909,主要因为与单一参考措辞差别很大,不能据此断言译文事实更差。这里的人工候选特意用来说明指标局限。
验证时先核对 A_exact、B_wrong_facts、C_paraphrase 均有两项分数,再保存两条 signature。签名说明参考数、大小写、分词、平滑、片段设置和版本;原文、参考及候选本身仍需另行保存,光有签名不能复原测试数据。
评分之外,怎样记录人工错误
| 候选 | 条目 | 原文要求 | 核对结果 |
|---|---|---|---|
| B | 1 | 不会上传输入文本 | uploads 改变了否定事实,应记录为含义反转 |
| B | 2 | 九点开始 | ten 改变时间,应记录为数字/时间错误 |
| C | 1 | 本地推理且不上传文本 | 用 locally 与 without sending 表达,人工检查语义及术语是否适合上下文 |
| C | 2 | 上午九点到十一点 | 9 a.m. 与 11 a.m. 保留时间关系,文字匹配低不等于该关系错误 |
真实表格可记录“原文编号、候选工具/版本、输出、错误类型、证据、严重程度、复核结论”。错误类型至少区分含义错误、遗漏、无依据新增、术语及语言表达。严重程度由你的任务事先约定,不把一次拼写问题和一次否定反转直接当成同等风险。
正式比较工具时,先让条件一致
- 冻结获准使用的测试集、人工参考、术语要求和输出语言;相同原文交给每个工具。
- 保留编号与所有输出。缺失、拒绝或执行失败另列清单,不只对成功译文算分。
- 记录工具与模型版本、提示词、参数和日期;使用同样的评分设置,保存原始分数与签名。
- 让人工核对者依据原文审查候选,条件允许时隐藏工具名,减少品牌预期影响。
- 按否定、数字、专业术语及长句等类型报告错误,并说明样本量和覆盖范围;小幅分数差别不能单独证明稳定优势。
如果模型输出有随机性,可分别保存重复运行的结果,不挑最高分那一轮。增删参考或改变分词后,所有工具应按相同配置重算并保留版本记录;不能把不同时点、不同语料的分数放在一张表里直接排名。
下一步
先用上面三组人工候选复算,确认能找到 B 的否定和时间错误,再换成你获准处理的真实材料和工具输出。最终选型要同时看指标、具体错误与人工复核工作量。本文官方资料核对日期为 2026 年 10 月 1 日,未调用 AI 翻译工具,也不报告产品准确率或速度。
需要一个中译英本地候选生成路径时,可接着阅读本站用 OPUS-MT 离线翻译并核对逐句译文,按其环境与模型边界运行;取得的结果仍需与人工参考对齐后再参与这里的评测。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32893.html