自动文摘评测方法: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

相关文章

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

在Golang中实现定时任务的几种高效方法

《在Golang中实现定时任务的几种高效方法》本文将详细介绍在Golang中实现定时任务的几种高效方法,包括time包中的Ticker和Timer、第三方库cron的使用,以及基于channel和go... 目录背景介绍目的和范围预期读者文档结构概述术语表核心概念与联系故事引入核心概念解释核心概念之间的关系

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

Python中Tensorflow无法调用GPU问题的解决方法

《Python中Tensorflow无法调用GPU问题的解决方法》文章详解如何解决TensorFlow在Windows无法识别GPU的问题,需降级至2.10版本,安装匹配CUDA11.2和cuDNN... 当用以下代码查看GPU数量时,gpuspython返回的是一个空列表,说明tensorflow没有找到