自动摘要评测

2020-06-23  本文已影响0人  一新de笔记

自然语言生成(NLG)中常见的无监督自评估方法:BLEU、METEOR、ROUGE、CIDEr

参考: https://zhuanlan.zhihu.com/p/100942429

1、BLER评估【机器翻译】

Bleu 全称为 Bilingual Evaluation Understudy(双语评估研究) ,意为双语评估替换,是衡量一个有多个正确输出结果的模型的精确度的评估指标。

BLEU的设计思想与评判机器翻译好坏的思想是一致的:机器翻译结果越接近专业人工翻译的结果,则越好。

BLEU算法实际上在做的事:判断两个句子的相似程度。想知道一个句子翻译前后的表示是否意思一致,显然没法直接比较,那就拿这个句子的标准人工翻译与机器翻译的结果作比较,如果它们是很相似的,说明机器翻译很成功

因此,BLUE去做判断:一句机器翻译的话与其相对应的几个参考翻译作比较,算出一个综合分数。这个分数越高说明机器翻译得越好

举个栗子
中文:垫上有一只老鼠。    
参考翻译1:The cat is on the mat.    
参考翻译2 There is a cat on the mat.    
MT(机器翻译):the cat the cat on the mat.

BELU一元组

MT输出的句子拆分成the,cat,on,mat,词频分别为3,2,1,1,如下图所示

MT中的uni-grams count-MT count-参考1 count-参考2 count(clip)截取计数
the 3 2 1 2
cat 2 1 1 1
on 1 1 1 1
mat 1 1 1 1
小计 7 -- -- 5

注:上面的Count(clip) 叫截取计数,是取每个单词在所有参考翻译句子中,出现最多的次数,the在参考翻译1中出现2次,在参考翻译2中出现1次,所以the的Count(clip)取最大值就是2。其余的也是同样的道理

所以BELU的一元组上的得分为: p1 = Count(clip)/Count=(2+1+1+1)/(3+2+1+1) =5/7

计算BELU的二元组得分:

MT中的bigrams Count Count(参考翻译1) Count(参考翻译2) Count(clip)截取计数
the cat 2 1 0 1
cat the 1 0 0 0
cat on 1 0 1 1
on the 1 1 1 1
the mat 1 1 1 1
小计 6 -- -- 4

所以bleu的二元组的得分为:p2 = Count(clip)/Count=(1+0+1+1+1)/(2+1+1+1+1) =4/6=2/3

同理BELU的三元组得分:

MT中的3-grams Count Count(参考翻译1) Count(参考翻译2) Count(clip)截取计数
the cat the 1 0 0 0
cat the cat 1 0 0 0
the cat on 1 0 0 0
cat on the 1 0 1 1
on the mat 1 1 1 1
小计 5 -- -- 2

所以bleu的三元组的得分为:p3 = Count(clip)/Count= 2/5;

计算平均值

最后加所有元组的bleu得分都加起来然后取平均数得:     
bleu(avg) = (p1+p2+p3)/3 = (5/7+2/3+2/5)/3 = 0.594

“简短惩罚” BP(brevity penalty)

最后再乘上一个“简短惩罚” BP(brevity penalty),即最后的bleu得分为:

Bleu(total)=BP * bleu(avg)

这里为什么要乘以BP:如果MT输出了一个非常短的翻译,那么会更容易得到一个高精度的bleu,因为输出的大部分词都会出现在参考翻译中,所以我们并不想要特别短的翻译结果,所以加入BP这么一个调整因子:

BP=\left\{\begin{matrix} & 1 & if c>r\\ & e^{1-r/c} & if c<=r \end{matrix}\right.

注:c为MT输出的句子长度,r为翻译的句子长度

上式中,若c<=r ,则 0<exp(1-r/c)<=1,得分bleu(avg)就会乘以小于1的系数 ,从而被“惩罚”。 那么最后:Bleu(total)=BP*bleu(avg)

2、ROUGE评估法(自动摘要)

Rouge

参考:
https://blog.csdn.net/qq_25222361/article/details/78694617
https://www.aclweb.org/anthology/W04-1013/

Rouge(recall-oriented understanding for gisting evaluation)是评估自动文摘以及机器翻译的一组指标。
论文链接地址:http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=368956B77243860A93FC0E3726EE7919?doi=10.1.1.111.9426&rep=rep1&type=pdf

该方法的主要是思想是:由多个专家分别生成人工摘要,构成标准摘要集。将系统生成的自动摘要与人工生成的标准摘要相对比,通过统计二者之间重叠的基本单元(n元语法、词序列和词对)的数目,来评价摘要的质量。通过多专家人工摘要的对比,提高评价系统的稳定性和健壮性。

该方法现在已经成为摘要评价技术的通用标准之一。

关于该算法演变评价标准有:Rouge-N、Rouge-L、Rouge-S、Rouge-W、Rouge-SU。

Rouge-N介绍

参考:
https://blog.csdn.net/qq_25222361/article/details/78694617
https://www.aclweb.org/anthology/W04-1013/

公式:
ROUGE-N= \frac{ \sum_{S\in\left \{参考摘要 \right \}} \sum_{gram_{n}\in S}Count_{match}(Gram_{n}) } {\sum_{S\in\left \{ 参考摘要 \right \}} \sum_{gram_{n}\in S}Count(Gram_{n}) }

分母是n-gram的个数,分子是参考摘要和自动摘要共有的n-gram的个数。

其中,

不难看出,ROUGE公式是由召回率的计算公式演变而来的,分子可以看作“检出的相关文档数目”,即系统生成摘要与标准摘要相匹配的N-gram个数,分母可以看作“相关文档数目”,即标准摘要中所有的N-gram个数。

举个栗子:
自动摘要:Y(机器自动生成):the cat was found under the bed
参考摘要:X1(人工生成):the cat was under the bed

1-gram:将参考摘要做1-gram

参考摘要中的1-gram Count(参考摘要) Count(自动翻译)
the 2 2
cat 1 1
was 1 1
under 1 1
bed 1 1
小计 6 6

Rouge_1(X1,Y)= 6/6 =1.0,分子是待评测摘要和参考摘要都出现的1-gram的个数,分子是参考摘要的1-gram个数。(其实分母也可以是待评测摘要的,但是在精确率和召回率之间,我们更关心的是召回率Recall,同时这也和上面ROUGN-N的公式相同)


2-gram:将参考摘要做2-gram

参考摘要中的2-gram Count(参考摘要) Count(自动翻译)
the cat 1 1
cat was 1 1
was under 1 0
under the 1 1
the bed 1 1
小计 5 4

计算得,Rouge_2(X1,Y)=4/5=0.8


3-gram:将参考摘要做3-gram

参考摘要中的3-gram Count(参考摘要) Count(自动翻译)
the cat was 1 1
cat was under 1 0
was under the 1 0
under the bed 1 1
小计 4 2

计算得,Rouge_3(X1,Y)=2/4=0.5

优点:直观,简介,能反映词序。缺点:区分度不高,且当N>3时,ROUGE-N值通常很小。

应用场景:ROUGE-1:短摘要评估,多文档摘要(去停用词条件);ROUGE-2: 单文档摘要,多文档摘要(去停用词条件);

参考:https://blog.csdn.net/qq_25222361/article/details/78694617

Rouge-L 介绍

参考:
https://blog.csdn.net/qq_25222361/article/details/78694617
https://www.aclweb.org/anthology/W04-1013/

L即是LCS(longest common subsequence,最长公共子序列)的首字母,因为Rouge-L使用了最长公共子序列。
Rouge-L计算方式如下图:
R_{lcs}=\frac{LCS(X,Y)}{m}
P_{lcs}=\frac{LCS(X,Y)}{n}
F_{lcs}=\frac{(1+\beta^{2})R_{lcs}*P_{lcs}}{R_{lcs}+ \beta^{2}*P_{lcs}}

公式的几点解释:

备注: F_{lcs}中 如果\beta设置为1,则就是我们平常说的F1

举个栗子

R1 : police killed the gunman.
C1 : police ended the gunman.
C2 : the gunman murdered police.
R1为参考摘要,C1,C2为候选的机器摘要。
ROUGE-L(C1)=3/4 匹配上的是‘plice’ 和‘the gunman’
ROUGE-L(C2)=2/4 匹配上的是‘he gunman ’,‘police’不能匹配
C1优于C2!

再举个栗子

R1= ['police killed the gunman']
C1= ['the gunman kill police']
C2= ['the gunman police killed']

ROUGE-L(C1)=2/4 因其只能匹配上 ‘the gunman’ ,
ROUGE-L(C1)=2/4 也只能匹配上 ‘the gunman’ ,或者‘police killed’,二者二选一,不能都选

总结:ROUGE-L 跟词的顺序有关系,不能反复查找,只能一遍查找过去。

Rouge-W 介绍

挖坑待填
参考:
https://blog.csdn.net/qq_25222361/article/details/78694617
https://www.aclweb.org/anthology/W04-1013/

ROUGE 的具体使用

参考:
https://www.jianshu.com/p/2d7c3a1fcbe3
官网:https://github.com/pltrdy/rouge

安装 pip install rouge,

代码:

from rouge import Rouge

a = ["the cat was found under the bed",]  # 机器摘要 (可以是列表也可以是句子)
b = ["the cat was under the bed",] #标准摘要-参考摘要

rouge = Rouge()
rouge_score = rouge.get_scores(a, b)
for x in rouge_score:
    print("rouge-1",x["rouge-1"])
    print("rouge-2",x["rouge-2"])
    print("rouge-L",x["rouge-l"])

结果:

rouge-1 {'f': 0.9230769181065088, 'p': 0.8571428571428571, 'r': 1.0}
rouge-2 {'f': 0.7272727223140496, 'p': 0.6666666666666666, 'r': 0.8}
rouge-L {'f': 0.9090909041322315, 'p': 0.8333333333333334, 'r': 1.0}

tips: 对于英文,直接把句子输入即可,中文的话, 没有空格无法识别词,所以得分词之后再计算rouge值。如果需要以字为单位也得每个字加个空格。

如果想要求多个翻译的平均结果,可以这样做

rouge = Rouge()
rouge_score = rouge.get_scores(a, b,avg=True)
print("avg_rouge-1",rouge_score["rouge-1"])
print("avg_rouge-2",rouge_score["rouge-2"])
print("avg_rouge-L",rouge_score["rouge-l"])

结果:

avg_rouge-1 {'f': 0.9230769181065088, 'p': 0.8571428571428571, 'r': 1.0}
avg_rouge-2 {'f': 0.7272727223140496, 'p': 0.6666666666666666, 'r': 0.8}
avg_rouge-L {'f': 0.9090909041322315, 'p': 0.8333333333333334, 'r': 1.0}

还有一个pyrouge ,perl写的,据说各种坑,没有试
pyrouge是现成的计算库,https://github.com/andersjo/pyrouge,安装方法 https://blog.csdn.net/qq_32458499/article/details/80282049
关键点是:安装好perl,以及perl安装包的CPAN
能计算rouge 1/2/3/4/5/L

注:这个开源工具,实现有3个,p-准确率、r-召回率 和 f。我们看到公式中强调的是 r-召回率。这里实现的f,经验证是F1

3、METEOR评估法(机器翻译、自动文摘)

挖坑待填
参考:https://zhuanlan.zhihu.com/p/100942429

4、CIDEr评价方法(图像摘要)

挖坑待填
参考:https://zhuanlan.zhihu.com/p/100942429

上一篇下一篇

猜你喜欢

热点阅读