Seq2Seq序列问题评估指标总结: Edmundson、Rouge、BLEU

Seq2Seq序列问题评估指标总结: Edmundson、Rouge、BLEU

序列到序列建模是解决NLP中较难任务的核心,它包括:1、 自动文摘(Text Summarization);2、 文本简化(Text simplification);3、 问答(Question answering);4、 聊天机器人(Chatbots);5、 机器翻译(Machine translation)。本文对序列问题常用评估方法进行总结。

文章目录

  • Seq2Seq序列问题评估指标总结: Edmundson、Rouge、BLEU
    • Edmundson
    • ROUGE
      • Rouge-1, Rouge-2, Rouge-N
      • Rouge-L
      • ROUGE-W
      • ROUGE-S
    • BLEU
      • 原始版本
      • n-gram改良版本
        • 公式
        • 举例
      • 短译句的惩罚因子
    • 常用方法总结与对比
    • 参考资料

Edmundson

通过比较机械文摘(自动文摘系统得到的文摘)与目标文摘的句子重合率(coselection rate)的高低来对系统摘要进行评价。

也可以主观评估,就是由专家比较机械文摘与目标文摘所含的信息,然后给机械文摘一个等级评分。等级可以分为:完全不相似,基本相似,很相似,完全相似等。

每一个机械文摘的重合率为按三个专家给出的文摘得到的重合率的平均值:

平 均 重 合 率 = ∑ i = 1 n 匹 配 句 子 数 / 专 家 文 摘 句 子 数 × 100 % 平均重合率=\sum_{i=1}^{n} 匹配句子数/专家文摘句子数×100% i=1n×100

Edmundson比较的基本单位是句子,是通过句子级标号分隔开的文本单元,句子级标号包括“。”、“:”、“;”、“!”、“?”等。为使专家文摘与机械文摘具有可比性,只允许专家从原文中抽取句子,而不允许专家根据自己对原文的理解重新生成句子,专家文摘和机械文摘的句子都按照在原文中出现的先后顺序给出。

ROUGE

Rouge (recall-oriented understand for gisting evalution)

Rouge-1, Rouge-2, Rouge-N

Rouge-N定义如下,其中n=1,2,3,4....n, Ref Summaries 表示参考结果

R o u g e N = ∑ S ∈ { R e f S u m m a r i e s } ∑ g r a m n ∈ S C o u n t m a t c h ( g r a m n ) ∑ S ∈ { R e f S u m m a r i e s } ∑ g r a m n ∈ S C o u n t ( g r a m n ) Rouge N=\cfrac {\sum_{S \in \{ Ref Summaries \} } \sum_{gram_n \in S} Count_{match}(gram_n)} {\sum_{S \in \{ Ref Summaries \} } \sum_{gram_n \in S} Count(gram_n)} RougeN=S{RefSummaries}gramnSCount(gramn)S{RefSummaries}gramnSCountmatch(gramn)

再解释Rouge N之前需要先了解其中gram的意义。gram来自n-gram,那么n-gram是什么?

详细的例子可以查看其他博客,在这里简单的举几个例子方便读者理解:

  • 生成项(pred):
四川 九寨沟 7.0 级 地震
  • 参考项(gold):
九寨沟 发生 7.0 级 地震
id pred 1-gram gold 1-gram pred 2-gram gold 2-gram
1 四川 九寨沟 四川 九寨沟 九寨沟 发生
2 九寨沟 发生 九寨沟 7.0 发生 7.0
3 7.0 7.0 7.0 级 7.0 级
4 级 地震 级 地震
5 地震 地震
Count 5 5 4 4

回到Rouge-N的公式,(pred, gold)的Rouge-1如何计算呢?分子中统计的是pred和gold的1-gram结果match的数量,如表中所示可以发现有4项匹配,因此分子是4。分母则是参考项(gold)的1-gram结果数量也就是5,因此最终的结果是:(Rouge-N都可以参考这个思路计算)

R o u g e 1 ( p r e d , g o l d ) = 4 5 = 0.8 Rouge1(pred, gold)= \cfrac {4} {5} = 0.8 Rouge1(pred,gold)=54=0.8

Rouge-L

其中的L表示的是LCS 最长公共子序列的首字母。定义如下所示:

R l c s = L C S ( X , Y ) m R_{lcs}= \cfrac {LCS(X,Y)} {m} Rlcs=mLCS(X,Y)

P l c s = L C S ( X , Y ) n P_{lcs}= \cfrac {LCS(X,Y)} {n} Plcs=nLCS(X,Y)

F l c s = ( 1 + β 2 ) R l c s P l c s R l c s + β 2 P l c s F_{lcs}= \cfrac {(1+\beta ^ 2) R_{lcs} P_{lcs}} {R_{lcs} + \beta ^ 2 P_{lcs}} Flcs=Rlcs+β2Plcs(1+β2)RlcsPlcs

其中 L C S ( X , Y ) LCS(X, Y) LCS(X,Y)是X和Y的最长公共子序列的长度,m、n分别表示参考项和生成项的长度(一般就是所含词的个数)。 R l c s R_{lcs} Rlcs P l c s P_{lcs} Plcs分别表示召回率和准确率。最后的 F l c s F_{lcs} Flcs即是我们所说的Rouge-L。在DUC测评中,beta 被设置为一个很大的数(->∞),于是Rouge-L与上文的召回率对应。

依旧以九寨沟地震为例:

  • 生成项(pred):
四川 九寨沟 7.0 级 地震
  • 参考项(gold):
九寨沟 发生 7.0 级 地震

最长公共子序列为 九寨沟 7.0 级 地震,因此得到:

R o u g e L = R l c s = 4 5 = 0.8 RougeL=R_{lcs}= \cfrac {4} {5} = 0.8 RougeL=Rlcs=54=0.8

注:这里说的是sentence level的Rouge-L。对于summary level,summary中的每个句子与参考想进行比对,LCS统计所有句子之和。

ROUGE-W

WeightLongest Common Subsequence, 在Rouge L的基础上添加权重,为使连续匹配比不连续匹配赋予更大的权重。同一LCS下,对连续匹配词数多的句子赋予更高权重,比LCS区分度更高。如:

X : [ A ‾ , B ‾ , C ‾ , D ‾ , E , F , G ] X:[\underline A, \underline B, \underline C, \underline D, E, F, G] X:[A,B,C,D,E,F,G]

Y 1 : [ A ‾ , B ‾ , C ‾ , D ‾ , H , I , K ] Y_1:[\underline A, \underline B, \underline C, \underline D, H, I, K] Y1:[A,B,C,D,H,I,K]

Y 2 : [ A ‾ , H , B ‾ , I , C ‾ , K , D ‾ ] Y_2: [\underline A, H, \underline B, I, \underline C, K, \underline D] Y2:[A,H,B,I,C,K,D]

其中 X X X是参考摘要, Y 1 Y_1 Y1 Y 2 Y_2 Y2是自动摘要。可以看到,虽然 Y 1 Y_1 Y1 Y 2 Y_2 Y2 X X X计算CLS值相等,Rouge L也相等,但明显, Y 1 Y_1 Y1的结果优于 Y 2 Y_2 Y2

ROUGE-S

Skip-Bigram Co-Occurrence Statistics,即使用了skip-grams,在参考摘要和待评测摘要进行匹配时,不要求gram之间必须是连续的,可以“跳过”几个单词,比如skip-bigram,在产生grams时,允许最多跳过两个词。比如四川 九寨沟 发生 地震 的 skip-bigrams 就是 四川 九寨沟;四川 发生;四川 地震; 九寨沟 发生;九寨沟 地震; 发生 地震,共6个。

BLEU

BLEU(Bilingual Evaluation understudy)是一种流行的机器翻译评价指标,用于分析候选译文和参考译文中n元组共同出现的程度。

原始版本

使用一个累加器表示candidate中的词在reference doc中出现的次数, 从candidate doc 中的第一个词开始比较, 如果在参考文本中出现过, 那么计数加1. 最后使用这个累加值除以candidate doc 中的单词数目即可计算得到文本的BLEU取值, 我们称之为Precision。

Candidate the the the the the the the
Reference the cat is on the mat

计算上表中示例的BLEU,可以看到Candidate中的每一个单词the在Reference都出现过,因此计算出来的结果就是 7 / 7 = 1 7/7=1 7/7=1。但是实际上这个翻译非常不理想, 这也是最初的BLEU评估指标不完善的地方, 当遇到出现较多常见词汇时, 翻译质量不高的译文还能够得到较高的precision, 因此也诞生了后续的改良型BLEU计算指标的算法。

n-gram改良版本

引入将多个词组合在一起形成一个gram的思想, 比如原始版本的Bleu的计算可以看做一个单词构成的gram(这是一种特殊情况)。因此就可以构成1个单词长度到n个单词长度的多种单词组, 每一种长度的gram都可以计算出一个相应的precision P n P_n Pn。对于该种长度gram 的precision我们还需要把它们整合起来, 一般使用加权集合平均的方法将n个计算出的precision整合成一个precision。

公式

下面根据公式具体解释计算过程。

假设参考文献的数量为 M M M,假设长度为n的gram中的一个组合为 W n i Wn_i Wni(其中 W W W表示word集合, n n n表示n-gram, i i i表示word的index),同时可以计算出这个单词在第 j j j个参考文档中出现的次数, 用符号 R e f w n i j Ref_{w n_{i}}^j Refwnij,由于参考文献有 M M M个, 选择这 M M M个参考文献取值中的最大值进行下一步计算,记作:

R e f w n i max ⁡ = Max ⁡ ( Re ⁡ f w n i j ) j = 0 , 1 , 2 … M − 1 Ref_{w n_{i}}^{\max }=\operatorname{Max}\left(\operatorname{Re} f_{w n_{i}}^{j}\right) \quad j=0,1,2 \ldots M-1 Refwnimax=Max(Refwnij)j=0,1,2M1

将当前组合 W n i Wn_i Wni在candicate doc中出现的次数记做 C o u n t w n i Count_{wn_i} Countwni,和 R e f w n i max ⁡ Ref_{w n_{i}}^{\max } Refwnimax 进行比较,选择两个计算值中的最小值进行下一步计算, 记作:

Count  w n i r e s = Min ⁡ ( Count ⁡ w n i , Ref ⁡ w n i max ⁡ ) \text {Count }_{w n_{i}}^{r e s}=\operatorname{Min}\left(\operatorname{Count}_{w n_{i}}, \operatorname{Ref}_{w n_{i}}^{\max }\right) Count wnires=Min(Countwni,Refwnimax)

定义参考文献长度为 n n n的gram的组合共有 K K K种,最终precision计算公式如下:

P n = ∑ i = 0 K − 1  Count  w n i r e s ∑ i = 0 K − 1  Count  w n i P_{n}=\frac{\sum_{i=0}^{K-1} \text { Count }_{w n_{i}}^{r e s}}{\sum_{i=0}^{K-1} \text { Count }_{w n_{i}}} Pn=i=0K1 Count wnii=0K1 Count wnires

以上公式是长度为n的所有gram的precision计算公式,由于这个n的取值可以1到candidate doc长度 N N N, 需要将最终得到的这 N N N个precision进行整合。 此处可以使用求加权几何平均数的方法对这 N N N个precision求出平均精度。

在做加权集合平均之前,可以对公式进行一定的变形假设权值序列为 W n ( n = 0 , 1 , 2... N − 1 ) Wn(n=0,1,2...N−1) Wn(n=0,1,2...N1)。可以求得集合加权平均的precision公式如下:

P a v g = ∏ P n W n ∑ n = 0 N − 1 W n = e l n ∏ P n W n ∑ n = 0 N − 1 W n = e ∑ n = 0 N − 1 W n ∗ l n P n ∑ n = 0 N − 1 W n P_{avg} = \sqrt[\sum_{n=0}^{N-1} W_n]{\prod P_n^{W_n}} = e^{ln^{\sqrt[\sum_{n=0}^{N-1} W_n]{\prod P_n^{W_n}}}} = e^{\cfrac {\sum_{n=0}^{N-1} W_n * ln^{P_n}} {\sum_{n=0}^{N-1} W_n}} Pavg=n=0N1WnPnWn =elnn=0N1WnPnWn =en=0N1Wnn=0N1WnlnPn

一般情况下权值全部取1, 因此可以得到简化的几何平均精度:

P a v g = e ∑ n = 0 N − 1 ln ⁡ P n N P_{a v g}= e^{\frac{\sum_{n=0}^{N-1} \ln P_{n}}{N}} Pavg=eNn=0N1lnPn

举例

下面举例说明计算过程:

Candidate the cat
Reference1 a cat is on the mat
Reference2 there is a cat on the

根据上述的计算平均精度的公式,计算BLEU的计算过程为:

获取Candidate的1-gram结果:

candi-1-gram : ’the’, ’cat’ \text {candi-1-gram} : \text {'the', 'cat'} candi-1-gram:’the’, ’cat’

分别计算Reference1,Reference2中Candidate的1-gram结果出现的次数,求没中情况的最大值:

  • 对于1-gram结果,单词the

Ref ⁡ w 1 the 1 = 1 \operatorname{Ref}_{w 1_{\text {the}}}^1=1 Refw1the1=1

Ref ⁡ w 1 the 2 = 1 \operatorname{Ref}_{w 1_{\text {the}}}^2=1 Refw1the2=1

Ref ⁡ w 1 the m a x = 1 \operatorname{Ref}_{w 1_{\text {the}}}^{max}=1 Refw1themax=1

  • 对于1-gram结果,单词cat

Ref ⁡ w 1 cat 1 = 1 \operatorname{Ref}_{w 1_{\text {cat}}}^1=1 Refw1cat1=1

Ref ⁡ w 1 cat 2 = 1 \operatorname{Ref}_{w 1_{\text {cat}}}^2=1 Refw1cat2=1

Ref ⁡ w 1 cat m a x = 1 \operatorname{Ref}_{w 1_{\text {cat}}}^{max}=1 Refw1catmax=1

因此得到两个情况的 Count  r e s \text {Count }^{r e s} Count res

Count  w 1 the r e s = m i n ( Count  w 1 the , Ref ⁡ w 1 the m a x ) = m i n ( 1 , 1 ) = 1 \text {Count }_{w 1_{\text {the}}}^{r e s} = min(\text {Count }_{w 1_{\text {the}}}, \operatorname{Ref}_{w 1_{\text {the}}}^{max}) = min(1,1) = 1 Count w1theres=min(Count w1the,Refw1themax)=min(1,1)=1

Count  w 1 cat r e s = m i n ( Count  w 1 cat , Ref ⁡ w 1 cat m a x ) = m i n ( 1 , 1 ) = 1 \text {Count }_{w 1_{\text {cat}}}^{r e s} = min(\text {Count }_{w 1_{\text {cat}}}, \operatorname{Ref}_{w 1_{\text {cat}}}^{max}) = min(1,1) = 1 Count w1catres=min(Count w1cat,Refw1catmax)=min(1,1)=1

最终得到1-gram的Precision, P 1 P_1 P1

P 1 = Count  w 1 the r e s + Count  w 1 cat r e s Count  w 1 the + Count  w 1 cat = 1 + 1 1 + 1 = 1 P_1 = \cfrac {\text {Count }_{w 1_{\text {the}}}^{r e s} + \text {Count }_{w 1_{\text {cat}}}^{r e s}} {\text {Count }_{w 1_{\text {the}}} + \text {Count }_{w 1_{\text {cat}}}} = \cfrac {1+1} {1+1} = 1 P1=Count w1the+Count w1catCount w1theres+Count w1catres=1+11+1=1

同理得到2-gram的Precision, P 2 P_2 P2

P 2 = Count  w 2 the cat r e s Count  w 2 the cat = 1 1 = 1 P_2 = \cfrac {\text {Count }_{w 2_{\text {the cat}}}^{r e s}} {\text {Count }_{w 2_{\text {the cat}}}} = \cfrac {1} {1} = 1 P2=Count w2the catCount w2the catres=11=1

值全部取1, 因此可以得到简化的几何平均精度:

P a v g = 1 P_{a v g}=1 Pavg=1

短译句的惩罚因子

可见,n-gram改良版本BLEU针对于翻译结果为短句的情况依然会得出不准确的评估。

因此在这个基础上引入了对于短翻译句子的惩罚因子。 引入一个参考长度(记做 R e f l e n Ref_{len} Reflen),同时定义candidate doc 的长度为 c c c。当 c c c小于参考长度时,需要添加惩罚因子。那么惩罚因子计算公式如下:

θ = { 1 , c ≥ R e f l e n e 1 − R e f l e n c , c < R e f l e n \theta = \begin{cases} 1, c \geq Re f_{len}\\ e^{1-\cfrac {Re f_{len}}{c}}, c < Re f_{len}\\ \end{cases} θ=1,cReflene1cReflen,c<Reflen

综上所述, 含有惩罚因子的BLEU最终的计算公式如下:

P a v g = θ ∗ e ∑ n = 0 N − 1 ln ⁡ P n N P_{a v g}=\theta * e^{\frac{\sum_{n=0}^{N-1} \ln P_{n}}{N}} Pavg=θeNn=0N1lnPn

关于参考长度的选择其实没有固定的准则。 如果是比较严格的情况下可以选择将最长的reference doc的长度作为参考长度, 一旦翻译文档不是最佳匹配的情况都会受到短句惩罚因子的影响。

引入短句的惩罚因子, 对上述的短句翻译例子的最终平均精度计值为(此时选择的参考长度为reference doc中的最长句子长度,值为7):

P a v g = e 1 − 7 / 2 ∗ 1 = 0.082 P_{a v g}=e^{1-7/2} * 1=0.082 Pavg=e17/21=0.082

从结果可以看出使用了惩罚因子过后, 很大程度上降低了短翻译句子的精度, 使得模型的评估更加准确.

常用方法总结与对比

方法 优点 缺点 应用场景
Rouge-N 直观,简洁,能反映词序 区分度不高,且当N>3时,ROUGE-N值通常很小 ROUGE-1:短摘要评估,多文档摘要(去停用词条件);ROUGE-2: 单文档摘要,多文档摘要(去停用词条件)
Rouge-L 不要求词的连续匹配,只要求按词的出现顺序匹配即可,能够像n-gram一样反映句子级的词序。自动匹配最长公共子序列,不需要预先定义n-gram的长度。 只计算一个最长子序列,最终的值忽略了其他备选的最长子序列及较短子序列的影响。 单文档摘要;短摘要评估。
BLEU 方便、快速、结果有参考价值 1. 不考虑语言表达(语法)上的准确性;2. 测评精度会受常用词的干扰; 3. 短译句的测评精度有时会较高; 4. 没有考虑同义词或相似表达的情况,可能会导致合理翻译被否定 评估机器翻译质量的工具;还用于语言生成、图片标题生成、文本摘要、语音识别等问题中

参考资料

  1. 自动文摘评测方法:Rouge-1、Rouge-2、Rouge-L、Rouge-S
  2. 学习笔记———《自动文档摘要评价方法—Edmundson和ROUGE》
  3. 机器翻译自动评估-BLEU算法详解
  4. 自然语言处理——BLEU详解以及简单的代码实现

你可能感兴趣的:(NLP,评估,序列问题)