机器翻译中常用的自动评价指标是 BLEU 算法,除了在机器翻译中的应用,在其他的 seq2seq 任务中也会使用,例如对话系统。
bilingual evaluation understudy ,意为双语评估替换,是衡量一个有多个正确输出结果的模型的精确度的评估指标。
人工给出的译文为reference,机器翻译的译文为candidate。
对于N-gram bleu,N-gram指的是每次取句子里的几个连续的words
实际上分母就是candinate中n−gram的个数,分子是出现在reference中的candinate中n−gram的个数。
下面拿中英机器翻译做例子:
中文:垫上有一只老鼠。
参考翻译1:The cat is on the mat.
参考翻译1:There is a cat on the mat.
MT:the cat the cat on the mat.
bleu的得分有一元组,二元组,三元组等等,这里只做到三元组。
下面先计算一元组得分,即先把MT输出的句子拆分成the,cat,on,mat,频数分别为3,2,1,1:
上面的Count(clip) 叫截取计数,是取每个单词在所有参考翻译句子中,出现最多的次数,the在参考翻译1中出现2次,在参考翻译2中出现1次,所以the的Count(clip)取最大值就是2,剩下的单词依次类推。
所以bleu的一元组上的得分为:p1 = Count(clip)/Count=(2+1+1+1)/(3+2+1+1) =5/7
下面再计算bleu的二元组得分:
参考翻译1:The cat is on the mat.
参考翻译1:There is a cat on the mat.
MT:the cat the cat on the mat.
所以bleu的二元组的得分为:p2 = Count(clip)/Count=(1+0+1+1+1)/(2+1+1+1+1) =4/6=2/3
同理bleu的三元组得分:
参考翻译1:The cat is on the mat.
参考翻译1:There is a cat on the mat.
MT:the cat the cat on the mat.
所以bleu的三元组的得分为:p3 = Count(clip)/Count= 2/5
最后加所有元组的bleu得分都加起来然后取平均数得
bleu(avg) = (p1+p2+p3)/3 = (5/7+2/3+2/5)/3 = 0.594
最后再乘上一个“简短惩罚” BP(brevity penalty),即最后的bleu得分为:Bleu(total)=BP*bleu(avg)。
这里说明一下为什么要乘以BP:
如果MT输出了一个非常短的翻译,那么会更容易得到一个高精度的bleu,因为输出的大部分词都会出现在参考翻译中,所有我们并不想要特别短的翻译结果,所有加入BP这么一个调整因子:
r为参考翻译的句子长度,c为MT的输出句子长度,若c<=r ,则 0