BLEU算法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BLEU算法相关的知识,希望对你有一定的参考价值。

参考技术A 原理根据N-gram,n<=4

问题

1.the等词过多匹配问题。解决方案:利用计算参考译文和机器翻译译文之间计数取最小值解决

2.机器翻译译文长度<参考译文长度,导致的BLEU结果过高。解决方案:加入惩罚因子BP(Brevity Penalty)=exp(min(0, 1 − [len(ref)/len(MT)])   解释,如果参考译文的长度<机器翻译的长度,则BP=1,不进行惩罚。如果参考译文的长度>机器翻译的长度,即 [len(ref)/len(MT)]>1,1 − [len(ref)/len(MT)]<0,则0<BP<1的一个数,来降低BLEU结果过高的问题。

缺点:除上面提出的两个问题,对同义词和语法没有考虑

BLEU评估指标

定义

  1. BLEU(全称为Bilingual Evaluation Understudy),其意思为双语评估替补,用于机器翻译任务的评价,原文如下BLEU: a Method for Automatic Evaluation of Machine Translation
  2. BLEU算法实际上就是在判断两个句子的相似程度
  3. BLEU有许多变种,根据n-gram可以划分成多种评价指标,常见的评价指标有BLEU-1、BLEU-2、BLEU-3、BLEU-4四种,其中n-gram指的是连续的单词个数为n,BLEU-1衡量的是单词级别的准确性,更高阶的BLEU可以衡量句子的流畅性

计算

  1. BLEU计算的一个大致步骤是:

    • 分别计算candidate句和reference句的N-grams模型,然后统计其匹配的个数,计算匹配度
      c a n d i d a t e 和 r e f e r e n c e 中匹配的 n − g r a m 的个数 / c a n d i d a t e 中 n − g r a m 的个数 candidate和reference中匹配的n-gram的个数/candidate中n-gram的个数 candidatereference中匹配的ngram的个数/candidatengram的个数

      举例说明:

      candidate: It is a nice day today
      reference: Today is a nice day

      • 使用1-gram进行匹配

        candidate: it, is, a, nice, day, today
        reference: today, is, a, nice, day
        

        其中today, is, a, nice, day匹配,所以匹配度为5/6

      • 使用2-gram进行匹配

        candidate: it is, is a, a nice, nice day, day today
        reference: today is, is a, a nice, nice day
        

        其中is a, a nice, nice day匹配,所以匹配度为3/5

      • 使用3-gram进行匹配

        candidate: it is a, is a nice, a nice day, nice day today
        reference: today is a, is a nice, a nice day
        

        其中is a nice, a nice day匹配,所以匹配度为2/4

      • 使用4-gram进行匹配

        candidate: it is a nice, is a nice day, a nice day today
        reference: today is a nice, is a nice day
        

        其中is a nice day匹配,所以匹配度为1/3

    • 对匹配的N-grams计数进行修改,以确保它考虑到reference文本中单词的出现,而非奖励生成大量合理翻译单词的候选结果

      举例说明:

      candidate: the the the the

      reference: The cat is standing on the ground

      如果按照1-gram的方法进行匹配,则匹配度为1,显然是不合理的,所以计算某个词的出现次数进行改进

      将计算某个词的出现次数的方法改为计算某个词在译文中出现的最小次数,如下所示,
      count ⁡ k = min ⁡ ( c k , s k ) \\operatornamecount_k=\\min \\left(c_k, s_k\\right) countk=min(ck,sk)
      其中 k k k表示在机器译文(candidate)中出现的第 k k k个词语, c k c_k ck则代表在机器译文中这个词语出现的次数,而 s k s_k sk则代表在人工译文(reference)中这个词语出现的次数。

      由此,可以定义BLEU计算公式,首先定义几个数学符号:

      • 人工译文表示为 s j s_j sj,其中 j ∈ M j \\in \\mathrmM jM M \\mathrmM M表示有 M \\mathrmM M个参考答案
      • 翻译译文表示为 c i c_i ci,其中 i ∈ E i \\in \\mathrmE iE E \\mathrmE E表示共有 E \\mathrmE E个翻译
      • n n n表示 n n n个单词长度的词组集合,令 k k k表示第 k k k个词组
      • h k ( c i ) h_k(c_i) hk(ci)表示第 k k k个词组在翻译译文 c i c_i ci中出现的次数
      • h k ( s i , j ) h_k(s_i,j) hk(si,j)表示第 k k k个词组在人工译文 s i , j s_i,j si,j中出现的次数

      最后可以得到计算每个n-gram的公式,
      P n = ∑ i E ∑ k K min ⁡ ( h k ( c i ) , max ⁡ j ∈ M h k ( s i , j ) ) ∑ i E ∑ k K min ⁡ ( h k ( c i ) ) P_n=\\frac\\sum_i^\\mathrmE \\sum_k^\\mathrmK \\min(h_k(c_i), \\max_j \\in \\mathrmMh_k(s_i,j)) \\sum_i^\\mathrmE \\sum_k^\\mathrmK\\min(h_k(c_i)) Pn=iEkKmin(hk(ci))iEkKmin(hk(ci),maxjMhk(si,j))
      第一个求和符号统计的是所有的翻译句子,因为计算时可能有多个句子;第二个求和符号是统计一条翻译句子中所有的n-gram max ⁡ j ∈ M h k ( s i , j ) \\max_j \\in \\mathrmMh_k(s_i,j) maxjMhk(si,j)表示第 i i i条翻译句子对应的 M \\mathrmM M条人工译文中包含最多第 k k k个词组的句子中第 k k k个词组的数量

    • n-gram匹配度可能会随着句子长度的变短而变好,为了避免这种现象,BLEU在最后的评分结果中引入了长度惩罚因子(Brevity Penalty)
      B P = 1  if  l c > l s e 1 − l s l c  if  l c < = l s B P=\\left\\\\beginarraylll 1 & \\text if & l_c>l s \\\\ e^1-\\fracl_sl_c & \\text if & l_c<=l_s \\endarray\\right. BP=1e1lcls if  if lc>lslc<=ls
      其中, l c l_c lc表示机器翻译译文的长度, l s l_s ls表示参考译文的有效长度,当存在多个参考译文时,选取和翻译译文最接近的长度。当翻译译文长度大于参考译文长度时,惩罚因子为1,意味着不惩罚,只有翻译译文长度小于参考译文长度时,才会计算惩罚因子。

    • 计算BLEU最终公式

      为了平衡各阶统计量的作用,对各阶统计量进行加权求和,一般来说, N N N取4,最多只统计4-gram的精度, W n \\boldsymbolW_n Wn 1 / N 1/N 1/N,进行均匀加权,最终公式如下:
      B L E U = B P × exp ⁡ ( ∑ n = 1 N W n log ⁡ P n

      以上是关于BLEU算法的主要内容,如果未能解决你的问题,请参考以下文章

      BLEU评估指标

      BLEU评估指标

      NLP-00-3BLEU计算

      NLP-00-3BLEU计算

      法语的bleu啥时候加e?

      NLTK:语料库级别的 BLEU 与句子级别的 BLEU 分数