文章目录

  • 1.前言
  • 2.N-gram
  • 2.1 1-gram
  • 2.2 3-gram
  • 2.3 N-gram总结
  • 3. BLEU算法
  • 3.1 召回率
  • 3.2 BLEU公式
  • 3.3 惩罚因子
  • 3.4 BLEU最终公式
  • 4.实例
  • 4.1 句子间的BLEU
  • 4.2 多个句子间的BLEU

1.前言

最近在利用transformer自动化生成弹幕。在transformer的实现中,用到了一个标准BLEU标准。这个标准全称为bilingual evaluation understudy。同时参考了一些文章的介绍:

  • 机器翻译评测——BLEU算法详解

最后根据自己的理解解释一下这个算法的含义。

2.N-gram

BLEU测评标准,主要是利用了N-gram来对翻译译文和标准译文进行一个一个匹对。比如:

机器译文:It is a nice day today
人工译文:Today is a nice day

2.1 1-gram

如果用1-gram进行匹配的话,则可以得到:

BLEU算法(例子和公式解释)_BLEU


这时候,机器译文可以匹配到5个词语,而它总词语数为6,所以匹配度为:BLEU算法(例子和公式解释)_算法_02

2.2 3-gram

如果使用3-gram进行匹配:

BLEU算法(例子和公式解释)_机器翻译_03


可以看到,机器译文可以组成4个词组,而匹配上了2个词组,所以匹配度为:BLEU算法(例子和公式解释)_算法_04

2.3 N-gram总结

n-gram匹配以此类推,一般使用1-gram,2-gram,3-gram和4-gram来衡量句子与句子之间的匹配度。1-gram的结果代表了文中有多少个词被单独翻译出来了,因此它反映的是这篇译文的忠实度;而当我们计算2-gram以上时,更多时候结果反映的是译文的流畅度,值越高文章的可读性就越好。

3. BLEU算法

3.1 召回率

上面的n-gram方法,只考虑了机器译文中的词语数,而没有同时考虑人工译文中出现的次数。举个例子:

机器译文:the the the the 
人工译文:The cat is standing on the ground

如果使用1-gram方法进行匹配,则得到100%的匹配度。这是因为“the”这个词语在人工译文中都出现了,但这个100%的匹配度显然是不准确的。因此BLEU算法修正了这个错误,改为考虑词语出现在译文中的最小次数:
BLEU算法(例子和公式解释)_BLEU_05
其中BLEU算法(例子和公式解释)_机器翻译_06表示在机器译文中的第BLEU算法(例子和公式解释)_机器翻译_06个词语,BLEU算法(例子和公式解释)_算法_08则代表在机器译文中这个词语出现的次数,而BLEU算法(例子和公式解释)_深度学习_09则代表在人工译文中这个词语出现的次数。最后可以得到修正后的匹配度:BLEU算法(例子和公式解释)_BLEU_10

3.2 BLEU公式

首先定义几个数学符号:

  • 人工译文表示为BLEU算法(例子和公式解释)_机器翻译_11,其中BLEU算法(例子和公式解释)_机器翻译_12BLEU算法(例子和公式解释)_深度学习_13表示共有BLEU算法(例子和公式解释)_深度学习_13个参考答案。
  • 翻译译文表示BLEU算法(例子和公式解释)_机器翻译_15,其中BLEU算法(例子和公式解释)_深度学习_16BLEU算法(例子和公式解释)_BLEU_17表示共有BLEU算法(例子和公式解释)_BLEU_17个翻译。
  • N-gram表示BLEU算法(例子和公式解释)_深度学习_19个单词长度的词组集合,令BLEU算法(例子和公式解释)_算法_20表示第BLEU算法(例子和公式解释)_算法_20个词组
  • BLEU算法(例子和公式解释)_机器翻译_22 表示第BLEU算法(例子和公式解释)_算法_20个词组在翻译译文BLEU算法(例子和公式解释)_机器翻译_15中出现的次数
  • BLEU算法(例子和公式解释)_机器学习_25 表示第BLEU算法(例子和公式解释)_算法_20个词组在标准答案BLEU算法(例子和公式解释)_BLEU_27中出现的次数

最后可以得到计算每个n-gram的公式:
BLEU算法(例子和公式解释)_算法_28

  • 在分子中,BLEU算法(例子和公式解释)_机器翻译_29指的是第k个词组在BLEU算法(例子和公式解释)_BLEU_27中的最小次数,也就是相当于找了最相似的候选句子

3.3 惩罚因子

上面的算法已经足够可以有效的翻译评估了,然而N-gram的匹配度可能会随着句子长度的变短而变好,因此会存在这样一个问题:一个翻译引擎只翻译出了句子中部分句子且翻译的比较准确,那么它的匹配度依然会很高。为了避免这种评分的偏向性,BLEU在最后的评分结果中引入了长度惩罚因子(Brevity Penalty)

BLEU算法(例子和公式解释)_深度学习_31

BP的计算公式如上。BLEU算法(例子和公式解释)_算法_32代表表示机器翻译译文的长度,BLEU算法(例子和公式解释)_机器翻译_33表示参考答案的有效长度。当存在多个参考译文时,选取和翻译译文最接近的长度。当翻译译文长度大于参考译文的长度时,惩罚系数为BLEU算法(例子和公式解释)_BLEU_34,意味着不惩罚,只有机器翻译译文长度小于参考答案才会计算惩罚因子。

3.4 BLEU最终公式

由于各N-gram统计量的精度随着阶数的升高而呈指数形式递减,所以为了平衡各阶统计量的作用,对其采用几何平均形式求平均值然后加权,再乘以长度惩罚因子,得到最后的评价公式:
BLEU算法(例子和公式解释)_机器学习_35
BLEU的原型系统采用的是均匀加权,即BLEU算法(例子和公式解释)_机器翻译_36

4.实例

4.1 句子间的BLEU

翻译译文:Going to play basketball this afternoon ?
人工译文:Going to play basketball in the afternoon ?

其中翻译译文gram长度为:7,人工译文长度为:8

  • 1-gram计算:BLEU算法(例子和公式解释)_机器学习_37
  • 2-gram计算:BLEU算法(例子和公式解释)_机器学习_38
  • 3-gram计算:BLEU算法(例子和公式解释)_BLEU_39
  • 4-gram计算:BLEU算法(例子和公式解释)_深度学习_40
  • BP计算:BLEU算法(例子和公式解释)_深度学习_41

最后根据公式计算BLEU的值:
BLEU算法(例子和公式解释)_机器学习_42

4.2 多个句子间的BLEU

翻译译文:
(1)Going to play basketball this afternoon ?
(2)Going to play basketball afternoon ?
人工译文:
(1)Going to play basketball in the afternoon ?
(2)Going to play basketball in the afternoon ?

上面的翻译译文有两个,其对应的人工译文也是有两个。

第一个翻译译文长度:7;第二个翻译译文长度:6
第一个人工译文长度:8;第二个人工译文长度:8

  • 1-gram计算:BLEU算法(例子和公式解释)_算法_43
  • 2-gram计算:BLEU算法(例子和公式解释)_BLEU_44
  • 3-gram计算:BLEU算法(例子和公式解释)_算法_45
  • 4-gram计算:BLEU算法(例子和公式解释)_算法_46
  • BP计算:

最后根据公式计算BLEU的值:

BLEU算法(例子和公式解释)_算法_47


BLEU算法(例子和公式解释)_BLEU_48

总的来说,如果是评价一个语料集的BLEU,需要把所有的句子进行整体考虑,来计算BLEU,而不是把每个句子的BLEU求和平均。