参考:
https://zhuanlan.zhihu.com/p/34219483
https://zhuanlan.zhihu.com/p/338488036
https://blog.csdn.net/nstarLDS/article/details/105895113
自然语言处理中的概念:在NLP中,我们需要计算句子的概率大小:
这也就表示一句话的概率——概率大,说明更合理;概率小,说明不合理。
因为是不能直接计算,所以我们先应用条件概率得到:
其中,条件概率P(B|A)指:A 条件下 B 发生的概率。
然而,如果直接使用条件概率转化后的公式,则需要对每个单词要考虑它前面的所有词,这在实际中意义不大,且不便于计算。
我们可以基于马尔科夫假设来做简化。
马尔科夫假设:
马尔科夫假设指,每个单词出现的概率只跟它前面的少数几个单词有关。比如,二阶马尔科夫假设只考虑前面两个词,相应的语言模型是三元模型。引入了马尔科夫假设的语言模型,也可以叫做马尔科夫模型。
马尔可夫链(Markov chain)为状态空间中经过从一个状态到另一个状态的转换的随机过程。该过程要求具备“无记忆”的性质:下一状态的概率分布只能由当前状态决定,在时间序列中它前面的事件均与之无关。
也就是说,应用了这个假设表明了当前单词仅仅跟前面几个有限的词相关,因此也就不必追溯到最开始的单词,这样便可以大幅缩减上述算式的长度。即变成:
注:这里的m表示前m个词相关
然后,我们就可以设置m = 1,2,3,....得到相应的一元模型,二元模型,三元模型了,关于
当 m = 1, 一个一元模型(unigram model)即为 :
当 m = 2, 一个二元模型(bigram model)即为 :
当 m = 3, 一个三元模型(trigram model)即为
而N-Gram模型也就是这样,当m = 1,叫1-gram或者unigram ;m = 2,叫2-gram或者bigram ;当 m = 3叫3-gram或者trigram ;当m=N时,就表示的是N-gram。
BLEU Score
BLEU的全名为:bilingual evaluation understudy,即:双语互译质量评估辅助工具。它是用来评估机器翻译质量的工具。
BLEU的设计思想:机器翻译结果越接近专业人工翻译的结果,则越好。BLEU算法实际上就是在判断两个句子的相似程度。想知道一个句子翻译前后的表示是否意思一致,直接的办法是拿这个句子的标准人工翻译与机器翻译的结果作比较,如果它们是很相似的,说明我的翻译很成功。
例如法语翻译成英语的任务中,源语句是:
Le chat est sur le tapis
而翻译成英语的形式多种多样,例如:
reference1:The cat is on the mat.
reference2:There is a cat on the mat.
这两句都是很不错的人工进行的翻译,那么如何利用这两句话对其他机器翻译得出的结果进行评估呢?
一般衡量机器翻译输出质量的方法之一是观察输出结果的每一个词,看其是否出现在参考(也就是人工翻译结果)中,这被称为是机器翻译的精确度。
-
The modified precision measure(N-gram)
然而这样计算得出的精确度很快就能被一个反例打破,那就是:
the the the the the the the.
如果按照上面的精确度的评估方法,这句话中的每一个词the都出现在了参考句子中。那这句话的精确度就是7/7了,而事实上这是一个烂得不能再烂的翻译了。
为了对这样的不足之处进行改良,于是把每一个单词的计分上限定为它在参考句子中出现最多的次数。在reference1中,the出现了两次,在reference2中,the只出现了一次。所以单词the的得分上限是2。
有了这个改良后的精确度,我们就说,这个输出句子的得分为2/7,因为在7个词中,我们最多只能给它2分。所以这里分母就是7个词中单词the总共出现的次数,而分子就是单词the出现的计数。我们在达到上限时截断计数,
这就是改良后的精确度评估(the modified precision measure)。
上述是一元也就是1-gram的情况。
如果把两个词看成一组来进行统计,就是bigram的情况。
以机器输出的结果为例:
Candidate:
The cat the cat on the mat
我们定义一下
二元词组(bigrams)的BLEU得分。bigram的意思就是相邻的两个单词。现在我们来看看怎样用二元词组来定义BLEU得分,并且这仅仅只是最终的BLEU得分的一部分。
我们会考虑一元词组(unigrams)也就是单个单词以及二元词组(bigrams),即成对的词,同时也许会有更长的单词序列,比如说三元词组(trigrams)。意思是三个挨在一起的词。我们继续刚才的例子,还是前面出现过的参考1和2,不过现在我们假定机器翻译输出了稍微好一点的翻译:The cat the cat on the mat,仍然不是一个好的翻译,不过也许比上一个好一些。这里,可能的二元词组有:
① the cat (忽略大小写);
② cat the(这是另一个二元词组)
③ the cat(已经出现,所以我们跳过它)
③ cat on
④ on the
⑤ the mat。
这些就是机器翻译中的二元词组
(Counter = 6)。我们来数一数每个二元词组出现了多少次。the cat出现了两次 ,cat the出现了一次,剩下的都只出现了一次。
最后 ,我们来定义一下截取计数(the clipped count)。也就是Count_clip。为了定义它,我们以这列的值为基础,但是给算法设置得分上限,上限值为二元词组出现在参考1或2中的最大次数:
① the cat 在两个参考中最多出现一次,所以我将截取它的计数为1;
② cat the 并没有出现在参考1和参考2中,所以我将它截取为0;
③ cat on 出现了一次,我们就记1分;
④ on the 出现一次就记1分;
⑤ the mat 出现了一次记1分。
所以这些就是截取完的计数(the clipped counts)。我们把所有的这些计数都截取了一遍,实际上就是将它们降低使之不大于二元词组出现在参考中的次数。最后,修改后的二元词组的精确度就是count_clip之和。因此
CounterClip = 4,再除以二元词组的总个数,也就是 6。因此是 4/6 也就是 2/3 为二元词组改良后的精确度。
由此类推可以得到n-gram的词的精度其实就等于:
分母就是机器翻译得到的语句中所有的n-gram词组个数,分子就是出现在reference中词组(经过截断后)的个数。
下图是不同n-gram下,对某次翻译结果的精度计算:
事实是这样:随着n-gram的增大,精度得分总体上成指数下降的,而且可以粗略的看成随着n而指数级的下降。我们这里采取几何加权平均,并且将各n-gram的作用视为等重要的,即取权重服从均匀分布。
p
n 为改进的多元精度,w
n 为赋予的权重。对应到上图,公式简单表示为:
p = exp(1/4∗(logp
1+logp
2+logp
3+logp
4))
- 译句较短惩罚(Sentence brevity penalty )
但是这种计算得分的方式仍然有问题,例如:
Candidate:the cat
显然,这时候选翻译的精度得分又是 1 !短译句就是这样,很容易得高分,所以必须要设计一个有效的惩罚措施去控制。
首先,定一个名词叫
“最佳匹配长度”(best match length):如果译句长度和任意一个参考翻译的长度相同,就认为它满足最佳匹配长度。这种情况下,就不要惩罚了,惩罚因子要设为1。
r 是参考翻译(reference)的词数,c是候选翻译(candidate)的词数,BP代表译句较短惩罚值。
由此就可以得出最终的BLEU分数:
使用log形式可以更清晰地理解:
标签:BLEU,词组,机器翻译,cat,单词,Score,gram
来源: https://www.cnblogs.com/mirrorigin/p/16465962.html