BLEU实质是对两个句子的共现词频率计算,但计算过程中使用好些技巧,追求计算的数值可以衡量这两句话的一致程度。
BLEU容易陷入常用词和短译句的陷阱中,而给出较高的评分值。本文主要是对解决BLEU的这两个弊端的优化方法介绍。
参考文献有二:
- 《BLEU: a Method for Automatic Evaluation of Machine Translation 》
- WIKIPEDIA中对BLEU的讲解
首先要看清楚我们本篇文章的主人公是怎么拼写的——{B-L-E-U},而不是{B-L-U-E},简直了…..我叫了它两天的blue(蓝色)才发现原来e在u之前~~如果真要念出它的名字,音标是这样的: [blε:] (波勒)。
BLEU的全名为:bilingual evaluation understudy,即:双语互译质量评估辅助工具。它是用来评估机器翻译质量的工具。当然评估翻译质量这种事本应该由人来做,机器现在是无论如何也做不到像人类一样思考判断的(我想这就是自然语言处理现在遇到的瓶颈吧,随便某个方面都有牵扯上人类思维的地方,真难),但是人工处理过于耗时费力,所以才有了BLEU算法。
BLEU的设计思想与评判机器翻译好坏的思想是一致的:机器翻译结果越接近专业人工翻译的结果,则越好。BLEU算法实际上在做的事:判断两个句子的相似程度。我想知道一个句子翻译前后的表示是否意思一致,显然没法直接比较,那我就拿这个句子的标准人工翻译与我的机器翻译的结果作比较,如果它们是很相似的,说明我的翻译很成功。因此,BLUE去做判断:一句机器翻译的话与其相对应的几个参考翻译作比较,算出一个综合分数。这个分数越高说明机器翻译得越好。(注:BLEU算法是句子之间的比较,不是词组,也不是段落)
BLEU是做不到百分百的准确的,它只能做到个大概判断,它的目标也只是给出一个快且不差自动评估解决方案。
优点很明显:方便、快速、结果有参考价值
缺点也不少,主要有:
首先,“机器翻译结果越接近专业人工翻译的结果,则越好”——要想让机器去评判一句话机器翻译好坏,得有两件工具:
其次,规范一下说法——
其实最原始的BLEU算法很简单,我们每个人都有意无意做过这种事:两个句子,S1和S2,S1里头的词出现在S2里头越多,就说明这两个句子越一致。就像这样子:similarity(‘i like apple’, ‘i like english’)=2/3。
分子是一个候选翻译的单词有多少出现在参考翻译中(出现过就记一次,不管是不是在同一句参考翻译里头),分母是这个候选翻译的词汇数。
请看下面这个错误案例:
Candidate | the | the | the | the | the | the | the |
Reference1 | the | cat | is | on | the | mat | |
Reference2 | there | is | a | cat | on | the | mat |
计算过程:
很明显,这样算是错的,需要改进一下。
专业一点,上面出现的错误可以理解为常用词干扰(over-generate “reasonable”words),比如the, on这样的词,所以极易造成翻译结果低劣评分结果却贼高的情况。
另外,上面我们一个词一个词的去统计,以一个单词为单位的集合,我们统称uni-grams(一元组集)。如果是这样{“the cat”, “cat is”, “is on”, “on the”, “the mat”},类似”the cat”两个相邻词一组就叫做bi-gram(二元组),以此类推:三元组、四元组、…、多元组(n-gram),集合变复数:n-grams。
OK,上述算法问题其实处在分子的计算上,我们换成这个:
仍然看上表的举例, Ref1_Count′the′=2 ,所以 Countclip′the′,1=min(7,2)=2 ,同理 Countclip′the′,2=1 ,所以综合计数 Countclip=max(1,2)=2 。
分母不变,仍是候选句子的n-gram个数。这里分母为7。
注:这个地方的 分子截断计数 方法也不唯一,还有这样的:
BLEU的处理办法其实还是一样,把多个句子当成一个句子罢了:
在3.2提到,uni-gram下的指标可以衡量翻译的充分性,n-gram下的可以衡量翻译的流畅性,建议将它们组合使用。那么,应该如何正确的组合它们呢?
没疑问,加总求和取平均。专业点的做法要根据所处的境况选择加权平均,甚至是对原式做一些变形。
首先请看一下不同n-gram下的对某次翻译结果的精度计算:
事实是这样,随着n-gram的增大,精度得分总体上成指数下降的,而且可以粗略的看成随着n而指数级的下降。我们这里采取几何加权平均,并且将各n-gram的作用视为等重要的,即取权重服从均匀分布。
对应到上图,公式简单表示为:
再仔细看改进n-gram精度测量,当译句比参考翻译都要长时,分母增大了,这就相对惩罚了译句较长的情况。译句较短就更严重了!比如说下面这样:
Candidate | the | cat | |||||
Reference1 | the | cat | is | on | the | mat | |
Reference2 | there | is | a | cat | on | the | mat |
显然,这时候选翻译的精度得分又是1( 12+12 )!短译句就是这样,很容易得高分…所以必须要设计一个有效的惩罚措施去控制。
首先,定一个名词叫“最佳匹配长度”(best match length),就是,如果译句长度和任意一个参考翻译的长度相同,就认为它满足最佳匹配长度。这种情况下,就不要惩罚了,惩罚因子要设为1。
见上式, r 是一个参考翻译的词数, c 是一个候选翻译的词数,BP代表译句较短惩罚值。由此,最终 BLEU 值得计算公式为: