【NLP】BLEU值满分是100分吗?

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

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

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

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

The cat is on the desk.class

There is a cat on the desk.sed

那么很天然想到,用实际翻译结果中出如今参考翻译中的单词数除以实际翻译结果单词总数,是一种评估方法。例如,若翻译结果为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\)co

这是比较合理的。数字

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

计算全部单个单词,\(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分。