bleurt

GitHub
790 92 中等 1 次阅读 1周前Apache-2.0语言模型其他
AI 解读 由 AI 自动生成,仅供参考

BLEURT 是一款基于迁移学习的自然语言生成评估指标,旨在更精准地衡量机器生成文本的质量。在翻译、摘要或对话系统等场景中,传统的评估方法往往难以兼顾语言的流畅度与语义的准确性。BLEURT 通过接收“参考句子”和“候选句子”作为输入,输出一个量化评分,直观反映候选句在多大程度上既通顺又完整传达了原意。

与早期的 BLEU 等规则型指标不同,BLEURT 的核心优势在于它是一个经过大规模人类评分数据训练的回归模型。它依托于强大的 BERT 和 RemBERT 架构,能够深入理解上下文语义,从而提供比传统方法更接近人类判断的评估结果。此外,最新版本的 BLEURT-20 还增强了多语言能力,使其适用于更广泛的国际化场景。

这款工具特别适合从事自然语言处理(NLP)的研究人员、算法工程师以及需要评估生成模型效果的开发者使用。无论是用于学术论文中的实验对比,还是工业界模型迭代时的自动化测试,BLEURT 都提供了灵活的命令行接口和 Python API,支持用户直接调用预训练模型或针对特定领域进行微调。如果你正在寻找一种可靠且高效的文本生成评估方案,BLEURT 值得纳入你的技术栈。

使用场景

某跨境电商团队正在开发智能客服系统,需要持续评估模型生成的回复质量,以确保其既流畅又能准确传达标准答案的含义。

没有 bleurt 时

  • 依赖传统的 BLEU 分数,导致语义相似但措辞不同的优质回复被误判为低分,因为该指标过度关注词汇重叠。
  • 人工抽检耗时费力,面对每天数万条生成记录,无法全面覆盖,极易遗漏那些“看似通顺实则答非所问”的坏案例。
  • 缺乏细粒度的量化标准,开发人员难以判断模型迭代是真正提升了语义理解能力,还是仅仅在凑关键词。
  • 多语言场景下评估标准不统一,不同语种的回复质量难以横向对比,阻碍了全球化部署的进度。

使用 bleurt 后

  • 利用基于迁移学习的评分机制,bleurt 能精准识别语义等价但表达多样的回复,大幅减少了因措辞差异导致的误判。
  • 实现了全量自动化评估,团队可实时监控每条生成内容与参考标准的相关性,快速定位并修复语义漂移问题。
  • 提供连续且鲁棒的分数反馈,让算法工程师能清晰看到模型在语义连贯性和流畅度上的细微提升,指导针对性优化。
  • 借助其多语言模型特性(如 BLEURT-20),统一了全球各语种客服回复的评估标尺,显著加速了国际化功能的上线验证。

bleurt 将主观的文本质量评估转化为客观、可量化的语义相似度指标,极大提升了自然语言生成系统的迭代效率与可靠性。

运行环境要求

操作系统
  • 未说明
GPU
  • 非必需,但强烈建议使用现代 GPU 以大幅提升性能
  • 未指定具体型号、显存大小或 CUDA 版本
内存

未说明(默认批处理大小为 16,可根据可用内存调整)

依赖
notes该工具基于 TensorFlow 1.15+ 构建。默认使用不准确的 'test' 检查点,建议下载并使用 'BLEURT-20' 模型以获得准确结果。支持通过调整批处理大小、启用基于长度的批处理或使用蒸馏模型来加速推理。虽然主要基于 TF 1.x,但也支持 TF 2.0 的 eager 模式。
python3.x
tensorflow>=1.15
tf-slim>=1.1
bleurt hero image

快速开始

BLEURT:一种基于迁移学习的自然语言生成评价指标

BLEURT 是一种用于自然语言生成任务的评价指标。它接受一对句子作为输入,即 参考句候选句,并返回一个分数,该分数表示候选句在多大程度上流畅且准确地传达了参考句的语义。BLEURT 与 sentence-BLEUBERTscoreCOMET 具有可比性。

BLEURT 属于 训练型指标,即它是一个基于评分数据训练的回归模型。该模型基于 BERTRemBERT 构建。本仓库包含了使用 BLEURT 以及针对您的特定应用对其进行微调所需的所有代码。BLEURT 使用 TensorFlow,并且在现代 GPU 上运行时性能会显著提升(当然也可以在 CPU 上运行)。

有关 BLEURT 的概述,请参阅我们的 博客文章。更多详细信息则可在 ACL 论文 BLEURT: Learning Robust Metrics for Text Generation 和 EMNLP 论文 我们的 EMNLP 论文 中找到。

安装

BLEURT 运行在 Python 3 环境中。它高度依赖 Tensorflow(>=1.15)和库 tf-slim(>=1.1)。您可以按照以下步骤进行安装:

pip install --upgrade pip  # 确保 pip 是最新版本
git clone https://github.com/google-research/bleurt.git
cd bleurt
pip install .

您可以通过单元测试来验证安装是否成功:

python -m unittest bleurt.score_test
python -m unittest bleurt.score_not_eager_test
python -m unittest bleurt.finetune_test
python -m unittest bleurt.score_files_test

使用 BLEURT —— 简要版

以下命令将下载推荐的检查点并运行 BLEURT:

# 下载 BLEURT-base 检查点。
wget https://storage.googleapis.com/bleurt-oss-21/BLEURT-20.zip .
unzip BLEURT-20.zip

# 运行评分。
python -m bleurt.score_files \
  -candidate_file=bleurt/test_data/candidates \
  -reference_file=bleurt/test_data/references \
  -bleurt_checkpoint=BLEURT-20

文件 bleurt/test_data/candidatesreferences 包含测试句子,这些句子默认包含在 BLEURT 发行包中。输入格式为每行一句。您可以将其替换为您自己的文件。该命令会为每对句子输出一个分数。

2021年10月8日更新: 我们已将推荐的检查点升级为 BLEURT-20,这是一款更准确、支持多语言的模型 🎉。

使用 BLEURT —— 详细版

命令行工具与 API

目前,调用 BLEURT 有三种方式:命令行界面、Python API 和 TensorFlow API。

命令行界面

使用 BLEURT 最简单的方式是通过命令行,如下所示:

python -m bleurt.score_files \
  -candidate_file=bleurt/test_data/candidates \
  -reference_file=bleurt/test_data/references \
  -bleurt_checkpoint=bleurt/test_checkpoint \
  -scores_file=scores

文件 candidatesreferences 每行包含一句(具体格式请参见 test_data 文件夹)。执行该命令后应生成一个名为 scores 的文件,其中包含每对句子对应的 BLEURT 分数。或者,您也可以使用 JSONL 文件,如下:

python -m bleurt.score_files \
  -sentence_pairs_file=bleurt/test_data/sentence_pairs.jsonl \
  -bleurt_checkpoint=bleurt/test_checkpoint

标志 bleurt_checkpointscores_file 是可选的。如果未指定 bleurt_checkpoint,BLEURT 将默认使用基于 BERT-Tiny 的测试检查点,该检查点非常轻量,但准确性也较低(我们不建议使用)。如果未指定 scores_file,BLEURT 将直接输出到标准输出。

以下命令列出了所有其他命令行选项:

python -m bleurt.score_files -helpshort

Python API

BLEURT 也可以作为 Python 库使用,如下:

from bleurt import score

checkpoint = "bleurt/test_checkpoint"
references = ["这是一个测试。"]
candidates = ["这是测试。"]

scorer = score.BleurtScorer(checkpoint)
scores = scorer.score(references=references, candidates=candidates)
assert isinstance(scores, list) and len(scores) == 1
print(scores)

同样地,如果未指定检查点,BLEURT 将默认使用 BERT-Tiny

BLEURT 在 eager_mode(TF 2.0 默认模式)和 tf.Session(TF 1.0)下均可工作,但后者速度较慢,并且可能在不久的将来被弃用。

TensorFlow API

BLEURT 可以嵌入到 TF 计算图中,例如在训练模型时将其可视化在 TensorBoard 上。

以下代码展示了示例:

import tensorflow as tf
# 如果使用 TF 1.x,请启用 tf.enable_eager_execution()。

from bleurt import score

references = tf.constant(["这是一个测试。"])
candidates = tf.constant(["这是测试。"])

bleurt_ops = score.create_bleurt_ops()
bleurt_out = bleurt_ops(references=references, candidates=candidates)

assert bleurt_out["predictions"].shape == (1,)
print(bleurt_out["predictions"])

关键在于调用 score.create_bleurt_ops,它会创建相应的 TF 操作。

检查点

BLEURT 检查点 是一个自包含的文件夹,其中包含回归模型以及 BLEURT 运行所需的一些信息。BLEURT 检查点可以下载、复制粘贴并存储在任何位置。此外,检查点是可调优的,这意味着它们可以在自定义评分数据上进行微调。

BLEURT 默认使用 test 检查点,其准确性较低。我们建议在结果报告中使用 BLEURT-20。使用方法如下:

wget https://storage.googleapis.com/bleurt-oss-21/BLEURT-20.zip .
unzip BLEURT-20.zip
python -m bleurt.score_files \
  -candidate_file=bleurt/test_data/candidates \
  -reference_file=bleurt/test_data/references \
  -bleurt_checkpoint=BLEURT-20

检查点页面 提供了关于这些检查点如何训练的更多信息,以及指向较小模型的链接。此外,您还可以在自己的评分数据上对 BERT 或现有的 BLEURT 检查点进行微调。检查点页面 描述了具体的操作方法。

解读 BLEURT 分数

不同的 BLEURT 检查点会产生不同的分数。目前推荐使用的检查点 BLEURT-20 生成的分数大致介于 0 到 1 之间(有时小于 0,有时大于 1),其中 0 表示随机输出,1 表示完美输出。与所有自动评估指标一样,BLEURT 分数也存在噪声。为了稳健地评估系统的质量,我们建议对语料库中各句子的 BLEURT 分数取平均值。有关这方面的指标比较,请参阅 WMT Metrics 共享任务

原则上,BLEURT 应该衡量“恰当性”:其训练数据大多由 WMT 组织者收集,他们要求标注者回答:“你多大程度上同意系统输出充分表达了参考文本的含义?”(WMT Metrics'18Graham 等,2015)。然而,在实践中,这些答案往往与“流畅性”(“这段文字是否通顺自然?”)高度相关;此外,我们在训练集中加入了人为噪声,这使得“恰当性”和“流畅性”之间的区分变得有些模糊。

语言覆盖范围

目前,BLEURT-20 已在 13 种语言上进行了测试:中文、捷克语、英语、法语、德语、日语、韩语、波兰语、葡萄牙语、俄语、西班牙语、泰米尔语和越南语(这些语言均拥有独立的评分数据集)。理论上,它应该也能适用于 多语言 C4 数据集中的 100 多种语言,因为 RemBERT 就是在该数据集上训练的。

如果您尝试过其他语言并愿意分享您的使用体验——无论是正面还是负面——都欢迎向我们反馈!

加速 BLEURT

我们介绍三种加速 BLEURT 的方法及其组合方式。

批量大小调整

您可以指定 -bleurt_batch_size 标志来决定 BLEURT 每次同时处理的句子对数量。默认值为 16,您可以根据可用内存以及是否有 GPU 来适当增大或减小该值(通常在没有 GPU 的笔记本电脑上使用 16,在配备 GPU 的工作站上则使用 100)。

基于长度的批处理

基于长度的批处理是一种优化技术,它会将长度相近的样本分组,并裁剪结果张量以避免对填充标记进行不必要的计算。这种方法通常能带来显著的速度提升(一般为 2 至 10 倍)。相关说明可参见 这里,并且已被 BERTScore 等学习型指标工具成功应用。

您可以通过在命令行调用 score_files 时添加 -batch_same_length=True 参数,或者在使用 Python API 时实例化 LengthBatchingBleurtScorer 而非 BleurtScorer,来启用基于长度的批处理。

知识蒸馏模型

我们在 检查点页面 提供了多个压缩版检查点的链接。这些模型是通过知识蒸馏这一有损过程得到的,因此其输出无法与原始 BLEURT 模型的输出直接比较(尽管两者应高度相关)。

综合运用

以下命令展示了如何结合上述三种技术,在较大文件上将 BLEURT 的速度提升一个数量级(在我们的配置下最高可达 20 倍):

# 下载 12 层蒸馏模型,其体积约为原模型的 3.5 倍。
wget https://storage.googleapis.com/bleurt-oss-21/BLEURT-20-D12.zip .
unzip BLEURT-20-D12.zip

python -m bleurt.score_files \
  -candidate_file=bleurt/test_data/candidates \
  -reference_file=bleurt/test_data/references \
  -bleurt_batch_size=100 \            # 优化措施 1。
  -batch_same_length=True \           # 优化措施 2。
  -bleurt_checkpoint=BLEURT-20-D12    # 优化措施 3。

可复现性

您可以在 WMT Metrics 共享任务页面 上找到有关如何使用评分数据的信息,以及如何复现 我们 ACL 论文 中的结果;此外,我们 EMNLP 论文 中的部分模型也可在 此页面 上找到。

引用方式

请引用我们的 ACL 论文:

@inproceedings{sellam2020bleurt,
  title = {BLEURT: Learning Robust Metrics for Text Generation},
  author = {Thibault Sellam and Dipanjan Das and Ankur P Parikh},
  year = {2020},
  booktitle = {Proceedings of ACL}
}

最新模型 BLEURT-20 基于以下后续论文的工作:

@inproceedings{pu2021learning,
  title = {Learning compact metrics for MT},
  author = {Pu, Amy and Chung, Hyung Won and Parikh, Ankur P and Gehrmann, Sebastian and Sellam, Thibault},
  booktitle = {Proceedings of EMNLP},
  year = {2021}
}

常见问题

相似工具推荐

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 真正成长为懂上

155.4k|★★☆☆☆|今天
开发框架Agent语言模型

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

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 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|1周前
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|4天前
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|6天前
语言模型数据工具其他

cs-video-courses

cs-video-courses 是一个精心整理的计算机科学视频课程清单,旨在为自学者提供系统化的学习路径。它汇集了全球知名高校(如加州大学伯克利分校、新南威尔士大学等)的完整课程录像,涵盖从编程基础、数据结构与算法,到操作系统、分布式系统、数据库等核心领域,并深入延伸至人工智能、机器学习、量子计算及区块链等前沿方向。 面对网络上零散且质量参差不齐的教学资源,cs-video-courses 解决了学习者难以找到成体系、高难度大学级别课程的痛点。该项目严格筛选内容,仅收录真正的大学层级课程,排除了碎片化的简短教程或商业广告,确保用户能接触到严谨的学术内容。 这份清单特别适合希望夯实计算机基础的开发者、需要补充特定领域知识的研究人员,以及渴望像在校生一样系统学习计算机科学的自学者。其独特的技术亮点在于分类极其详尽,不仅包含传统的软件工程与网络安全,还细分了生成式 AI、大语言模型、计算生物学等新兴学科,并直接链接至官方视频播放列表,让用户能一站式获取高质量的教育资源,免费享受世界顶尖大学的课堂体验。

79.8k|★☆☆☆☆|6天前
其他图像数据工具