Seq2Seq序列问题评估指标总结: Edmundson、Rouge、BLEU
序列到序列建模是解决NLP中较难任务的核心,它包括:1、 自动文摘(Text Summarization);2、 文本简化(Text simplification);3、 问答(Question answering);4、 聊天机器人(Chatbots);5、 机器翻译(Machine translation)。本文对序列问题常用评估方法进行总结。
文章目录
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}∑gramn∈SCount(gramn)∑S∈{ RefSummaries}∑gramn∈SCountmatch(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 Roug