机器翻译评测——BLEU算法详解
BLEU算法介绍和如何计算:
我们先举一个例子来说明:
原文:猫站在地上
机器译文 (candidate):the the the the
人工译文 (reference):The cat is standing on the ground
在计算1-gram(一元文法)的时候,the 都出现在译文中,因此匹配度为4/4 ,但是很明显 the 在人工译文中最多出现的次数只有2次,因此BLEU算法修正了这个值的算法,首先会计算该n-gram在译文中可能出现的最大次数:
Count是N-gram在机器翻译译文中的出现次数,Max_Ref_Count是该N-gram在一个参考译文中最大的出现次数,最终统计结果取两者中的较小值。然后在把这个匹配结果除以机器翻译译文的N-gram个数。
因此对于上面的例子来说,Count 就是 the 出现在机器译文中的次数,恰好为 4,Max_Ref_Count 就是 the 出现人工译文中的次数,恰好为2,所以这一次 修正后的1-gram的统计结果就是2/4。综上所述各阶N-gram的精度都可以按照下面这个公式计算:
所以 公式为:
这样就得出来 .
惩罚因子
上面的算法已经足够可以有效的翻译评估了,然而N-gram的匹配度可能会随着句子长度的变短而变好,因此会存在这样一个问题:一个翻译引擎只翻译出了句子中部分句子且翻译的比较准确,那么它的匹配度依然会很高。为了避免这种评分的偏向性,BLEU在最后的评分结果中引入了长度惩罚因子(Brevity Penalty)。
所以,我们可以得出:BLEU的公式了:
BLEU
其中 :
又是什么鬼?先不用想这么多,其实就是一些数学运算,它的作用就是让各阶n-gram取权重服从均匀分布,就是说不管是1-gram、2-gram、3-gram还是4-gram它们的作用都是同等重要的。由于随着n-gram的增大,总体的精度得分是呈指数下降的,所以一般N-gram最多取到4-gram。
当 N=4 的时候,那就是我们最常见的 BLEU-4 了。
怎么使用BLEU?
说实话,数学用人话来解释是非常困难的,我们还是来通过例子来学习,还是之前的:
机器翻译:The cat sat on the mat.
人工翻译:The cat is on the mat.
第一步:计算各阶n-gram的精度
P1 = 5 / 6 = 0.833333333333333
P2 = 3 / 5 = 0.6
P3 = 1 / 4 = 0.25
P4 = 0 / 3 = 0
第二步:加权求和
取权重:
加权求和:
−0.5198603854199589
第三步:求BP
机器翻译长度 = 参考译文长度,所以:
BP = 1
最后求BLEU-4
BLEU-4=1∗exp(−0.5198603854199589)=0.5946035575013605
BLEU 是特别好的机器翻译的评价指标,影响BLEU主要因素,还是匹配上的N-gram的长度,也就是 Pn的 分子,Candidate中的长度如果比reference中长,则Candidate的长度对BLEU的值影响不大。
机器翻译评测——BLEU算法详解相关推荐
- 机器翻译评测——BLEU算法详解 (新增 在线计算BLEU分值)评估
- 机器翻译自动评估-BLEU算法详解
BLEU综述: BLEU实质是对两个句子的共现词频率计算,但计算过程中使用好些技巧,追求计算的数值可以衡量这两句话的一致程度. BLEU容易陷入常用词和短译句的陷阱中,而给出较高的评分值.本文主要是对 ...
- 目标检测 RCNN算法详解
原文:http://blog.csdn.net/shenxiaolu1984/article/details/51066975 [目标检测]RCNN算法详解 Girshick, Ross, et al ...
- 7大排序算法详解+java实现
目录 0 概述 1 冒泡排序 2 选择排序 3 插入排序 4 希尔排序 5 快速排序 6 归并排序 7 基数排序 下载地址 7大排序算法详解文档及java代码实现(可直接运行)下载地址:https:/ ...
- 推荐系统简介+算法详解+项目介绍
目录标题 推荐系统简介 1.推荐系统目的 2.推荐系统的应用 3.推荐系统的基本思想 4.推荐系统的数据分析 5.推荐系统的分类 6.推荐算法简介 6.1 基于人口统计学的推荐算法(基于用户数据) 6 ...
- Matlab人脸检测算法详解
这是一个Matlab人脸检测算法详解 前言 人脸检测结果 算法详解 源代码解析 所调用函数解析 bwlabel(BW,n) regionprops rectangle 总结 前言 目前主流的人脸检测与 ...
- 图论-最短路Dijkstra算法详解超详 有图解
整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...
- C++中的STL算法详解
1.STL算法详解 STL提供能在各种容器中通用的算法(大约有70种),如插入.删除.查找.排序等.算法就是函数模板,算法通过迭代器来操纵容器中的元素.许多算法操作的是容器上的一个区间(也可以是整个容 ...
- 粒子群(pso)算法详解matlab代码,粒子群(pso)算法详解matlab代码
粒子群(pso)算法详解matlab代码 (1)---- 一.粒子群算法的历史 粒子群算法源于复杂适应系统(Complex Adaptive System,CAS).CAS理论于1994年正式提出,C ...
最新文章
- bootstrap datepicker Uncaught TypeError: Cannot call method 'split' of undefined问题
- php正则判断不规范字符串,php学习_第9章_字符串处理与正则表达式
- 漫谈ERP实施服务的三种境界
- ATPCS和AAPCS
- Google推出了一个名为“Google Public DNS”的域名解析系统
- 对I2C总线的时钟同步和总线仲裁的深入理解
- PHP —— 识别运算符实现逻辑比较
- 大道至简——软件工程实践者的思想 读后感3
- wamp 403 禁止访问
- 二维码QR码的“疯狂”广告
- 概率论:假设检验、极大似然估计、无偏估计
- 干货!大话EXT4文件系统完整版
- python生存分析入门
- python编程实践(一):统计智联招聘数据
- 「小程序JAVA实战」微信小程序简介(一)
- 二维码生成 API数据接口
- [Re]2022DASCTF Apr X FATE 防疫挑战赛
- 关于小程序如何长按复制长文本的方法(比较简单的一种)
- 精确计算时,不要使用float或double
- 广西省百色市谷歌卫星地图下载