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评估指标
定义
- BLEU(全称为Bilingual Evaluation Understudy),其意思为双语评估替补,用于机器翻译任务的评价,原文如下BLEU: a Method for Automatic Evaluation of Machine Translation
- BLEU算法实际上就是在判断两个句子的相似程度
- BLEU有许多变种,根据
n-gram
可以划分成多种评价指标,常见的评价指标有BLEU-1、BLEU-2、BLEU-3、BLEU-4四种,其中n-gram
指的是连续的单词个数为n,BLEU-1衡量的是单词级别的准确性,更高阶的BLEU可以衡量句子的流畅性
计算
-
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的个数 candidate和reference中匹配的n−gram的个数/candidate中n−gram的个数举例说明:
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 j∈M, M \\mathrmM M表示有 M \\mathrmM M个参考答案
- 翻译译文表示为 c i c_i ci,其中 i ∈ E i \\in \\mathrmE i∈E, 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=∑iE∑kKmin(hk(ci))∑iE∑kKmin(hk(ci),maxj∈Mhk(si,j))
第一个求和符号统计的是所有的翻译句子,因为计算时可能有多个句子;第二个求和符号是统计一条翻译句子中所有的n-gram
, max j ∈ M h k ( s i , j ) \\max_j \\in \\mathrmMh_k(s_i,j) maxj∈Mhk(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=1e1−lcls 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算法的主要内容,如果未能解决你的问题,请参考以下文章
-