“重磅!” 常见的NLG评估方法大整理 !!

来源:AINLPer微信公众号
编辑: ShuYini
校稿: ShuYini
时间: 2020-1-3

引言

    如何判定训练出来的模型好与坏呢?关键是要有一个比较好的模型评估方法,那么今天作者就给大家汇总一下自然语言生成(NLG)中经常见到的无监督自评估方法(BLEU、METEOR、ROUGE、CIDEr)(含评估代码)。

BLEU评估法(机器翻译)

    Bleu 全称为 Bilingual Evaluation Understudy(双语评估研究) ,意为双语评估替换,是衡量一个有多个正确输出结果的模型的精确度的评估指标。
    BLEU的设计思想与评判机器翻译好坏的思想是一致的:机器翻译结果越接近专业人工翻译的结果,则越好。BLEU算法实际上在做的事:判断两个句子的相似程度。我想知道一个句子翻译前后的表示是否意思一致,显然没法直接比较,那我就拿这个句子的标准人工翻译与我的机器翻译的结果作比较,如果它们是很相似的,说明我的翻译很成功。因此,BLUE去做判断:一句机器翻译的话与其相对应的几个参考翻译作比较,算出一个综合分数。这个分数越高说明机器翻译得越好。
    举个例子:下面拿中英机器翻译做例子:
    中文:垫上有一只老鼠。
    参考翻译1:The cat is on the mat.
    参考翻译1:There is a cat on the mat.
    MT(机器翻译):the cat the cat on the mat.
    bleu的得分有一元组二元组三元组等等,这里做了1-3元组的例子,如下:
    下面先计算BELU一元组得分,即先把MT输出的句子拆分成the,cat,on,mat,频数分别为3,2,1,1:

    上面的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的二元组得分:
    参考翻译1:The cat is on the mat.
    参考翻译1:There is a cat on the mat.
    MT(机器翻译):the cat the cat on the mat.
所以bleu的二元组的得分为:p2 = Count(clip)/Count=(1+0+1+1+1)/(2+1+1+1+1) =4/6=2/3
    同理BELU的三元组得分:
    参考翻译1:The cat is on the mat.
    参考翻译1:There is a cat on the mat.
    MT(机器翻译):the cat the cat on the mat.
    所以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),即最后的bleu得分为:Bleu(total)=BP * bleu(avg)。
    这里为什么要乘以BP:
    如果MT输出了一个非常短的翻译,那么会更容易得到一个高精度的bleu,因为输出的大部分词都会出现在参考翻译中,所有我们并不想要特别短的翻译结果,所有加入BP这么一个调整因子:
    上式中,r为参考翻译的句子长度,c为MT的输出句子长度,若c<=r ,则 0<exp(1-r/c)<=1,得分bleu(avg)就会乘以小于1的系数 ,从而被“惩罚”。
那么最后:Bleu(total)=BP*bleu(avg)

ROUGE评估法(自动摘要)

    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

    其中,n表示n-gram的长度,{Reference Summaries}表示参考摘要,即事先获得的标准摘要,表示候选摘要和参考摘要中同时出现n-gram的个数,则表示参考摘要中出现的n-gram个数。不难看出,ROUGE公式是由召回率的计算公式演变而来的,分子可以看作“检出的相关文档数目”,即系统生成摘要与标准摘要相匹配的N-gram个数,分母可以看作“相关文档数目”,即标准摘要中所有的N-gram个数。具体计算方式具体如下:
    通过上面可以看到其实ROUGE-N 和 BLEU 几乎一模一样,区别是 BLEU 只计算准确率,而 ROUGE 只计算召回率。
    优点:直观,简介,能反映词序。
    缺点:区分度不高,且当N>3时,ROUGE-N值通常很小。
    应用场景:ROUGE-1:短摘要评估,多文档摘要(去停用词条件);ROUGE-2: 单文档摘要,多文档摘要(去停用词条件);

Rouge-L

    子序列:一个给定序列的子序列就是该给定序列中去掉零个或者多个元素。
    公共子序列:给定两个序列X和Y,如果Z既是X的一个子序列又是Y的一个子序列,则序列Z是X和Y的一个公共子序列。
    LCS(最长公共子序列):给定两个序列X和Y,使得公共子序列长度最大的序列是X和Y的最长公共子序列。其计算公式为:

     其中X为参考摘要,长度为mY为候选摘要,长度为n,用F值来衡量摘要XY的相似度,在DUC测评中,由于,,所以只考虑。具体计算例子如下:
    优点:不要求词的连续匹配,只要求按词的出现顺序匹配即可,能够像n-gram一样反映句子级的词序。自动匹配最长公共子序列,不需要预先定义n-gram的长度。
    缺点:只计算一个最长子序列,最终的值忽略了其他备选的最长子序列及较短子序列的影响。
    应用场景:单文档摘要;短摘要评估。
    将LCS应用到摘要级数相时,对参考摘要中的每一个句子与候选摘要中的所有句子比对,以union LCS作为摘要句的匹配结果。计算公式:
    其中R为参考摘要,包含u个句子,m个词,C为候选摘要,包含v个句子,n个词,长度为n, 是句子r_i和候选摘要C的union LCS。

Rouge-W

    为使连续匹配比不连续匹配赋予更大的权重,公式描述如下:
f(x+y)>f(x)+f(y)    例如f(k)=k^{\alpha}, \alpha > 1,同时为了归一化最终的Rouge-W的值,通常选择函数与反函数具有相似形式的函数。例如:f(k)=k^2,f^{-1}=k^{1/2},具体计算公式如下所示:

    举个例子如下:
    优点:同一LCS下,对连续匹配词数多的句子赋予更高权重,比LCS区分度更高。    缺点:同ROUGE-L,只计算一个最长子序列,最终的值忽略了其他备选的最长子序列及较短子序列的影响。
    应用场景:单文档摘要;短摘要评估。

Rouge-S

    Skip-Bigram是按句子顺序中的任何成对词语。计算公式如下:

    其中X为参考摘要,长度为m,Y为候选摘要,长度为n。SKIP2(X,Y)表示候选摘要与参考摘要的skip-bigram匹配次数。
    Skip-gram如果不限制跳跃的距离,会出现很多无意义的词对,比如“the of”、“in the”等。为了减少无意义词对的出现,可以限制最大跳跃距离,通常写ROUGE-S4表示最大跳跃距离为4,ROUGE-S9表示最大跳跃距离为9,依次类推。如果为0,那么ROUGE-S0 = ROUGE-2。举个例子如下:
    优点:考虑了所有按词序排列的词对,比n-gram模型更深入反映句子级词序。    缺点:若不设定最大跳跃词数会出现很多无意义词对。若设定最大跳跃词数,需要指定最大跳跃词数的值。
    应用场景:单文档摘要;ROUGE-S4,ROUGE-S9: 多文档摘要(去停用词条件)。

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

    2004年,卡内基梅隆大学的Lavir提出评价指标中召回率的意义,基于此研究,Banerjee和Lavie(Banerjee and Lavie, 2005)发明了基于单精度的加权调和平均数和单字召回率的METEOR度量方法,目的是解决BLEU标准中的一些固有缺陷。论文链接地址:http://www.cs.cmu.edu/~alavie/METEOR/pdf/Banerjee-Lavie-2005-METEOR.pdf
    METEOR扩展了BLEU有关“共现”的概念,提出了三个统计共现次数的模块:一是“绝对”模块("exact" module),即统计待测译文与参考译文中绝对一致单词的共现次数;二是“波特词干”模块(porter stem module),即基于波特词干算法计算待测译文与参考译文中词干相同的词语“变体”的共现次数,如happy和happiness将在此模块中被认定为共现词;三是“WN同义词”模块(WN synonymy module),即基于WordNet词典匹配待测译文与参考译文中的同义词,计入共现次数,如sunlight与sunshine。
     同时METEOR将词序纳入评估范畴,设立基于词序变化的罚分机制,当待测译文词序与参考译文不同时,进行适当的罚分。最终基于共现次数计算准确率、召回率与F值,并考虑罚分最终得到待测译文的METEOR值。
    该算法首先计算 unigram 情况下的准确率P和召回率R(计算方式与BLEU、ROUGE类似),得到调和均值F值:
F=\frac{(\alpha^2+1)P}{R+\alpha P}    看到这可能还没有什么特别的。Meteor的特别之处在于,它不希望生成很“碎”的译文:比如参考译文是“A B C D”,模型给出的译文是“B A D C”,虽然每个unigram都对应上了,但是会受到很严重的惩罚。惩罚因子的计算方式为:Penalty=\gamma (\frac{\#chunks}{\#unigrams\_matched})^{\theta}    上式中的 \#chunks 表示匹配上的语块个数,如果模型生成的译文很碎的话,语块个数会非常多;\#unigrams\_matched 表示匹配上的unigram个数。所以最终的评分为:
Meteor=(1-Penalty)\cdot F    用于机器翻译评测时,通常取 \alpha=3\gamma=0.5\theta=3
    自从2004年以来,该团队也在不断的对METEOR评估方法进行优化,具体可见:http://www.cs.cmu.edu/~alavie/METEOR/index.html

CIDEr评价方法

    CIDEr(Consensuus-based Image Description Evaluation)评价标准是Vedantm在2015年计算机视觉与模式识别大会上提出来的针对图像摘要问题的度量标准。论文链接地址为:https://arxiv.org/pdf/1411.5726.pdf
    研究者认为过去的多种评价方法和人类评价具有较强的相关性,但是无法统一到一个度量标准来评价与人的相似性(human-like),为了解决这个问题,从而评价计算机自动生成的句子到底有多像人工书写的,Vedantam等人提出了基于共识的评价标准(consensus-based protocol),其基本工作原理就是通过度量带测评语句与其他大部分人工描述句之间的相似性来评价相似性。研究者证明CIDEr在与人工共识的匹配度上要好于前述其它评价指标。
    CIDEr首先将n-grams在参考句子中的出现频率编码进来,n-gram在数据集所有图片中经常出现的图片的权重应该减少,因为其包含的信息量更少,该权重研究者通过TF-IDF计算每个n-gram的权重。将句子用n-gram表示成向量形式,每个参考句和待评测句之间通过计算TF-IDF项链的余玄距离来度量其相似性。

参考文献

[1] https://blog.csdn.net/qq_31584157/article/details/77709454
[2] https://blog.csdn.net/CharlesOyfz/article/details/90668423
[3] https://blog.csdn.net/qq_25222361/article/details/78694617
[4]https://blog.csdn.net/lcj369387335/article/details/69845385

更多自然语言处理、pytorch相关知识,还请关注AINLPer公众号,极品干货即刻送达。

推荐阅读更多精彩内容