最近我在作Natural Language Generating的项目,接触到了BLEU这个指标,虽然知道它衡量的是机器翻译的效果,也在一些文献的experiment的部分看到过该指标,但我实际上常常会略去阅读实验效果的部分(纯粹感受不如理论部分激动人心哈哈哈),如今轮到本身作项目了,下定决心要搞懂这个指标到底在干吗。不足之处仍是但愿你们可以指正。同时也欢迎你们转载个人这篇blog 原创不易还请注明出处~html
首先是原始论文地址: https://www.aclweb.org/anthology/P02-1040.pdf
其次我在阅读原始论文的时候也参考了这篇博客:http://www.javashuo.com/article/p-mmkmrava-nu.html 对个人帮助也很大web
接下来纯粹是按照个人我的理解对原论文进行的一个提炼 故未必表明论文的本意。app
BLEU用于衡量机器翻译结果(candidate)和参考译文(reference)之间的类似程度。 BLEU能够衡量任意语种之间的翻译效果。它的前提假设是:翻译效果的好坏能够由n-gram在candidate和reference中出现的频率来体现。直觉上来讲,若是candidate中的每个单词(或者bi-gram, tri-gram)出现的频率和reference中的每个单词(或者bi-gram, tri-gram)的出现频率差很少,那么咱们就能够认为机器翻译的效果很好。可是这种直觉理解存在必定的问题,须要正式化(formalization)。spa
假定翻译效果的好坏能够n-gram的频率来体现,那么依然存在如下的问题:翻译
如何正式化所谓的频率相近?code
给定一句机器翻译结果,能够存在多句参考译文orm
如何衡量一篇文章(包含多个句子)的翻译效果好坏?htm
基于1,2,3给出的metric是否存在让某些低质量的candidate反而得到好评的可能性?blog
下面针对上述问题给出解答。ip
直觉上,一句句子中包含多个单词(uni-gram), 若是大部分单词都出如今了reference中,则认为这是一句好的翻译句子。很天然的,会想到用
precision=number of unigram in candidate which appears in reference /number of unigram in candidate
但在正式化以前,这个直觉存在一个错误,考虑以下例子:
Candidate: the the the the the the the Reference : The cat is on the mat
Candidate一共有7个单词,每个单词都出如今了Reference当中,因此precision=7/7,很野路子。
这个直觉的本质问题是reference中只有2个the(忽略大小写),而Candidate中有7个the,因此合理的度量应该是2/7,也就是类似度受到Reference中the的出现频率的制约。
下面结合问题2一块儿给出BLEU的初步正式化。
声明:以后若是是reference则指代一句参考译文,references指代多句参考译文
Candidate: the the the the the the the cat cat Reference1: There is a cat on the mat Reference2: The cat is on the mat
计算BLEU的步骤以及直觉以下,先以unigram为例
1. 计算Candidate中全部单词的出现频率, 此处为 {the: 7, cat: 1} 2. 计算全部unigram在每一句referece中出现的频率, 此处应为: {the in Ref1: 1, the in Ref2: 2, cat in Ref1: 1, cat in Ref2: 1} 3. 保留每个unigram在references中最大的频数,获得: {the in Ref2: 2, cat in Ref1: 1} 之因此保留最大频数,我认为体现了“宽容”的思想, 不一样的reference由不一样的翻译人员给出,体现了翻译人员不一样的风格,在这种多风格中选取和candidate最类似的 便可,没必要吹毛求疵 4. 'Clipped' Step 这一步就是抑制第一个例子中的“野路子” the = min(the in Ref2, the) = (2,7) = 2 cat = min(the in Ref1, cat) = (1,1) = 1 5 计算precision p = (2+1)/(7+1)=3/8
计算bigram, trigram的思路也和unigram同样,在原来的论文中,做者提到:
A translation using the same words (1-grams) as in the references tends to satisfy adequacy. The longer n-gram matches account for fluency.
unigram用来衡量adequacy, 有两种状况须要考虑:
若是candidate的翻译结果多出了许多未曾出如今references中的单词,则咱们的p会很小,BLEU作出了惩罚。
若是candidate的翻译结果少了不少单词,咱们的p可能会是1!考虑以下例子:
Candidate: the Reference1: The cat is on the mat
p = min(1,2)/1 = 1
所以到目前为止的BLEU须要继续调整。
而bigram,trigram等等则是衡量文章的通顺性,而且unigram中存在的问题在multi gram的状况下依然存在
论文中把多个candidate所组成的document成为corpus.尽管是多个candidate,可是每一个candidate自己对应了多个reference,所以2.3只是2.2的简单扩充而已。
对于n-gram的BLEU的初步计算公式以下:
其中:
$ freq_{C}(n-gram)$ 是给定n-gram在C中出现的频率
\(freq_{R}(n-gram)\)是给定n-gram在R中出现的频率
\(Count(n-gram')\)是指给定n-gram'在C'中出现的频率
结合多个n-gram:
如2.1中提到的,不一样的n-gram具备不一样的做用,所以须要综合考虑
\(log(p_n)\)的缘由是:在论文实证的过程当中发现随着n-gram中n的增长,\(p_n\)的降低呈现指数型,所以简单的平均\(p_n\)会让指标过分倾向于1-gram,因此须要对数化的调整。
\(w_n\)在论文中为1/N。而且论文中的经验结果代表N=3-5已经足够反应句子的翻译质量了。
咱们在2.2中提到了一个极端的例子,candidate长度极短却得到了\(p_1\)=1的效果,所以须要对翻译句子的长度作出惩罚。惩罚分为两种:过长和太短。过长的句子实际上已经经过\(p_n\)被惩罚了,过长的句子会致使\(p_n\)中的分母很大,从而使得BLEU总体较小。故仅考虑句子太短的状况,原文中对句子太短却依然取得很高\(p_n\)的状况成为The trouble with recall,实际上就是references(实际为正例)中仅有很小一部分出如今candidate(预测为正例)中。
依然假设咱们的corpus中有多个candidate,每一个candidate有多个reference, 论文中把references 中最接近candidate长度的那个reference的长度称为“best match length ”
直觉上,能够计算corpus中每个candidate的对应惩罚,求和后取平均。可是论文认为这样作对短句子的惩罚过大。这里也体现了BLEU的宽容思想,咱们能够容忍corpus中存在一些短句子,可是若是每一句句子都太短,则没法容忍。
首先计算effective referecne length(r), 即把每个candidate对应的best match length相加求和
再次计算corpus中全部candidate的长度之和c
惩罚项:
综上,最终的BLEU为:
不难看出,BLEU指标其实是对“n-gram频率类似”的一个科学化的表达。
其对两种不匹配作出了惩罚:
BP对句子太短作出了惩罚,而exponential项对n-gram频率不匹配作出了惩罚,顺带解决了对过长句子的惩罚问题。