神经翻译笔记5扩展c. 机器翻译系统的常见评价指标
BLEU
BLEU[BLEU]是机器翻译领域最悠久、最常用、最经典的指标。大部分机器翻译论文甚至只使用这一个指标作为系统的评价标准,其重要性可见一斑
BLEU背后的直觉是,如果机器翻译系统产生的结果和专业的人工翻译越接近,那么这个系统越好。这里“接近”程度是通过计算翻译结果中词语和短语对人工答案的命中度来评价的,也就是说BLEU的核心是对翻译结果准确度(查准率)的度量。
最简单的查准率计算方法是,遍历生成结果的每一个词,如果它在某个参考译文里出现,则+1,最后用这个总数除以译文长度。然而机器翻译很容易出现过多“正确”的词,例如参考译文为The cat is on the mat,如果翻译出来7个the,尽管结果是显然不通的,但是按照这种计算方法,也能达到100%的准确度。一个自然的想法是,如果译文中的一个词已经被匹配上了,就应该被移除掉。这种改进的算法被称为修正的一元语法准确度(modified unigram precision),即计数值修改为 c o u n t c l i p = min ( c o u n t , m a x _ r e f _ c o u n t ) count_{clip} = \min(count, max\_ref\_count) countclip=min(count,max_ref_count)。在这种算法下,前述例子的准确度会降低到2/7。类似的算法很容易可以扩展为修正的n元语法准确度,这样的准确度把握了两个方面:翻译结果和参考答案使用同样的词可以满足“适当性”,而更长的n-gram词组匹配则是保证了“通顺性”。进一步地,如果测试集包含多个句子,则先逐句计算匹配的n-gram数量,将各句的 c o u n t c l i p count_{clip} countclip相加,再除以生成结果的总n-gram数量。即
p n = ∑ C ∈ { c a n d i d a t e s } ∑ n - g r a m ∈ C C o u n t c l i p ( n - g r a m ) ∑ C ′ ∈ { c a n d i d a t e s } ∑ n - g r a m ′ ∈ C ′ C o u n t ( n - g r a m ′ ) p_n = \frac{\sum_{C \in {\rm \{candidates\}}} \sum_{n\text{-}gram \in C} {\rm Count_{clip}}(n\text{-}gram)}{\sum_{C' \in {\rm \{candidates\}}} \sum_{n\text{-}gram' \in C'} {\rm Count}(n\text{-}gram')} pn=∑C′∈{ candidates}∑n-gram′∈C′Count(n-gram′)∑C∈{ candidates}∑n-gram∈CCountclip(n-gram)
通过设定不同的 n n n,可以得到不同的 p n p_n pn。对这些 p n p_n pn,使用几何平均值得到总的BLEU值,也就是对每个 p n p_n pn取对数,然后将这些对数值求算数平均值
这种算法目前看起来不错,但是仍然存在问题。如果产生的句子特别短,那么可能会得到很高的BLEU值。例如,如果产生的结果是of the,参考译文是It is the guiding principle which guarantees the military forces always being under the command of the Party. 尽管人一眼看出这样的翻译不符合要求,但是使用上述算法可以算出产生的结果BLEU值是满分
一种思路是引用常与查准率precision成对出现的指标查全率recall,但是这种情况下,不必要的长句子会得到很高的查全率,因此也不是一个好的思路。考虑到在已有的框架下,长句已经通过修正的n-gram准确度进行了惩罚,因此只需要为短句寻找一种合适的惩罚方法。本文的对策是引入了一个乘性的短句惩罚因子,这样一来,得分高的译文不仅要用对的词、对的语序,还要和参考译文长度匹配。具体的BLEU值计算方法如下:首先,计算至多到 N N N的 N N N个 p n p_n pn,按照它们各自的权重 w n w_n wn得到几何平均值(所有 w n w_n wn的总和需要为1)。然后,对多个参考译文,选出跟生成结果最接近(长度差值最小)的那个,记其长度为 r r r。若生成结果的长度为 c c c,则