什么是BLEU?

BLEU (Bilingual Evaluation Understudy) is an algorithm for evaluating the quality of text which has been machine-translated from one natural language to another. Quality is considered to be the correspondence between a machine's output and that of a human: "the closer a machine translation is to a professional human translation, the better it is" – this is the central idea behind BLEU. BLEU was one of the first metrics to achieve a high correlation with human judgements of quality, and remains one of the most popular automated and inexpensive metric. -- 维基百科

解释一下,首先bleu是一种文本评估算法,它是用来评估机器翻译专业人工翻译之间的对应关系,核心思想就是机器翻译越接近专业人工翻译,质量就越好,经过bleu算法得出的分数可以作为机器翻译质量的其中一个指标。

为什么要用BLEU?

现实中很多时候我们需要用人工来评价翻译结果的,但这种方式非常慢,并且成本非常高,因为你需要请足够专业的翻译人员才能给出相对靠谱的翻译评估结果,一般这种人工评价都偏主观,并且非常依赖专业水平和经验。

为了解决这一问题,机器翻译领域的研究人员就发明了一些自动评价指标比如BLEU,METEOR和NIST等,在这些自动评价指标当中,BLEU是目前最接近人类评分的。

METEOR和NIST评价指标,笔者还未做深入研究,有机会会针对这几个指标做个对比。

BLEU的原理是什么?

为什么BLEU能作为机器翻译的一个评估指标,还是得看看它的原理是什么。

接下来我们逐个这几个概念:

  • N-gram
  • 惩罚因子
  • Bleu算法

N-gram

N-gram是一种统计语言模型,该模型可以将一句话表示n个连续的单词序列,利用上下文中相邻词间的搭配信息,计算出句子的概率,从而判断一句话是否通顺。

BLEU也是采用了N-gram的匹配规则,通过它能够算出比较译文和参考译文之间n组词的相似的一个占比。

例子:

原文: 猫坐在垫子上
机器翻译:The cat sat on the mat.
人工翻译:The cat is on the mat.

我们分别看下1-4 gram的匹配情况:

1-gram

 
1-gram

可以看到机器翻译6个词,有5个词命中参考以为,那么它的匹配度为 5/6。

2-gram

 
2-gram

2元词组的匹配度则是 3/5。

3-gram

 
3-gram

3元词组的匹配度是1/4。

4-gram

4元词组的匹配情况就没有了。

经过上面的举例你应该很清楚n-gram是怎么计算了吧。一般情况1-gram可以代表原文有多少词被单独翻译出来,可以反映译文的充分性,2-gram以上可以反映译文的流畅性,它的值越高说明可读性越好。这两个指标是能够跟人工评价对标的。

但是它存在一些特殊情况,通过n-gram是没办法反映译文的正确性的,例如:

原文:猫坐在垫子上
机器译文: the the the the the the the.
参考译文:The cat is on the mat.

 
1-gram错误情况

如果计算1-gram的话,你会发现所有the都匹配上了,匹配度是7/7,这个肯定不能反映充分性的,怎么办?

BLEU修正了这个算法,提出取机器翻译译文N-gram的出现次数和参考译文中N-gram最大出现次数中的最小值的算法,具体如下:

 
这里写图片描述

所以上面修正后的结果应该是count = 7,Max_ref_Count = 2,取它们之间的最小值为2,那么修正后的1-gram的匹配度应该为2/7

是时候拿出论文中的计算各阶N-gram的精度计算公式:

 
Pn

一眼看过去是不是觉得很高大上,看不懂了有木有,解释一下吧:

 
这里写图片描述

表示取n-gram在翻译译文和参考译文中出现的最小次数,比如上面的1-gram出现的最小次数是2.

 
这里写图片描述

表示取n-gram在翻译译文中出现次数,比如上面的1-gram出现的次数是7.

ok,到这里你基本清楚bleu中n-gram精度到底是怎么计算的了。

上面的计算已经足够好了吗? No,还得继续改进,举个例子:

机器译文:The cat
参考译文:The cat is on the mat.

如果出现这种短句子,你会发现计算n-gram的精度会得很高分,很显然这次的得分为1,但实际上它的得分应该是比较低的。针对翻译译文长度比参考译文要短的情况,就需要一个惩罚的机制去控制。

惩罚因子

 
BP

这里的c是机器译文的词数,r是参考译文的词数,

这样的话我们重新算精度就应该是:

BP = e^(1- 6 / 2) = 7.38905609893065

e是一个常无理数,是一个无限不循环小数,所以用e来表示2.718281828

Bleu算法

经过上面的各种改进,BLEU最终的计算公式如下:

 
BLEU

BP我们已经知道了,那么

 
这里写图片描述

又是什么鬼?先不用想这么多,其实就是一些数学运算,它的作用就是让各阶n-gram取权重服从均匀分布,就是说不管是1-gram、2-gram、3-gram还是4-gram它们的作用都是同等重要的。由于随着n-gram的增大,总体的精度得分是呈指数下降的,所以一般N-gram最多取到4-gram

怎么使用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

第二步:加权求和

取权重:Wn = 1 / 4 = 0.25

加权求和:

 
加权求和

第三步:求BP

机器翻译长度 = 参考译文长度,所以:

BP = 1

最后求BLEU

 
BLEU计算

写程序的时候,不用费那么大的劲去实现上面的算法,现成的工具就可以用:

from nltk.translate.bleu_score import sentence_bleu
reference = [['The', 'cat', 'is', 'on', 'the', 'mat']]
candidate = ['The', 'cat', 'sat', 'on', 'the', 'mat']
score = sentence_bleu(reference, candidate)
print(score)
# 输出结果:0.5946035575013605

BLEU的优缺点?

优点:方便、快速,结果比较接近人类评分。

缺点

  1. 不考虑语言表达(语法)上的准确性;
  2. 测评精度会受常用词的干扰;
  3. 短译句的测评精度有时会较高;
  4. 没有考虑同义词或相似表达的情况,可能会导致合理翻译被否定;

BLEU本身就不追求百分之百的准确性,也不可能做到百分之百,它的目标只是给出一个快且不差的自动评估解决方案。

最后

BLEU原理其实并不是很复杂,更多是基于n-gram基础上的优化,写这篇文章的目的也是想梳理清楚BLEU能够解决的问题,还有不能解决的问题,这对自己后续思考如何通过其他手段去更好地提高翻译评估的能力有一定的启发作用。翻译质量评估本身就是MT领域的热门课题,如果我们能够找到一个比BLEU更好的,这将会产生很大的价值。

最后,文中很多内容从其他参考文章都可以找到,参考文章对BLEU如何计算,原理也有很不错的讲解,大家也可以参考学习下。

参考文章

作者:IT_xiao小巫
链接:https://www.jianshu.com/p/15c22fadcba5
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

BLEU (Bilingual Evaluation Understudy)的更多相关文章

  1. 关于机器翻译评价指标BLEU(bilingual evaluation understudy)的直觉以及个人理解

    最近我在做Natural Language Generating的项目,接触到了BLEU这个指标,虽然知道它衡量的是机器翻译的效果,也在一些文献的experiment的部分看到过该指标,但我实际上经常 ...

  2. bilingual evaluation understudy

    BLEU is designed to approximate human judgement at a corpus level, and performs badly if used to eva ...

  3. 机器翻译评测——BLEU算法详解

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/7679284.html 前言 近年来,在自然语言研究领域中, ...

  4. 机器翻译质量评测算法-BLEU

    机器翻译领域常使用BLEU对翻译质量进行测试评测.我们可以先看wiki上对BLEU的定义. BLEU (Bilingual Evaluation Understudy) is an algorithm ...

  5. Deep Learning基础--机器翻译BLEU与Perplexity详解

    前言 近年来,在自然语言研究领域中,评测问题越来越受到广泛的重视,可以说,评测是整个自然语言领域最核心和关键的部分.而机器翻译评价对于机器翻译的研究和发展具有重要意义:机器翻译系统的开发者可以通过评测 ...

  6. 学习笔记TF067:TensorFlow Serving、Flod、计算加速,机器学习评测体系,公开数据集

    TensorFlow Serving https://tensorflow.github.io/serving/ . 生产环境灵活.高性能机器学习模型服务系统.适合基于实际数据大规模运行,产生多个模型 ...

  7. 机器阅读理解综述Neural Machine Reading Comprehension Methods and Trends(略读笔记)

    标题:Neural Machine Reading Comprehension: Methods and Trends 作者:Shanshan Liu, Xin Zhang, Sheng Zhang, ...

  8. deeplearning.ai 序列模型 Week 3 Sequence models & Attention mechanism

    1. 基础模型 A. Sequence to sequence model:机器翻译.语音识别.(1. Sutskever et. al., 2014. Sequence to sequence le ...

  9. (CV学习笔记)看图说话(Image Captioning)-1

    Background 分别使用CNN和LSTM对图像和文字进行处理: 将两个神经网络结合: 应用领域 图像搜索 安全 鉴黄 涉猎知识 数字图像处理 图像读取 图像缩放 图像数据纬度变换 自然语言处理 ...

随机推荐

  1. 查看当前的app运行的是哪个Activity

    1.确认手机连接了adb-->检查方式:adb devices 2.手机运行任意app,随意进入一个页面 3.此时cmd运行:adb shell "dumpsys window | g ...

  2. String类型的转型

    字符串类型的转型在java中常用的方法有标题中的三种. 简单介绍: 1.toString,需要保证调用这个方法的类.方法.变量不为null,否则会报空指针. 2.String.valueOf.这个方法 ...

  3. Python re模块, xpath 用法

    1.re正则的用法总结 (1). ^ 表示以哪个字符为开头      eg:  '^g' 表示以g开头的字符串      . 表示任意字符 '^g.d'  表示以g开头第二个为任意字符,第三个为b的字 ...

  4. 053 kafka自带的生产者与消费者测试

    1.命令 2.启动生产者 bin/kafka-console-producer.sh --topic beifeng --broker-list linux-hadoop01.ibeifeng.com ...

  5. js根据银行卡号进行判断属于哪个银行并返回银行卡类型

    在做绑定银行卡,输入银行卡的时候,产品有这么一个需求,需要用户输入银行卡号的时候,显示对应的银行卡名称及简称.于是苦苦寻觅,终于找到了支付宝的开放API,银行卡校验接口 https://ccdcapi ...

  6. 第K人||约瑟夫环(链表)

    http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4442 很容易超时 通过数组来记录,删除 //数组从1开始好像不行 后面一些数字就乱码了,因 ...

  7. HDU 3416 Marriage Match IV 【最短路】(记录路径)+【最大流】

    <题目链接> 题目大意: 给你一张图,问你其中没有边重合的最短路径有多少条. 解题分析: 建图的时候记得存一下链式后向边,方便寻找最短路径,然后用Dijkstra或者SPFA跑一遍最短路, ...

  8. 分布式服务框架XXL-RPC

    <分布式服务框架XXL-RPC>      一.简介 1.1 概述 XXL-RPC 是一个分布式服务框架,提供稳定高性能的RPC远程服务调用功能.拥有"高性能.分布式.注册中心. ...

  9. hash碰撞POC

    hash碰撞POC: 该类型漏洞POC编写过程难点有二: 一. hash碰撞数据的产生或收集 二. 使用responseTime来判断是否存在hash,如何精确的得到 三. 如何估算出服务器的处理/响 ...

  10. 大数据技术 - MapReduce的Shuffle及调优

    本章内容我们学习一下 MapReduce 中的 Shuffle 过程,Shuffle 发生在 map 输出到 reduce 输入的过程,它的中文解释是 “洗牌”,顾名思义该过程涉及数据的重新分配,主要 ...