BLEU / ROUGE 文本质量评估
五层读懂一个词。这次拆的是:BLEU 和 ROUGE--评估生成文本与参考答案重叠度的两大经典指标。BLEU 测精确率(生成内容有多少在参考里),ROUGE 测召回率(参考内容有多少被生成出来)。本质都是 N-gram 匹配,但都只看字面不计语义——"猫在垫子上" 和 "垫子上有只猫" 得分很低。LLM 时代正在被 BERTScore/COMET/GPT-Eval 取代。
L1 · 一句话点破
BLEU = 生成文本相对于参考答案的 N-gram 精确率(机器翻译专用),ROUGE = 参考答案相对于生成文本的 N-gram 召回率(摘要专用)。两者都是字面匹配指标:比较生成文本和参考答案的 N-gram(连续 N 个词)重叠度。优点是简单可复现,致命缺点是不计语义——同义改写、换词序全扣分。LLM 时代被基于 embedding 的语义指标(BERTScore/COMET)和 LLM-as-Judge 快速取代。
L2 · 通俗类比
BLEU 像「老师对答案」:
- 学生翻译了一句话
- 老师有标准答案
- BLEU 数学生用了多少个标准答案里的词(精确率)
- 多用标准答案里的词 → 高分
- 但如果学生用自己的话说,哪怕更地道,BLEU 扣分
ROUGE 像「检查覆盖度」:
- 学生写了一篇摘要
- 老师有关键信息列表
- ROUGE 数关键信息有多少被覆盖(召回率)
- 覆盖越多 → 高分
- 但学生如果写了 10 倍长度的摘要,ROUGE 自然高(需要配合精确率)
两者的本质:
| 指标 | 如果翻译"我爱你" |
|---|---|
| 参考 | I love you |
| 输出 1(精确) | I love you → BLEU=100%, ROUGE=100% |
| 输出 2(同义) | I'm in love with you → BLEU≈20%, ROUGE≈20% |
| 输出 3(不相关) | The weather is nice → BLEU=0%, ROUGE=0% |
问题:输出 2 其实很好(语义对),但 BLEU/ROUGE 给低分。这就是 N-gram 匹配的致命缺陷。
计算直觉:
参考: "the cat sat on the mat"
生成: "the cat is on the mat"
Unigram (1-gram) 匹配: the, cat, on, the, mat = 5/6 ≈ 83%
Bigram (2-gram) 匹配: the_cat, on_the, the_mat = 3/5 ≈ 60%
→ BLEU ≈ 几何平均 ≈ 70%
→ 加上长度惩罚(参考 6 词,生成 6 词,无惩罚)
→ BLEU = 70%代价:
- BLEU/ROUGE 高 ≠ 语义对——同义改写被扣分
- 单一参考答案不够(不同人能写出不同好翻译)
- 不看流畅度和语法(可以是 BLEU 高分但语法破碎)
- 不适合开放性任务(对话、创意写作)
适用:
- 机器翻译(BLEU 的原始场景)
- 自动摘要(ROUGE 的原始场景)
- 有明确参考答案的任务
- 快速基线评估(不依赖 LLM 打分)
L3 · 正经定义
BLEU(Bilingual Evaluation Understudy): 由 Papineni et al. 2002 提出,衡量机器翻译输出与人工参考翻译的 N-gram 精确率。
$$ BLEU = BP \cdot \exp\left(\sum_{n=1}^{N} w_n \log p_n\right) $$
- $p_n$:N-gram 精确率(生成文本的 N-gram 有多少出现在参考中)
- $w_n$:各 N-gram 的权重(通常 $w_n = 1/N$)
- $BP$:Brevity Penalty(长度惩罚,防止过短翻译得高分)
Brevity Penalty:
$$ BP = \begin{cases} 1 & \text{if } c > r \ \exp(1 - r/c) & \text{if } c \le r \end{cases} $$
- $c$:生成译文长度
- $r$:最接近的参考译文长度
- 生成太短 → 惩罚
ROUGE(Recall-Oriented Understudy for Gisting Evaluation): 由 Lin 2004 提出,衡量自动摘要对人工参考摘要的召回率。
ROUGE-N(N-gram 召回率):
$$ ROUGE\text{-}N = \frac{\sum \text{Count}_{match}(\text{N-gram})}{\sum \text{Count}(\text{N-gram in reference})} $$
ROUGE-L(最长公共子序列 LCS):
$$ R_{LCS} = \frac{LCS(X, Y)}{|Y|}, \quad P_{LCS} = \frac{LCS(X, Y)}{|X|}, \quad F_{LCS} = \frac{(1+\beta^2)R_{LCS}P_{LCS}}{R_{LCS} + \beta^2 P_{LCS}} $$
$\beta$ 控制召回权重(通常 $\beta>1$ 偏向召回)。
参考资料:
- 📄 Papineni et al., BLEU: a Method for Automatic Evaluation of Machine Translation, ACL 2002
- 📄 Lin, ROUGE: A Package for Automatic Evaluation of Summaries, ACL 2004
- 📄 Zhang et al., BERTScore: Evaluating Text Generation with BERT, ICLR 2020
- 📄 Rei et al., COMET: A Neural Framework for MT Evaluation, EMNLP 2020
- 🔧 HuggingFace evaluate:
evaluate.load("bleu"),evaluate.load("rouge")
L4 · 原理深挖
4.1 BLEU 的详细计算
Step 1: 计算每个 N-gram 的精确率
参考: "the cat is on the mat"
生成: "the cat the cat is on the mat"
个词: the(2), cat(2), is(1), on(1), mat(1)
参考中: the(2), cat(1), is(1), on(1), mat(1)
匹配计数(取 min):
the: min(2, 2) = 2
cat: min(2, 1) = 1
is: min(1, 1) = 1
on: min(1, 1) = 1
mat: min(1, 1) = 1
p1 = 6/6 = 1.0注意:cat 在参考中只有 1 个,所以即使生成了 2 个 cat,也只算 1 个匹配(clipped count)。
Step 2: N=1,2,3,4 的加权几何平均
# 通常 w = [0.25, 0.25, 0.25, 0.25]
bleu = bp * exp(w1*log(p1) + w2*log(p2) + w3*log(p3) + w4*log(p4))Step 3: Brevity Penalty
参考长度: 6
生成长度: 6
c=6, r=6, c>r → BP = 1.0如果生成长度=3:
c=3, r=6 → BP = exp(1 - 6/3) = exp(-1) ≈ 0.37短翻译大扣分。
4.2 ROUGE 的变体
ROUGE-1, ROUGE-2, ROUGE-L, ROUGE-SU
| 变体 | 计算 | 适用 |
|---|---|---|
| ROUGE-1 | Unigram 召回 | 检查信息覆盖 |
| ROUGE-2 | Bigram 召回 | 检查流畅度 |
| ROUGE-L | LCS 召回 | 检查语序 |
| ROUGE-SU | Skip-bigram | 允许间隔匹配 |
实践:摘要评估常用 ROUGE-1/2/L。
4.3 BLEU/ROUGE 的局限
局限 1: 同义改写被惩罚
参考: "The cat sat on the mat"
生成: "A feline rested upon the rug"
BLEU ≈ 0%(几乎没有词重叠)
实际: 语义完全相同(完美翻译)局限 2: 单一参考答案不够
参考: "她是一个好老师"
生成 1: "她是一位优秀的教师" → BLEU 低("优秀"不在参考)
生成 2: "她是一个好老师" → BLEU 高(逐词复制)
生成 1 可能更自然,但 BLEU 给低分。局限 3: 不衡量语法和流畅度
参考: "The food was delicious"
生成: "Delicious was the food" → N-gram 匹配率还行,但语法诡异局限 4: 不适合对话/创意
- 对话没有「参考答案」
- 创意写作有无限多种好答案
- BLEU/ROUGE 全部分低分
局限 5: 语种和 tokenization 敏感
- "我爱你" vs "I love you" — 中文单字切分后 N-gram 完全没法比
- 不同 tokenizer 给不同分
局限 6: N 越大越严苛
- BLEU-4(默认 N=4)要求连续 4 个词匹配
- 对长句翻译极不友好
4.4 LLM 时代的替代方案
BERTScore:用 BERT embedding 的余弦相似度替代 N-gram 匹配
# 生成: "A feline rested upon the rug"
# 参考: "The cat sat on the mat"
# BLEU: 0%(无 N-gram 重叠)
# BERTScore: 85%(语义接近)优势:
- 理解同义词("feline" ≈ "cat")
- 理解改写("rested upon" ≈ "sat on")
- 不依赖精确 N-gram 匹配
COMET:训练神经网络直接预测人工评分
# 输入:(源文, 翻译, 参考)
# 输出:预测的人类评分(0-100)
# 经过 WMT 人工评分训练优势:
- 直接预测人类评分
- 不需要参考也能评(COMET-QE)
- 比 BLEU 更接近人类判断
GPT-Eval / LLM-as-Judge:用 GPT-4 打分
# Prompt:
# "参考翻译: X, 候选翻译: Y
# 评分 1-5,考虑语义准确、流畅度、自然度"优势:最接近人类判断的自动评估 劣势:依赖 GPT-4 API,成本高,评分可能有偏置(偏好自己的输出)
对比:
| 指标 | 语义理解 | 需要参考 | 成本 | 稳定性 |
|---|---|---|---|---|
| BLEU | ❌ 只看字面 | ✅ | 极低 | 极高 |
| BERTScore | ✅ 部分 | ✅ | 低 | 高 |
| COMET | ✅ 强 | ❌ (COMET-QE) | 中 | 高 |
| GPT-Eval | ✅ 最强 | ✅/❌ | 高 | 中 |
4.5 BLEU/ROUGE 仍有用的场景
- 快速回归测试:模型更新后 BLEU 暴跌 → 有 bug
- 消融实验:改了个模块 BLEU 降了 2% → 量化影响
- 排行榜:WMT 仍用 BLEU 作为翻译竞赛的一级指标(加上 COMET 做辅助)
- 成本考虑:GPU 没钱跑 LLM 打分,BLEU 免费
L5 · 沿革与坑
5.1 沿革
- 2002:BLEU 论文(IBM),机器翻译自动评估的里程碑
- 2004:ROUGE 论文(USC/ISI),摘要评估标准
- 2005-2015:BLEU/ROUGE 成为 NLP 任务的标准评估指标
- 2016-2019:NMT(神经网络翻译)时代,BLEU 和人类判断的差距被广泛批评
- 2020:BERTScore(ICLR 2020),首次用预训练模型做语义评估
- 2020:COMET(EMNLP 2020),神经网络直接预测人类评分
- 2023-2024:GPT-Eval/LLM-as-Judge 兴起
- 2024-2025:BLEU/ROUGE 从「核心指标」变为「快速基线」
5.2 常见坑
坑 1: 用 BLEU 评估对话/创意。BLEU 只适合有参考答案的任务。对话没有标准答案。
坑 2: 不看 tokenization。中文 BLEU 受分词工具影响(jieba vs pkuseg)。要统一。
坑 3: BLEU=30 就说好。BLEU 取值范围和参考数量、任务难度相关。要和 baseline 比。
坑 4: 使用单一参考。至少 4 个参考——BLEU 论文本身建议多重参考。
坑 5: BLEU 高但不看生成质量。模型可以学会「逐词复制参考」→ BLEU 高但无泛化。
坑 6: ROUGE-L 用在不合适场景。ROUGE-L(LCS)偏长匹配,不适合需要关键信息覆盖的场景。
坑 7: 忽略统计显著性。BLEU 差 0.5 可能只是噪音。要做 bootstrap 显著性测试。
坑 8: BLEU/ROUGE 替代人工评估。它们是自动代理,不能完全替代。关键决策要人工审。
坑 9: BLEU 的平滑方法没设。0 N-gram 匹配时需要用平滑(smoothing),否则 log(0) = -inf。
坑 10: Python 库版本不同算法有差异。NLTK BLEU ≠ SacreBLEU。SacreBLEU 是标准。
坑 11: COMET 模型选择错。COMET-22 和 COMET-20 评分标准不同。用最新的 wmt23-cometkiwi-da。
坑 12: GPT-Eval 有 position bias。GPT 偏好第一个选项。要交换选项位置取平均。
5.3 面试怎么考
- BLEU 怎么算的? 答:N-gram 精确率(生成文本的 N-gram 有多少在参考中)的加权几何平均 × Brevity Penalty(防止过短)。N=1 到 4。
- BLEU 和 ROUGE 的区别? 答:BLEU 是精确率(我写了多少对的),ROUGE 是召回率(对的我有多少写到了)。BLEU 偏翻译,ROUGE 偏摘要。
- BLEU 的致命缺陷? 答:只看字面不看语义——同义改写被误判为错;单一参考不全;不衡量流畅度/语法/事实。
- BERTScore 为什么比 BLEU 好? 答:用 BERT embedding 的余弦相似度替代 N-gram,理解同义词("feline"≈"cat")和改写。但仍然需要参考。
- 什么时候用 BLEU,什么时候用 LLM-as-Judge? 答:快速回归/消融/排行榜用 BLEU(免费、稳定、可复现);最终评估/开放任务/语义敏感任务用 LLM-as-Judge 或人工。
速记卡
BLEU 公式:
$$ BLEU = BP \cdot \exp\left(\sum_{n=1}^{4} \frac{1}{4} \log p_n\right) $$ $$ BP = \begin{cases} 1 & c > r \ \exp(1 - r/c) & c \le r \end{cases} $$
ROUGE-N 公式:
$$ ROUGE\text{-}N = \frac{\text{参考和生成匹配的 N-gram 数}}{\text{参考中 N-gram 总数}} $$
BLEU vs ROUGE:
| 维度 | BLEU | ROUGE |
|---|---|---|
| 指标 | 精确率 | 召回率 |
| 原始场景 | 机器翻译 | 摘要 |
| 是否有 BP | ✅ | ❌ |
| 主要缺点 | 不惩罚过长 | 不惩罚过长 |
指标进化:
BLEU/ROUGE → BERTScore → COMET → GPT-Eval
(2002) (2020) (2020) (2023)
字面匹配 语义相似 预测人评 LLM 打分对比总结:
| 指标 | 语义 | 需参考 | 成本 | 适用 |
|---|---|---|---|---|
| BLEU | ❌ | ✅ | 零 | 快速基线 |
| BERTScore | ✅ | ✅ | 低 | 语义评估 |
| COMET | ✅ | ❌ | 中 | 翻译质量 |
| GPT-Eval | ✅ | ✅/❌ | 高 | 开放任务 |
一句话记忆:BLEU = N-gram 精确率 + 长度惩罚,ROUGE = N-gram 召回率。字面匹配指标:看生成文本和参考答案有多少词重叠。优点是简单可复现;致命缺点是不计语义——"A feline rested upon the rug" 和 "The cat sat on the mat" BLEU≈0 但语义完全相同。LLM 时代正被 BERTScore(embedding 相似度)→ COMET(预测人工评分)→ GPT-Eval(LLM 打分)取代。但仍用于快速回归、消融、排行榜基线。注意:跨 tokenizer/语种不可比,SacreBLEU 是标准实现,需要多重参考。
上一篇:Perplexity 困惑度 -- PPL 测模型内部预测,BLEU/ROUGE 测生成文本和参考答案的匹配。下一篇:MT-Bench & LLM-as-Judge -- BLEU 只看字面,LLM-as-Judge 用另一个 LLM 打分,更接近人类判断。