Bleu 得分-选修(Bleu Score-optional)

来源:Coursera吴恩达深度学习课程

机器翻译(machine translation)的一大难题是一个法语句子可以有多种英文翻译而且都同样好,所以当有多个同样好的答案时,怎样评估一个机器翻译系统呢?图像识别(image recognition)只有一个正确答案,测量准确性(measure accuracy)就可以。如果有多个不错的答案,要怎样衡量准确性呢? 常见的解决办法是,通过一个叫做BLEU得分(the BLEU score)的东西来解决。接着让我们了解BLEU得分是怎样工作的。

假如有一个法语句子(French sentence):Le chat est sur le tapis,然后这个句子的人工翻译为:The cat is on the mat。不同的人,也许会翻译为:There is a cat on the mat,实际上这两个都准确地翻译了这个法语句子。BLEU得分做的就是,给定一个机器生成的翻译,它能够自动地计算一个分数来衡量机器翻译的好坏。直觉表明只要机器生成的翻译与任何一个人工翻译的结果足够接近,那么它就会得到一个高的BLEU分数。BLEU代表bilingual evaluation understudy (双语评估替补)。在戏剧界,侯补演员(understudy)学习资深的演员的角色,这样在必要的时候,他们就能够接替这些资深演员。而BLEU的初衷是相对于请评估员(ask human evaluators),人工评估机器翻译系统(the machine translation system),BLEU得分就相当于一个侯补者,它可以代替人类来评估机器翻译的每一个输出结果。

BLEU得分是由Kishore Papineni, Salim Roukos,Todd Ward和Wei-Jing Zhu发表的这篇论文十分有影响力并且实际上也是一篇很好读的文章(a readable paper):BLEU: a Method for Automatic Evaluation of Machine Translation。有时间的话,推荐阅读。

BLEU得分背后的理念(intuition)是观察机器生成的翻译,然后看生成的词是否出现在上一个人工翻译参考之中。因此这些人工翻译的参考会包含在开发集或是测试集中。

现在,如上图,我们看一个极端的例子(example)。机器翻译MT(machine translation)的输出是:the the the the the the the。这显然是一个十分糟糕的翻译。衡量机器翻译输出质量的方法之一是观察输出结果的每一个词看其是否出现在参考中,这称为机器翻译的精确度( precision of the machine translation output)。这个情况下,机器翻译输出了七个单词并且这七个词中的每一个都出现在了参考1或是参考2。单词the在两个参考中都出现了,所以看上去每个词都是很合理的。因此这个输出的精确度就是7/7,看起来是一个极好的精确度。(实际上并不好,接下来有一个改良版本。)这就是为什么把出现在参考中的词在MT输出的所有词中所占的比例作为精确度评估标准并不是很有用的原因。因为它似乎意味着,例子中MT输出的翻译有很高的精确度,因此取而代之的是我们要用的这个改良后的精确度评估方法,我们把每一个单词的记分上限定为它在参考句子中出现的最多次数。在参考1中,单词the出现了两次,在参考2中,单词the只出现了一次。而2比1大,所以我们会说,单词the的得分上限为2。有了这个改良后的精确度,我们就说,这个输出句子的得分为2/7,因为在7个词中,我们最多只能给它2分。所以分母(denominator)就是7个词中单词the总共出现的次数,而分子(numerator)就是单词the出现的计数。我们在达到上限时截断计数,这就是改良后的精确度评估(the modified precision measure)

到目前为止,我们只关注单独的单词,在BLEU得分中,我们也考虑成对的单词,因此定义一下二元词组(bigrams)的BLEU得分

bigram的意思就是相邻的两个单词。现在我们来看看怎样用二元词组来定义BLEU得分,并且这仅仅只是最终的BLEU得分的一部分。我们会考虑一元词组(unigrams)也就是单个单词以及二元词组(bigrams),即成对的词,同时也许会有更长的单词序列,比如说三元词组(trigrams),意思是三个挨在一起的词。我们继续刚才的例子,还是参考1和2,现在我们假定机器翻译输出了稍微好一点的翻译:The cat the cat on the mat,仍然不是一个好的翻译,不过也许比上一个好一些。这里,可能的二元词组有the cat ,忽略大小写,接着是cat the, 这是另一个二元词组,然后又是the cat。不过我们已经有了,所以跳过它,然后下一个是cat on,然后是on the,再然后是the mat。所以这些就是机器翻译中的二元词组。好,我们来数一数每个二元词组出现了多少次。the cat出现了两次 ,剩下的都只出现了一次。

最后 ,我们来定义一下截取计数(the clipped count),即Count_clip。为了定义它,我们以给算法设置得分上限(limit),上限值为二元词组出现在参考1或2中的最大次数。①the cat在两个参考中最多出现一次(注意是在两个参考中取max),所以将截取它的计数为1。②cat the它并没有出现在参考1和参考2中,所以将它截取为0。③cat on出现了一次,我们就记1分。④on the出现一次就记1分,⑤the mat出现了一次,所以这就是截取完的计数(the clipped counts)。我们把所有的这些计数都截取了一遍,实际上就是将它们降低使之不大于二元词组出现在参考中的次数。最后,修改后的二元词组的精确度就是count_clip之和。那就是4除以二元词组的总个数6,因此4/6也就是2/3为二元词组改良后的精确度。

如上图,我们将它公式化。我们将改良后的一元词组精确度定义为P_1,P代表的是精确度(precision)。这里的下标1的意思是一元词组。它定义为一元词组之和,即对机器翻译结果中所有单词求和,MT 输出就是y-帽,Count_clip(unigram),再除以机器翻译输出中的一元词组出现次数之和。因此这个就是最终结果应该是两页幻灯片前得到的2/7(??这里没有看懂,我理解的是5/7,算出来的小伙伴麻烦评论区留言呀)。这里的1指代的是一元词组,意思是考虑单独的词,同样定义P_n为n元词组精确度,用n-gram替代掉一元词组。定义就是机器翻译输出中的n元词组的count_clip之和除以n元词组的出现次数之和。因此这些精确度或说是这些改良后的精确度得分评估的是一元词组、二元词组或者是三元词组,甚至是n取更大数值的n元词组。这个方法都能够衡量机器翻译输出中与参考相似重复的程度。另外,你能够确信如果机器翻译输出与参考1或是参考2完全一致的话,那么所有的这些P_1、P_2等等的值,都会等于1.0(不考虑词组的顺序吗?多元词组是不是隐含了顺序)。为了得到改良后的1.0的精确度,只要你的输出与参考之一完全相同就能满足,不过有时即使输出结果并不完全与参考相同,这也是有可能实现的。

最后,我们将这些组合一下来构成最终的BLEU得分。P_n就是n元词组这一项的BLEU得分,即计算出的n元词组改良后的精确度,按照惯例,将P_1,P_2,P_3,P_4等用这个公式组合在一起,取平均值(mean)BLEU得分被定义为:

对这个线性运算进行乘方运算,乘方(exponentiation)是严格单调递增的运算(strictly monotonically increasing operation),实际上会用一个叫做BP的惩罚因子(the BP penalty)来调整这项。BP的意思是“简短惩罚”(brevity penalty)。事实表明,输出一个非常短的翻译更容易得到高精确度。因为输出的大部分词可能都出现在参考之中,不过我们并不想要特别短的翻译结果。因此简短惩罚(BP)就是一个调整因子(an adjustment factor),它能够惩罚输出了太短翻译结果的翻译系统。BP的公式如上图所示。如果你的机器翻译系统实际上输出了比人工翻译结果更长的翻译,那么它就等于1,其他情况下就是像这样的公式,惩罚所有更短的翻译,细节部分看这篇论文。

拥有单一实数评估指标(a single real number evaluation metric)的很重要,因为它能够让你尝试两种想法,然后看一下哪个得分更高,尽量选择得分更高的那个,BLEU得分对于机器翻译来说,具有革命性的(revolution)原因是因为它有一个相当不错的虽然不是完美的但是非常好的单一实数评估指标(a single real number evaluation index),因此它加快了整个机器翻译领域的进程,实践中,很少人会从零实现一个BLEU得分(implement a BLEU score from scratch),有很多开源的(open)实现结果,可以下载下来然后直接用来评估系统。不过今天,BLEU得分被用来评估许多生成文本的系统(systems that generate text),比如说机器翻译系统(machine translation systems),也有图像描述系统(image captioning systems)。你会用神经网络来生成图像描述,然后使用BLEU得分来看一下,结果在多大程度上与参考描述或是多个人工完成的参考描述内容相符。BLEU得分是一个有用的单一实数评估指标,用于评估生成文本的算法,判断输出的结果是否与人工写出的参考文本的含义相似不过它并没有用于语音识别(speech recognition)。因为在语音识别当中,通常只有一个答案,你可以用其他的评估方法,来看一下你的语音识别结果,是否十分相近或是字字正确(pretty much, exactly word for word correct)。

说明:记录学习笔记,如果错误欢迎指正!转载请联系我。

猜你喜欢

转载自blog.csdn.net/csdn_xmj/article/details/119270948