神经翻译质量评估(COMET)
COMET 用训练好的模型直接预测人工评分:输入原文与译文(可带参考译文),输出一个质量分。它比 BLEU 更贴近人的判断,因为不依赖字面 n-gram 重合,而是理解语义。使用时先分清模式——带参考译文(da 类)和不带参考(qe 类),后者适合没有标准译文的场景。
基本信息
| 模式 | 有参考(da)与无参考(qe)两类 |
|---|---|
| 解释 | 分数是人工评分的预测值,不是绝对正确率 |
| 版本 | 不同 COMET 模型分数不可混比,需记录模型与工具版本 |
| 适用 | 译文质量排序、版本对比、批量粗筛 |
典型使用场景
- 翻译模型迭代:同一测试集上比较不同版本的分数变化
- 没有参考译文的场景:用无参考模式做质量排序
- 人工评估前的粗筛:把明显差的版本先筛掉,节省人力
- 术语与风格专项:结合人工抽检判断特定维度的变化
- 对外报告:与人工评分一起呈现,作为交叉验证
Python 使用示例
Python 使用示例
# pip install unbabel-comet
python - <<'PY'
from comet import download_model, load_from_checkpoint
# 下载并加载模型(模型标识要与报告中记录的一致)
model_path = download_model("Unbabel/wmt22-comet-da")
model = load_from_checkpoint(model_path)
# 每条样本给 src 与 mt;da 模式还需要 ref
data = [{"src": "source text", "mt": "translation", "ref": "reference"}]
out = model.predict(data, batch_size=8)
print(out.system_score) # 语料级汇总分
print(out.scores[:3]) # 逐句分数
PY使用要点读法
| 项目 | 含义 | 注意事项 |
|---|---|---|
| da 模式 | 带参考译文评估 | 参考译文质量差会拉低评估可信度 |
| qe 模式 | 无参考译文评估 | 适合线上译文,但分数解释需谨慎 |
| system_score | 语料级汇总分 | 与逐句分数一起看,避免被长句主导 |
| 逐句分数 | 单条样本的质量分 | 用于定位具体差样本,不适合直接平均 |
| 模型版本 | 使用的 COMET 权重标识 | 换版本后分数不可与历史比较 |
把不同 COMET 版本的分数画进同一条趋势线,得到的是一条看起来平滑但含义已经变化的曲线。换模型等于换了度量尺,历史数据要重跑或在图上分段标注。
模型评估依赖训练分布。领域差异大的文本(法律、医疗、口语对话)上分数可能与人工判断偏离较多,建议抽样人工复核做校准,再决定是否把分数用于决策。