机器翻译评价指标之BLEU详细计算过程
原文连接 https://blog.csdn.net/guolindonggld/article/details/56966200
1. 简介
BLEU(Bilingual Evaluation Understudy),相信大家对这个评价指标的概念已经很熟悉,随便百度谷歌就有相关介绍。原论文为BLEU: a Method for Automatic Evaluation of Machine Translation,IBM出品。
本文通过一个例子详细介绍BLEU是如何计算以及NLTKnltk.align.bleu_score模块的源码。
首先祭出公式:
其中,
注意这里的BLEU值是针对一条翻译(一个样本)来说的。
NLTKnltk.align.bleu_score模块实现了这里的公式,主要包括三个函数,两个私有函数分别计算P和BP,一个函数整合计算BLEU值。
# 计算BLEU值
def bleu(candidate, references, weights)
# (1)私有函数,计算修正的n元精确率(Modified n-gram Precision)
def _modified_precision(candidate, references, n)
# (2)私有函数,计算BP惩罚因子
def _brevity_penalty(candidate, references)
例子:
候选译文(Predicted):
It is a guide to action which ensures that the military always obeys the commands of the party
参考译文(Gold Standard)
1:It is a guide to action that ensures that the military will forever heed Party commands
2:It is the guiding principle which guarantees the military forces always being under the command of the Party
3:It is the practical guide for the army always to heed the directions of the party
2. Modified n-gram Precision计算(也即是PnPn)
def _modified_precision(candidate, references, n):
counts = Counter(ngrams(candidate, n))
if not counts:
return 0
max_counts = {}
for reference in references:
reference_counts = Counter(ngrams(reference, n))
for ngram in counts:
max_counts[ngram] = max(max_counts.get(ngram, 0), reference_counts[ngram])
clipped_counts = dict((ngram, min(count, max_counts[ngram])) for ngram, count in counts.items())
return sum(clipped_counts.values()) / sum(counts.values())
我们这里nn取值为4,也就是从1-gram计算到4-gram。
Modified 1-gram precision:
首先统计候选译文里每个词出现的次数,然后统计每个词在参考译文中出现的次数,Max表示3个参考译文中的最大值,Min表示候选译文和Max两个的最小值。
| 词 | 候选译文 | 参考译文1 | 参考译文2 | 参考译文3 | Max | Min |
|---|---|---|---|---|---|---|
| the | 3 | 1 | 4 | 4 | 4 | 3 |
| obeys | 1 | 0 | 0 | 0 | 0 | 0 |
| a | 1 | 1 | 0 | 0 | 1 | 1 |
| which | 1 | 0 | 1 | 0 | 1 | 1 |
| ensures | 1 | 1 | 0 | 0 | 1 | 1 |
| guide | 1 | 1 | 0 | 1 | 1 | 1 |
| always | 1 | 0 | 1 | 1 | 1 | 1 |
| is | 1 | 1 | 1 | 1 | 1 | 1 |
| of | 1 | 0 | 1 | 1 | 1 | 1 |
| to | 1 | 1 | 0 | 1 | 1 | 1 |
| commands | 1 | 1 | 0 | 0 | 1 | 1 |
| that | 1 | 2 | 0 | 0 | 2 | 1 |
| It | 1 | 1 | 1 | 1 | 1 | 1 |
| action | 1 | 1 | 0 | 0 | 1 | 1 |
| party | 1 | 0 | 0 | 1 | 1 | 1 |
| military | 1 | 1 | 1 | 0 | 1 | 1 |
然后将每个词的Min值相加,将候选译文每个词出现的次数相加,然后两值相除即得P1=3+0+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+13+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1=0.95P1=3+0+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+13+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1=0.95。
类似可得:
Modified 2-gram precision:
| 词 | 候选译文 | 参考译文1 | 参考译文2 | 参考译文3 | Max | Min |
|---|---|---|---|---|---|---|
| ensures that | 1 | 1 | 0 | 0 | 1 | 1 |
| guide to | 1 | 1 | 0 | 0 | 1 | 1 |
| which ensures | 1 | 0 | 0 | 0 | 0 | 0 |
| obeys the | 1 | 0 | 0 | 0 | 0 | 0 |
| commands of | 1 | 0 | 0 | 0 | 0 | 0 |
| that the | 1 | 1 | 0 | 0 | 1 | 1 |
| a guide | 1 | 1 | 0 | 0 | 1 | 1 |
| of the | 1 | 0 | 1 | 1 | 1 | 1 |
| always obeys | 1 | 0 | 0 | 0 | 0 | 0 |
| the commands | 1 | 0 | 0 | 0 | 0 | 0 |
| to action | 1 | 1 | 0 | 0 | 1 | 1 |
| the party | 1 | 0 | 0 | 1 | 1 | 1 |
| is a | 1 | 1 | 0 | 0 | 1 | 1 |
| action which | 1 | 0 | 0 | 0 | 0 | 0 |
| It is | 1 | 1 | 1 | 1 | 1 | 1 |
| military always | 1 | 0 | 0 | 0 | 0 | 0 |
| the military | 1 | 1 | 1 | 0 | 1 | 1 |
P2=1017=0.588235294P2=1017=0.588235294
Modified 3-gram precision:
| 词 | 候选译文 | 参考译文1 | 参考译文2 | 参考译文3 | Max | Min |
|---|---|---|---|---|---|---|
| ensures that the | 1 | 1 | 0 | 0 | 1 | 1 |
| which ensures that | 1 | 0 | 0 | 0 | 0 | 0 |
| action which ensures | 1 | 0 | 0 | 0 | 0 | 0 |
| a guide to | 1 | 1 | 0 | 0 | 1 | 1 |
| military always obeys | 1 | 0 | 0 | 0 | 0 | 0 |
| the commands of | 1 | 0 | 0 | 0 | 0 | 0 |
| commands of the | 1 | 0 | 0 | 0 | 0 | 0 |
| to action which | 1 | 0 | 0 | 0 | 0 | 0 |
| the military always | 1 | 0 | 0 | 0 | 0 | 0 |
| obeys the commands | 1 | 0 | 0 | 0 | 0 | 0 |
| It is a | 1 | 1 | 0 | 0 | 1 | 1 |
| of the party | 1 | 0 | 0 | 1 | 1 | 1 |
| is a guide | 1 | 1 | 0 | 0 | 1 | 1 |
| that the military | 1 | 1 | 0 | 0 | 1 | 1 |
| always obeys the | 1 | 0 | 0 | 0 | 0 | 0 |
| guide to action | 1 | 1 | 0 | 0 | 1 | 1 |
P3=716=0.4375P3=716=0.4375
Modified 4-gram precision:
| 词 | 候选译文 | 参考译文1 | 参考译文2 | 参考译文3 | Max | Min |
|---|---|---|---|---|---|---|
| to action which ensures | 1 | 0 | 0 | 0 | 0 | 0 |
| action which ensures that | 1 | 0 | 0 | 0 | 0 | 0 |
| guide to action which | 1 | 0 | 0 | 0 | 0 | 0 |
| obeys the commands of | 1 | 0 | 0 | 0 | 0 | 0 |
| which ensures that the | 1 | 0 | 0 | 0 | 0 | 0 |
| commands of the party | 1 | 0 | 0 | 0 | 0 | 0 |
| ensures that the military | 1 | 1 | 0 | 0 | 1 | 1 |
| a guide to action | 1 | 1 | 0 | 0 | 1 | 1 |
| always obeys the commands | 1 | 0 | 0 | 0 | 0 | 0 |
| that the military always | 1 | 0 | 0 | 0 | 0 | 0 |
| the commands of the | 1 | 0 | 0 | 0 | 0 | 0 |
| the military always obeys | 1 | 0 | 0 | 0 | 0 | 0 |
| military always obeys the | 1 | 0 | 0 | 0 | 0 | 0 |
| is a guide to | 1 | 1 | 0 | 0 | 1 | 1 |
| It is a guide | 1 | 1 | 0 | 0 | 1 | 1 |
P4=415=0.266666667P4=415=0.266666667
然后我们取w1=w2=w3=w4=0.25w1=w2=w3=w4=0.25,也就是Uniform Weights。
所以:
∑Ni=1wnlogPn=0.25∗logP1+0.25∗logP2+0.25∗logP3+0.25∗logP4=−0.684055269517∑i=1NwnlogPn=0.25∗logP1+0.25∗logP2+0.25∗logP3+0.25∗logP4=−0.684055269517
3. Brevity Penalty 计算
def _brevity_penalty(candidate, references):
c = len(candidate)
ref_lens = (len(reference) for reference in references)
#这里有个知识点是Python中元组是可以比较的,如(0,1)>(1,0)返回False,这里利用元组比较实现了选取参考翻译中长度最接近候选翻译的句子,当最接近的参考翻译有多个时,选取最短的。例如候选翻译长度是10,两个参考翻译长度分别为9和11,则r=9.
r = min(ref_lens, key=lambda ref_len: (abs(ref_len - c), ref_len))
print 'r:',r
if c > r:
return 1
else:
return math.exp(1 - r / c)
下面计算BP(Brevity Penalty),翻译过来就是“过短惩罚”。由BP的公式可知取值范围是(0,1],候选句子越短,越接近0。
候选翻译句子长度为18,参考翻译分别为:16,18,16。
所以c=18c=18,r=18r=18(参考翻译中选取长度最接近候选翻译的作为rr)
所以BP=e0=1BP=e0=1
4. 整合
最终BLEU=1⋅exp(−0.684055269517)=0.504566684006BLEU=1⋅exp(−0.684055269517)=0.504566684006。
BLEU的取值范围是[0,1],0最差,1最好。
通过计算过程,我们可以看到,BLEU值其实也就是“改进版的n-gram”加上“过短惩罚因子”。
机器翻译评价指标之BLEU详细计算过程的更多相关文章
- 机器翻译评价指标 — BLEU算法
1,概述 机器翻译中常用的自动评价指标是 $BLEU$ 算法,除了在机器翻译中的应用,在其他的 $seq2seq$ 任务中也会使用,例如对话系统. 2 $BLEU$算法详解 假定人工给出的译文为$re ...
- linux主机load average的概念&&计算过程&&注意事项
最近开发的一个模块需要根据机房各节点的负载情况(如网卡IO.load average等指标)做任务调度,刚开始对Linux机器load average这项指标不是很清楚,经过调研,终于搞清楚了其计算方 ...
- 串口调试助手vc源程序及其详细编写过程
串口调试助手vc源程序及其详细编写过程 目次: 1.建立项目 2.在项目中插入MSComm控件 3.利用ClassWizard定义CMSComm类控制变量 4.在对话框中添加控件 5.添加串口事件 ...
- HTTPS详解二:SSL / TLS 工作原理和详细握手过程
HTTPS 详解一:附带最精美详尽的 HTTPS 原理图 HTTPS详解二:SSL / TLS 工作原理和详细握手过程 在上篇文章HTTPS详解一中,我已经为大家介绍了 HTTPS 的详细原理和通信流 ...
- 主动模式下FTP的详细工作过程(转) 挺详细
主动模式下FTP的详细工作过程 PORT FTP是常用的FTP工作方式,当客户端的连接请求到来时,FTP服务器会利用默认的21端口与客户端建立连接,该连接属于命令通道,利用该通道来下达控 制指令: ...
- Tomcat7.0.22在Windows下详细配置过程
Tomcat7.0.22在Windows下详细配置过程 一.JDK1.7安装 1.下载jdk,下载地址:http://www.oracle.com/technetwork/java/javase/do ...
- zabbix3.0.4使用percona-monitoring-plugins插件来监控mysql5.6的详细实现过程
zabbix3.0.4使用percona-monitoring-plugins插件来监控mysql5.6的详细实现过程 因为Zabbix自带的MySQL监控没有提供可以直接使用的Key,所以一般不采用 ...
- Webmin详细安装过程及问题解决
管理系统是件艰巨的任务,创建用户账户,配置服务,检查日志,还有系统管理员必须面对的所有其他的职责,都使系统管理工作成为一个不小的负担.下面介绍一个叫webmin的软件,webmin软件安装后能让读者从 ...
- 一个DOS攻击木马的详细分析过程
一个DOS攻击木马的详细分析过程 0×01 起因 网路流量里发现了大量的的1.exe的文件,而且一直在持续,第一感觉就像是一个木马程序,而且每个1.exe的MD5都不一样,对比发现只有几个字节不一样( ...
随机推荐
- 【LOJ】#2548. 「JSOI2018」绝地反击
题解 卡常卡不动,我自闭了,特判交上去过了 事实上90pts= = 我们考虑二分长度,每个点能覆盖圆的是一段圆弧 然后问能不能匹配出一个正多边形来 考虑抖动多边形,多边形的一个端点一定和圆弧重合 如果 ...
- 【Java】 大话数据结构(14) 排序算法(1) (冒泡排序及其优化)
本文根据<大话数据结构>一书,实现了Java版的冒泡排序. 更多:数据结构与算法合集 基本概念 基本思想:将相邻的元素两两比较,根据大小关系交换位置,直到完成排序. 对n个数组成的无序数列 ...
- 027 Spark的优化总结
1.四个部分
- 006.SMB之用户管理
一 用户添加 注意: 1 添加samba密码必须已经是系统用户,才能添加为samba用户. 2 samba账户密码可以和系统账号密码不一致(建议设为不同密码). 1.1 smbpasswd [root ...
- BZOJ.4514.[SDOI2016]数字配对(费用流SPFA 二分图)
BZOJ 洛谷 \(Solution\) 很显然的建二分图后跑最大费用流,但有个问题是一个数是只能用一次的,这样二分图两部分都有这个数. 那么就用两倍的.如果\(i\)可以向\(j'\)连边,\(j\ ...
- BZOJ3779 : 重组病毒
一个点的感染时间为它到根路径上虚边数+1. 用Link-Cut Tree模拟虚实边切换,每次切换时等价于在一段或两段DFS序区间更新,线段树维护即可. 时间复杂度$O(n\log^2n)$. #inc ...
- 【BZOJ-3218】a+b Problem 最小割 + 可持久化线段树
3218: a + b Problem Time Limit: 20 Sec Memory Limit: 40 MBSubmit: 1320 Solved: 498[Submit][Status] ...
- [原创]用Charles模拟App各种网络带宽测试介绍
[原创]用Charles模拟App各种网络带宽测试介绍 相信每个测试在进行自己公司App测试时,都会碰到一个问题,如何去模拟各种App在各种带宽下的测试情况,估计很少有公司直接去采用2g/3g/4g卡 ...
- 详细分析Memcached缓存与Mongodb数据库的优点与作用
http://www.mini188.com/showtopic-1604.aspx 本文详细讲下Memcached和Mongodb一些看法,以及结合应用有什么好处,希望看到大家的意见和补充. Mem ...
- C#基于SMTP协议和SOCKET通信,实现邮件内容和附件的发送,并可隐藏收件人
经过几天的努力,从完全不懂SMTP到折腾出个可以发送邮件内容和附件的DEMO.话少说,直接上代码. using System; using System.Collections.Generic; us ...