为了解决这个问题,首先需要知道BLEU值是如何计算出来的。
BLEU全称是Bilingual Evaulation Understudy。其意思是双语评估替补。所谓Understudy(替补),意思是代替人进行翻译结果的评估。

BLEU的思想基于Count based Model,尽管它并不完美,但它提供了一种非常有效的以单一数字指标评估机器翻译结果的方法。

下面以一个例子说明BLEU的计算。

假如正确的翻译参考(2)个是:

The cat is on the desk.

There is a cat on the desk.

那么很自然想到,用实际翻译结果中出现在参考翻译中的单词数除以实际翻译结果单词总数,是一种评估方法。例如,若翻译结果为The cat are on the desk。则评分为:\(5/6\),只有are没有出现,这看起来是合理的。但是若翻译结果为is is is is is is is,那么很显然,评分为\(6/6\),is在参考翻译句子中出现了。很明显,这就不对了。

一个解决方法是,规定实际翻译结果中每个单词的计数不得超过在单个参考翻译中出现的最大次数。即上述is is is is is is结果,单词is在参考翻译中出现的最大次数是1,因此,评分为\(1/6\)。

这是比较合理的。

还有个因素需要考虑,假如实际翻译句子为desk the on cat a is there,那么得分为\(7/7\),虽然单词都出现了,上面的方法仅仅考虑了uni-gram,句子的流畅度却没有考虑。因此,根据“平滑”的思想,进一步考虑bi-gram,tri-gram。实际应用中,一般是考虑1-gram到4-gram。具体来说:

计算所有单个单词,\(x_i\)在参考翻译中的得分,计算方式为:

\(在参考翻译中的最大出现次数在实际翻译中的出现次数score1 = \frac{\sum_{i=1}^nx_i在参考翻译中的最大出现次数}{\sum_{i=1}^nx_i在实际翻译中的出现次数}\)

式中,\(n\)是一元组,即单个单词数(不包括重复)。

计算所有二元组,记为\(x_i\)在参考翻译中的得分,计算方式为:

\(在参考翻译中的最大出现次数在实际翻译中的出现次数score2 = \frac{\sum_{i=1}^nx_i在参考翻译中的最大出现次数}{\sum_{i=1}^nx_i在实际翻译中的出现次数}\)

式中,\(n\)是二元组数(不包括重复)。

类似的计算三元组,四元组得分。

可见,若翻译结果好,每个得分的值就是1。

最后,将四个得分平均(或加权),得到最后的分数:

\(score = \frac{1}{4}*(score1+score2+score3+score4)\)

实际应用中,常常取自然指数作为最后的评分值,即:

$score =e^{ \frac{1}{4}*(score1+score2+score3+score4)} $

现在的应用(paper)中评估BLEU值,一般取n-gram从1到4,并不做平均,而是做加和再取对数值。即实际中的BLEU值计算方式为:

\(BLEU = e^{ (score1+score2+score3+score4)}\)

可见,如果翻译结果恰为某个参考翻译结果,四个得分都取1,最终的\(BLEU\)值为\(e^4=54.598\),即BLEU值最大为54.598分。

【NLP】BLEU值满分是100分吗?的更多相关文章

  1. Perfmon——为什么“% Disk Time”计数器的值会大于100%?

    最近在使用perfmon做性能测试时发现,“% Disk Time”计数器的值总是会大于100%.如下图所示. perfmon上对“% Disk Time”的中文描述为: % Disk Time 指所 ...

  2. 如何在C艹大作业上用复数计算器拿下一个100分

    0. qt qt简介: 百度百科 下载:官网下载 申请个账号就可以免费用了 安装方式可以在百度上找到,建议安装MinGW,其余自选. 1. 建立第一个qt文件 打开Qt Creator,点击文件,点击 ...

  3. (很难啊)如何实时获取DBGrid 中当前单元格输入的内容? [问题点数:100分,结帖人yifawu100]

    如何获取DBGrid 中当前单元格输入的内容? 还没输入完成,我想实时获取 Cell中的内容,以便作其他处理,用什么事件呢? 所以Field的Onchange事件是没用的. DBGrid1.Selec ...

  4. Coursera Algorithms Programming Assignment 3: Pattern Recognition (100分)

    题目原文详见http://coursera.cs.princeton.edu/algs4/assignments/collinear.html 程序的主要目的是寻找n个points中的line seg ...

  5. CCF201409-2 画图 java(100分)

    试题编号: 201409-2 试题名称: 画图 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在一个定义了直角坐标系的纸上,画一个(x1,y1)到(x2,y2)的矩形指将横坐 ...

  6. CCF201503-2 数字排序 java(100分)

    试题编号: 201503-2 试题名称: 数字排序 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...

  7. CCF201509-2 日期计算 java(100分)

    试题编号: 201509-2 试题名称: 日期计算 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定一个年份y和一个整数d,问这一年的第d天是几月几日? 注意闰年的2月有2 ...

  8. CCF201512-2 消除类游戏 java(100分)

    试题编号: 201512-2 试题名称: 消除类游戏 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进 ...

  9. CCF201609-2 火车购票 java(100分)

    试题编号: 201609-2 试题名称: 火车购票 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一 ...

随机推荐

  1. Poj1799

    Yeehaa! Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 15082   Accepted: 6675 Descript ...

  2. 《JavaScript高级程序设计》笔记:表单脚本(十四)

    表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在JS中,表单对应的是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而 ...

  3. 【AO笔记】有关使用AO基于shp文件创建网络数据集的一个细节

    前些日子,和群友交流时提及shp文件创建单一网络数据集的创建问题. 由于项目需求,用shp文件创建网络合适,所以不得不去找一些古老的代码资料... 以前的研究中,创建网络数据集是根据IDatasetC ...

  4. 云服务器内,nginx安装部署,Xshell,Xftp安装

    nginx部署 三丰云云服务器,安装nginx nginx部署 在宝塔面板,添加Nginx安装,一般进来会默认推荐安装几款软件,mysql等,暂时可以后面再装,先把nginx装上去,去感受将前端页面放 ...

  5. Chromium被用于Microsoft Edge与ChakraCore的未来【译】

    注:英语不好,力求大概能懂.持笔人是:Limin Zhu,好像是中国人,但是没有提供中文版本. 大家好,ChakraCore的朋友们: 昨天,微软公布,Microsoft Edge桌面浏览器采用Chr ...

  6. UE3中Object和Actor的创建与销毁

    创建Object ① 在uc脚本中使用new运算符来创建 /********************************************************************** ...

  7. Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器

    我们知道,docker能实现应用打包隔离,实现快速部署和迁移.如果我们开发应用使用了spring cloud + spring boot架构,那么,通过docker-maven-plugin实现快速构 ...

  8. Nginx-Linux下安装

    Nginx一般用来做反向代理,实现负载均衡.由于Nginx是用c开发的,所以安装前我们需要安装相应的环境,比如gcc等.下面是本人安装操作的步骤: step1.安装gcc:yum install gc ...

  9. java倒计时三种简单实现方式

    写完js倒计时,突然想用java实现倒计时,写了三种实现方式 一:设置时长的倒计时: 二:设置时间戳的倒计时: 三:使用java.util.Timer类实现的时间戳倒计时 代码如下: package ...

  10. ES6的Map如何遍历

    projectMap.forEach(function (value, key, map) { //value和key就是map的key,value,map是map本身 });