COMET
COMET 是一款基于神经网络的机器翻译(MT)自动评估框架,旨在为翻译质量提供接近人类判断水平的精准评分。在传统评估中,依赖人工打分既昂贵又耗时,而简单的字符串匹配指标往往无法捕捉语义差异。COMET 通过深度学习模型,有效解决了这一痛点,能够灵活支持“有参考译文”和“无参考译文”两种评估模式,甚至能利用上下文信息进行文档级评估,显著提升了在对话翻译等复杂场景下的准确性。
该工具特别适合自然语言处理研究人员、机器翻译开发者以及需要大规模监控翻译质量的企业团队使用。除了输出直观的质量分数外,COMET 还具备独特的技术亮点:其最新的 XCOMET 模型不仅能识别翻译中的轻微、重大或严重错误,还能生成自由的文本解释,帮助用户理解扣分原因;而 DocCOMET 扩展则让模型能够结合上下文语境,更准确地评估篇章连贯性。用户既可以通过命令行快速批量评测,也能将其集成到 Python 代码中构建自动化工作流。作为一款开源且持续更新的项目,COMET 已成为当前机器翻译领域衡量与优化模型性能的重要标准工具。
使用场景
某跨境电商团队正在构建多语言客服系统,需每日评估数千条由机器翻译生成的葡语、西班牙语回复质量,以确保海外用户沟通顺畅。
没有 COMET 时
- 依赖人工抽检效率低下:质检员只能随机抽取少量译文进行人工打分,无法覆盖海量数据,导致大量低质翻译流入生产环境。
- 缺乏细粒度错误定位:发现译文不通顺时,难以快速判断是术语错误、语法问题还是逻辑缺失,返工修改耗时耗力。
- 无参考译文场景束手无策:针对实时聊天产生的新句式,往往没有标准参考答案,传统 BLEU 等指标完全失效,质量评估陷入盲区。
- 主观评分标准不一:不同质检员对“好翻译”的理解存在偏差,导致评分波动大,难以量化模型迭代带来的真实提升。
使用 COMET 后
- 全量自动化评分:利用 COMET 的神经框架对每日生成的数千条译文进行批量打分,迅速筛选出低分样本优先处理,覆盖率提升至 100%。
- 智能错误归因分析:通过 XCOMET 模型自动识别并标记译文中的“严重”、“主要”或“轻微”错误(如漏译、错译),直接指导工程师精准修复。
- 支持无参考评估:启用 COMETKiwi 等无参考模型,即使在没有标准答案的实时对话场景中,也能依据上下文准确评估翻译流畅度与准确性。
- 统一客观量化标准:基于 MQM 类型学提供一致的分数体系,消除了人为主观差异,清晰量化了每次模型微调后的质量增益。
COMET 将模糊的翻译质量感知转化为可执行的量化数据与错误洞察,大幅降低了多语言业务的风险与运维成本。
运行环境要求
- 未说明
- 非必需(可通过 --gpus 0 在 CPU 上运行),但推荐使用 GPU 加速
- 具体型号、显存大小及 CUDA 版本未在文档中明确说明,但大型模型(如 XXL 版本,107 亿参数)通常需要高显存
未说明(大型模型如 XXL 版本建议配备充足内存)

快速开始
新闻:
- 我们新增了一种从 XCOMET 输出中提取自由文本解释的方法!请查看此部分
- 我们现在支持 DocCOMET,这是 COMET 的文档级扩展,能够利用上下文信息。使用上下文可以提升话语现象任务的准确性,以及对 聊天翻译质量 的无参考评估。
- 我们发布了全新的可解释 COMET 模型(XCOMET-XL 和 -XXL),这些模型在提供质量评分的同时,还能根据 MQM 分类体系检测译文中哪些错误属于轻微、严重或关键。
请在此处查看所有可用模型:这里
快速安装
COMET 需要 Python 3.8 或更高版本。可通过 PyPI 简单安装:
pip install --upgrade pip # 确保 pip 是最新版本
pip install unbabel-comet
注意: 若要使用某些 COMET 模型,例如 Unbabel/wmt22-cometkiwi-da,您必须在 Hugging Face Hub 上确认其许可证,并登录 Hugging Face Hub.
若要在本地开发,请执行以下命令:
git clone https://github.com/Unbabel/COMET
cd COMET
pip install poetry
poetry install
在开发过程中,您可以直接运行 CLI 工具,例如:
PYTHONPATH=. ./comet/cli/score.py
目录
对机器翻译输出进行评分:
CLI 使用方法:
测试示例:
echo -e "10 到 15 分钟可以送到吗\nPode ser entregue dentro de 10 a 15 minutos?" >> src.txt
echo -e "Can I receive my food in 10 to 15 minutes?\nCan it be delivered in 10 to 15 minutes?" >> hyp1.txt
echo -e "Can it be delivered within 10 to 15 minutes?\nCan you send it for 10 to 15 minutes?" >> hyp2.txt
echo -e "Can it be delivered between 10 to 15 minutes?\nCan it be delivered between 10 to 15 minutes?" >> ref.txt
基本评分命令:
comet-score -s src.txt -t hyp1.txt -r ref.txt
您可以使用
--gpus参数设置 GPU 数量(设为 0 可在 CPU 上测试)。
为了更好地分析错误,您可以使用 XCOMET 模型,例如 Unbabel/XCOMET-XL,并使用 --to_json 标志导出识别出的错误:
comet-score -s src.txt -t hyp1.txt -r ref.txt --model Unbabel/XCOMET-XL --to_json output.json
对多个系统进行评分:
comet-score -s src.txt -t hyp1.txt hyp2.txt -r ref.txt
通过 SacreBLEU 提供的 WMT 测试集:
comet-score -d wmt22:en-de -t PATH/TO/TRANSLATIONS
带上下文的评分:
echo -e "用这样的苹果做的馅饼。</s> 哦,它们看起来真美味。\n哦,它们看起来真美味。" >> src.txt
echo -e "用这样的苹果做的馅饼。</s> 它们看起来很美味。\n它们看起来很美味。" >> hyp1.txt
echo -e "用这样的苹果做的馅饼。</s> 他们看起来很美味。\n他们看起来很美味。" >> hyp2.txt
其中 </s> 是底层模型所使用的特定分词器(此处为 xlm-roberta-large)的分隔符标记。
comet-score -s src.txt -t hyp1.txt hyp2.txt --model Unbabel/wmt20-comet-qe-da --enable-context
如果您只关心系统级别的评分,可以使用以下命令:
comet-score -s src.txt -t hyp1.txt -r ref.txt --quiet --only_system
无参考评估:
comet-score -s src.txt -t hyp1.txt --model Unbabel/wmt22-cometkiwi-da
注意: 若要使用 Unbabel/wmt23-cometkiwi-da-xl,您需要先在 Hugging Face Hub 上确认其许可证。
比较多个系统:
在比较多个机器翻译系统时,我们建议您运行 comet-compare 命令,以通过配对 t 检验和自助重采样获得 统计显著性 (Koehn, et al 2004)。
comet-compare -s src.de -t hyp1.en hyp2.en hyp3.en -r ref.en
最小贝叶斯风险解码:
MBR 命令允许您根据 COMET 指标对译文进行排序,并选择最佳译文。更多详情请参阅我们的论文《面向神经机器翻译的质量感知解码》链接。
comet-mbr -s [SOURCE].txt -t [MT_SAMPLES].txt --num_sample [X] -o [OUTPUT_FILE].txt
如果候选列表非常庞大,您可以使用 --rerank_top_k 标志,根据无参考指标筛选出最有可能的前 K 个候选。
例如,针对 1000 个样本的候选列表:
comet-mbr -s [SOURCE].txt -t [MT_SAMPLES].txt -o [OUTPUT_FILE].txt --num_sample 1000 --rerank_top_k 100 --gpus 4 --qe_model Unbabel/wmt23-cometkiwi-da-xl
您的源文件和样本文件应按照如下方式格式化:链接.
COMET 模型
在 COMET 中,有多种评估模型可供使用。您可以参考 MODELS 页面,以获取所有可用模型的完整列表。以下是主要的基于参考和无参考模型的简要列表:
- 默认模型:
Unbabel/wmt22-comet-da- 该模型采用基于参考的回归方法,基于 XLM-R 架构构建。它使用 WMT17 至 WMT20 的直接评分进行训练,输出分数范围为 0 到 1,其中 1 表示完美翻译。 - 无参考模型:
Unbabel/wmt22-cometkiwi-da- 这种无参考模型同样采用回归方法,基于 InfoXLM 构建。它使用 WMT17 至 WMT20 的直接评分以及 MLQE-PE 语料库中的直接评分进行训练。与其他模型类似,其输出分数范围也是 0 到 1。对于有兴趣的用户,我们还提供了该模型的更大版本:参数量为 35 亿的Unbabel/wmt23-cometkiwi-da-xl,以及参数量为 107 亿的Unbabel/wmt23-cometkiwi-da-xxl。 - 可解释的 COMET(XCOMET):
Unbabel/XCOMET-XXL- 我们的最新模型经过训练,能够识别错误片段并给出最终质量得分,从而生成一种可解释的神经网络指标。我们提供 XXL 版本(参数量为 107 亿)以及 XL 版本(参数量为 35 亿)(Unbabel/XCOMET-XL)。这些模型与 MQM 的相关性最高,是我们表现最佳的评估模型。
请注意,不同模型可能适用不同的许可证。如需了解更多信息,请参阅 LICENSES.models 和各模型的许可证部分。
如果您希望将结果与 2022 年之前发表的论文进行比较,很可能他们使用的是较旧的评估模型。在这种情况下,请参考 Unbabel/wmt20-comet-da 和 Unbabel/wmt20-comet-qe-da,它们是 COMET 早期版本(<2.0)中使用的主检查点。
此外,由澳门大学 NLP2CT 实验室和阿里巴巴集团开发的 UniTE Metric 可以通过 COMET 直接使用,详情请见此处。
分数解读:
新增: 学习如何解读机器翻译指标的绝佳参考资料是 Kocmi 等人于 2024 年发表的分析论文,请点击此链接查看。
在使用 COMET 评估机器翻译时,理解其输出分数的含义非常重要。
一般来说,COMET 模型被训练用来预测翻译的质量得分。这些得分通常会通过 z 分数转换进行归一化处理,以考虑标注者之间的个体差异。虽然原始得分本身没有直接的解释意义,但它可以用于根据质量对翻译和系统进行排名。
然而,自 2022 年起,我们引入了一种新的训练方法,将分数缩放到 0 到 1 之间。这使得分数更容易解读:接近 1 的分数表示高质量的翻译,而接近 0 的分数则表示翻译质量与随机猜测无异。此外,随着 XCOMET 模型的推出,我们现在可以根据 MQM 类型学分析哪些文本片段属于轻微、严重或关键错误。
值得注意的是,在使用 COMET 比较两个不同翻译系统的表现时,务必运行 comet-compare 命令来获得统计显著性度量。该命令通过统计假设检验比较两个系统的输出,从而估算观察到的系统间分数差异是由偶然因素导致的概率。这是确保系统间分数差异具有统计显著性的关键步骤。
总体而言,最新 COMET 模型在分数可解释性方面的提升,结合使用 comet-compare 对系统间统计显著性进行评估的能力,使 COMET 成为评估机器翻译的宝贵工具。
支持的语言:
上述所有模型均基于 XLM-R(变体)构建,支持以下语言:
南非语、阿尔巴尼亚语、阿姆哈拉语、阿拉伯语、亚美尼亚语、阿萨姆语、阿塞拜疆语、巴斯克语、白俄罗斯语、孟加拉语、罗马化孟加拉语、波斯尼亚语、布列塔尼语、保加利亚语、缅甸语、加泰罗尼亚语、简体中文、繁体中文、克罗地亚语、捷克语、丹麦语、荷兰语、英语、世界语、爱沙尼亚语、菲律宾语、芬兰语、法语、加利西亚语、格鲁吉亚语、德语、希腊语、古吉拉特语、豪萨语、希伯来语、印地语、罗马化印地语、匈牙利语、冰岛语、印尼语、爱尔兰语、意大利语、日语、爪哇语、卡纳达语、哈萨克语、高棉语、韩语、库尔德语(库尔曼吉)、吉尔吉斯语、老挝语、拉丁语、拉脱维亚语、立陶宛语、马其顿语、马达加斯加语、马来语、马拉雅拉姆语、马拉地语、蒙古语、尼泊尔语、挪威语、奥里亚语、奥罗莫语、普什图语、波斯语、波兰语、葡萄牙语、旁遮普语、罗马尼亚语、俄语、梵语、苏格兰盖尔语、塞尔维亚语、信德语、僧伽罗语、斯洛伐克语、斯洛文尼亚语、索马里语、西班牙语、巽他语、斯瓦希里语、瑞典语、泰米尔语、罗马化泰米尔语、泰卢固语、罗马化泰卢固语、泰语、土耳其语、乌克兰语、乌尔都语、罗马化乌尔都语、维吾尔语、乌兹别克语、越南语、威尔士语、西弗里斯兰语、科萨语、意第绪语。
因此,包含未覆盖语言的语言对的结果不可靠!
非洲语言的 COMET:
如果您对非洲语言的 COMET 指标感兴趣,请访问 afriCOMET。
在 Python 中进行评分:
from comet import download_model, load_from_checkpoint
# 从 Hugging Face Hub 选择您的模型
model_path = download_model("Unbabel/XCOMET-XL")
# 或例如:
# model_path = download_model("Unbabel/wmt22-comet-da")
# 加载模型检查点:
model = load_from_checkpoint(model_path)
# 数据必须采用以下格式:
data = [
{
"src": "10 到 15 分钟可以送到吗",
"mt": "Can I receive my food in 10 to 15 minutes?",
"ref": "Can it be delivered between 10 to 15 minutes?"
},
{
"src": "Pode ser entregue dentro de 10 a 15 minutos?",
"mt": "Can you send it for 10 to 15 minutes?",
"ref": "Can it be delivered between 10 to 15 minutes?"
}
]
# 调用 predict 方法:
model_output = model.predict(data, batch_size=8, gpus=1)
输出结果如下:
# 句子级分数(列表)
>>> model_output.scores
[0.9822099208831787, 0.9599897861480713]
# 系统级评分(浮点数)
>>> model_output.system_score
0.971099853515625
# 检测到的错误片段(列表,嵌套字典列表)
>>> model_output.metadata.error_spans
[
[{'confidence': 0.4160953164100647,
'end': 21,
'severity': 'minor',
'start': 13,
'text': 'my food'}],
[{'confidence': 0.40004390478134155,
'end': 19,
'severity': 'minor',
'start': 3,
'text': 'you send it for'}]
]
不过,请注意,并非所有 COMET 模型都会返回包含检测到的错误片段的元数据。
解释翻译错误:
请查看这个笔记本,其中提供了一个最小示例,说明如何将 xCOMET 与 xTower 结合使用,为每个错误片段生成自然语言解释。
对于上述葡萄牙语-英语示例,我们将使用以下提示调用 xTower:
您将获得源文本、译文、译文质量分析以及译文质量评分(弱、中、好、优、最佳)。译文质量分析包含带有标记错误片段的译文,这些片段具有不同程度的严重性(轻微或严重)。根据这些信息,为每个错误生成解释,并给出完全正确的译文。
葡萄牙语原文:Pode ser entregue dentro de 10 a 15 minutos?
英语译文:Can you send it for 10 to 15 minutes?
译文质量分析:Can<error1 severity='minor'>you send it for</error1>10 to 15 minutes?
译文质量评分:优秀
输出结果如下:
错误1解释:短语“Can you send it for 10 to 15 minutes?”是对原葡萄牙语句子的误译。正确的理解应关注送达时间,而非发送所需的时间。原句询问的是送达时间,而不是发送所需的时间。
译文修正:Can it be delivered within 10 to 15 minutes?
更多信息请参阅xTower 文档。
训练您自己的指标:
除了使用预训练模型外,您还可以通过以下命令训练自己的模型:
comet-train --cfg configs/models/{your_model_config}.yaml
之后,您可以使用自定义指标进行评分:
comet-score -s src.de -t hyp1.en -r ref.en --model PATH/TO/CHECKPOINT
此外,您还可以将模型上传至Hugging Face Hub。以Unbabel/wmt22-comet-da为例,随后即可直接从 Hub 上使用您的模型。
单元测试:
要运行工具包的测试,您需要执行以下命令:
poetry run coverage run --source=comet -m unittest discover
poetry run coverage report -m # 预期覆盖率 76%
注意: 在 CPU 上运行测试耗时较长。
出版物
如果您使用 COMET,请务必引用我们的工作,并且不要忘记说明您所使用的模型!
版本历史
v2.2.72025/09/01v2.2.62025/04/07v2.2.52025/03/26v2.2.42024/12/05v2.2.32024/11/27v2.2.12024/01/08v2.2.02023/10/23v2.1.12023/10/13v2.1.02023/09/21v2.0.22023/08/16v2.0.12023/04/05v2.0.02023/03/13v1.1.32023/01/13v1.1.22022/06/06v1.1.12022/06/01v1.1.02022/04/02v1.0.12021/11/19v1.0.02021/11/190.1.02021/03/11常见问题
相似工具推荐
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
NextChat
NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
ragflow
RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。