机器翻译和文本生成评估指标:BLEU 计算公式

📌 BLEU 计算公式

BLEU 主要由**n-gram精确匹配率(Precision)长度惩罚(Brevity Penalty, BP)**组成。

1️⃣ n-gram 精确匹配率

计算不同长度的 n-gram(1-gram, 2-gram, ..., n-gram)在生成文本和参考文本中匹配的比例:

Pn=∑匹配的 n-gram 计数∑生成文本的 n-gram 计数P_n = \frac{\sum_{\text{匹配的 } n\text{-gram 计数}}}{\sum_{\text{生成文本的 } n\text{-gram 计数}}}Pn​=∑生成文本的 n-gram 计数​∑匹配的 n-gram 计数​​

其中:

  • 分子:生成文本的 n-gram 在参考文本中出现的次数

  • 分母:生成文本的 n-gram 总数

  • 通常计算 1-gram, 2-gram, 3-gram, 4-gram

2️⃣ 长度惩罚(Brevity Penalty, BP)

防止模型只生成短句(短句更容易匹配参考文本)。BP 计算公式如下:

BP={1,如果 c>re(1−rc),如果 c≤rBP = \begin{cases} 1, & \text{如果 } c > r \\ e^{(1 - \frac{r}{c})}, & \text{如果 } c \leq r \end{cases}BP={1,e(1−cr​),​如果 c>r如果 c≤r​

其中:

  • c 是生成文本的长度

  • r 是参考文本的长度

如果生成文本比参考文本短,惩罚因子 BP<1BP < 1BP<1 使 BLEU 分数变小。

3️⃣ 最终 BLEU 计算

BLEU=BP×exp⁡(∑n=1Nwnlog⁡Pn)BLEU = BP \times \exp \left( \sum_{n=1}^{N} w_n \log P_n \right)BLEU=BP×exp(n=1∑N​wn​logPn​)

其中:

  • PnP_nPn​ 是不同 n-gram 的精确率

  • wnw_nwn​ 是 n-gram 的权重(通常均匀分配,如 1-gram, 2-gram, 3-gram, 4-gram 各 25%)

  • BPBPBP 是长度惩罚


🔹 示例

假设:

  • 参考句子(Reference):"The cat is on the mat."

  • 生成句子(Hypothesis):"The cat is mat."

计算 1-gram 和 2-gram:

  • 1-gram 匹配("The", "cat", "is", "mat"):4/4 = 1.0

  • 2-gram 匹配("The cat", "cat is", "is mat"):2/3 ≈ 0.67

  • 长度惩罚

    • 生成句子长度 c=4c = 4c=4

    • 参考句子长度 r=6r = 6r=6

    • BP=e(1−6/4)=e−0.5≈0.606BP = e^{(1 - 6/4)} = e^{-0.5} \approx 0.606BP=e(1−6/4)=e−0.5≈0.606

最终:

BLEU=0.606×e(0.5×log⁡1.0+0.5×log⁡0.67)BLEU = 0.606 \times e^{(0.5 \times \log 1.0 + 0.5 \times \log 0.67)}BLEU=0.606×e(0.5×log1.0+0.5×log0.67)


🔥 Python 实现

可以用 nltksacrebleu 计算 BLEU:

1️⃣ 使用 nltk 计算 BLEU

📌 总结

  • BLEU 计算核心:n-gram 精确率 + 长度惩罚

  • 适用于:机器翻译、文本生成评估

  • 局限性

    • 不能捕捉语义信息(只计算 n-gram 匹配)

    • 过度偏向短句

    • 中文 BLEU 计算前需分词

我们来详细拆解 1-gram2-gram 匹配的计算过程。


📌 计算 1-gram 匹配

定义

1-gram(unigram)是指单个词,比如 "The", "cat", "is"

参考句子(Reference):

"The","cat","is","on","the","mat"\]\["The", "cat", "is", "on", "the", "mat"\]\["The","cat","is","on","the","mat"

生成句子(Hypothesis):

"The","cat","is","mat"\]\["The", "cat", "is", "mat"\]\["The","cat","is","mat"

计算 1-gram 精确率

  • 统计 生成句子 中的单词,并计算它们出现在参考句子中的次数

    • "The" ✅(参考中有)

    • "cat" ✅(参考中有)

    • "is" ✅(参考中有)

    • "mat" ✅(参考中有)

  • 计算 1-gram 精确率(Precision):

    P1=匹配的 1-gram 个数生成句子的 1-gram 总数P_1 = \frac{\text{匹配的 1-gram 个数}}{\text{生成句子的 1-gram 总数}}P1=生成句子的 1-gram 总数匹配的 1-gram 个数 P1=44=1.0P_1 = \frac{4}{4} = 1.0P1=44=1.0


📌 计算 2-gram 匹配

定义

2-gram(bigram)是指连续的两个单词,比如 "The cat", "cat is"

2-gram 列表

  • 参考句子的 2-gram(滑动窗口取 2 个词):

    "Thecat","catis","ison","onthe","themat"\]\["The cat", "cat is", "is on", "on the", "the mat"\]\["Thecat","catis","ison","onthe","themat"

  • 生成句子的 2-gram

    "Thecat","catis","ismat"\]\["The cat", "cat is", "is mat"\]\["Thecat","catis","ismat"

计算 2-gram 精确率

  • "The cat" ✅(参考中有)

  • "cat is" ✅(参考中有)

  • "is mat" ❌(参考中没有 "is mat"

匹配的 2-gram = 2

生成的 2-gram = 3

P2=23≈0.67P_2 = \frac{2}{3} \approx 0.67P2​=32​≈0.67


🔹 总结

  • 1-gram:P1=4/4=1.0P_1 = 4/4 = 1.0P1​=4/4=1.0

  • 2-gram:P2=2/3≈0.67P_2 = 2/3 \approx 0.67P2​=2/3≈0.67

  • 计算方法就是:

    • 找出 n-gram 片段

    • 看生成的 n-gram 里有多少个出现在参考文本中

    • 用匹配的 n-gram 个数 ÷ 生成的 n-gram 总数

相关推荐
产品经理独孤虾8 分钟前
人工智能大模型如何助力电商产品经理打造高效的商品工业属性画像
人工智能·机器学习·ai·大模型·产品经理·商品画像·商品工业属性
老任与码19 分钟前
Spring AI Alibaba(1)——基本使用
java·人工智能·后端·springaialibaba
蹦蹦跳跳真可爱58931 分钟前
Python----OpenCV(图像増强——高通滤波(索贝尔算子、沙尔算子、拉普拉斯算子),图像浮雕与特效处理)
人工智能·python·opencv·计算机视觉
雷羿 LexChien42 分钟前
从 Prompt 管理到人格稳定:探索 Cursor AI 编辑器如何赋能 Prompt 工程与人格风格设计(上)
人工智能·python·llm·编辑器·prompt
两棵雪松1 小时前
如何通过向量化技术比较两段文本是否相似?
人工智能
heart000_11 小时前
128K 长文本处理实战:腾讯混元 + 云函数 SCF 构建 PDF 摘要生成器
人工智能·自然语言处理·pdf
敲键盘的小夜猫1 小时前
LLM复杂记忆存储-多会话隔离案例实战
人工智能·python·langchain
开开心心_Every2 小时前
便捷的Office批量转PDF工具
开发语言·人工智能·r语言·pdf·c#·音视频·symfony
cooldream20092 小时前
「源力觉醒 创作者计划」_基于 PaddlePaddle 部署 ERNIE-4.5-0.3B 轻量级大模型实战指南
人工智能·paddlepaddle·文心大模型
亚里随笔2 小时前
L0:让大模型成为通用智能体的强化学习新范式
人工智能·llm·大语言模型·rlhf