自动文摘评测方法:Rouge-1、Rouge-2、Rouge-L、Rouge-S 评测指标

2024-01-05 02:32

本文主要是介绍自动文摘评测方法:Rouge-1、Rouge-2、Rouge-L、Rouge-S 评测指标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

 

前言

关于Rouge

Rouge-1、Rouge-2、Rouge-N

Rouge-L

Rouge-L的改进版 — Rouge-W

Rouge-S

多参考摘要的情况


前言

最近在看自动文摘的论文,之前对Rouge评测略有了解,为了更好的理解Rouge评测原理,查了些资料,并简单总结。

关于Rouge

Rouge(Recall-Oriented Understudy for Gisting Evaluation),是评估自动文摘以及机器翻译的一组指标。它通过将自动生成的摘要或翻译与一组参考摘要(通常是人工生成的)进行比较计算,得出相应的分值,以衡量自动生成的摘要或翻译与参考摘要之间的“相似度”。

Rouge-1、Rouge-2、Rouge-N

论文[3]中对Rouge-N的定义是这样的:

分母是n-gram的个数,分子是参考摘要和自动摘要共有的n-gram的个数。直接借用文章[2]中的例子说明一下:
自动摘要Y(一般是自动生成的):

the cat was found under the bed


参考摘要,X1  gold standard ,人工生成的):

the cat was under the bed

summary的1-gram、2-gram如下,N-gram以此类推:

#1-gramreference 1-gram 2-gramreference 2-gram
1

the

thethe catthe cat
2catcatcat wascat was
3waswaswas foundwas under
4foundunderfound underunder the
5undertheunder thethe bed 
6thebedthe bed  
7bed   
coun7665

    

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

 

Rouge-L

L即是LCS(longest common subsequence,最长公共子序列)的首字母,因为Rouge-L使用了最长公共子序列。Rouge-L计算方式如下图:

Rouge-L

其中LCS(X,Y)是X和Y的最长公共子序列的长度,m,n分别表示参考摘要和自动摘要的长度(一般就是所含词的个数),
​    R_{LCS} ,P_{LCS}  分别表示召回率和准确率。最后的F_{LCS} 即是我们所说的Rouge-L。在DUC中,\beta被设置为一个很大的数,所以 Rouge_L 几乎只考虑了R_{LCS},与上文所说的一般只考虑召回率对应。

Rouge-L的改进版 — Rouge-W

论文[3]针对Rouge-L提出了一个问题:

problem

图中,X 是参考文摘,Y_{1} , Y_{2}是两个待评测文摘,明显Y_{1}要优于Y_{2} ,因为Y_{1}可以和参考摘要X连续匹配,但是Rouge_L(X,Y_{1})=Rouge_L(X,Y_{2}) 针对这个问题论文作者提出了改进的方案—加权最长公共子序列(Weighted Longest Common Subsequence)。关于Rouge-W的详细内容请参看论文[3]。

Rouge-S

即使用了skip-grams,在参考摘要和待评测摘要进行匹配时,不要求gram之间必须是连续的,可以“跳过”几个单词,比如skip-bigram,在产生grams时,允许最多跳过两个词。比如“cat in the hat”的 skip-bigrams 就是 “cat in, cat the, cat hat, in the, in hat, the hat”.

多参考摘要的情况

某一个人的对谋篇文档的摘要也不一定准确,所以针对一篇文档,标准数据集一般有多个参考摘要(DUC数据集就有4个)。针对这个问题,论文作者也提出了多参考摘要的解决方案:

mutiple-references

论文中的详细描述如下:

This procedure is also applied to computation of ROUGE-L (Section 3), ROUGE-W (Section 4), and ROUGE-S (Section 5). In the implementation, we use a Jackknifing procedure. Given M references, we compute the best score over M sets of M-1 references. The final ROUGE-N score is the average of the M ROUGE-N scores using different M-1 references.

我的理解是由M个参考摘要R= \left \{ r_{1},r_{2},r_{3},...,r_{m-1},r_{m} \right \} 产生M个集合

     R_{I} = R- \left \{ r_{i} \right \} , i=1,2,..,M

然后计算出每个集合R_{i}的最高分数
max score_{i} = max_{r_{j} <R_{i}}Rouge_N(r_{j} ,X)

最终

Rouge_Score = \frac{1}{M} \sum_{1}^{M} maxscore_{i}

 

本博客参考:

[1].https://en.wikipedia.org/wiki/ROUGE_(metric)
[2].What is ROUGE and how it works for evaluation of summaries? 
[3].ROUGE:A Package for Automatic Evaluation of Summaries

 

这篇关于自动文摘评测方法:Rouge-1、Rouge-2、Rouge-L、Rouge-S 评测指标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/571376

相关文章

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行