LLM - 大模型评估指标之 ROUGE

news2024/11/23 12:09:25

目录

一.引言

二.ROUGE-简介

1.ROUGE-N

2.ROUGE-L

3.ROUGE-W

4.ROUGE-S

三.ROUGE-实现

1.How To Use

2.Inputs

3.Outputs

四.总结


一.引言

ROUGE 代表面向召回的研究,用于 Gisting 评估。它包括通过将摘要与人类创建的其他摘要进行比较来自动确定摘要质量的措施。度量计算要评估的计算机生成的摘要之间的 n-gram、单词序列和词对等重叠单元的数量以及人类创建的理想摘要。本文主要介绍四种不同的 ROUGE 度量:

◆ ROUGE-N

◆ ROUGE-L

◆ ROUGE-W

◆ ROUGE-S

二.ROUGE-简介

1.ROUGE-N

形式上,ROUGE-N 是候选摘要和一组参考摘要之间的 n-gram 召回率。而 LEU 则是一种基于精度的度量。ROUGE-N 计算如下:

其中 n 代表 n-gram,分子 Count Match 的长度是候选输出和一组参考输出中同时出现的 n-gram 的最大数量,分母是参考输出侧出现的 n-gram 数量的总和。

以 ROUGE-1 为例:

分母为参考输出侧出现的 n-gram 总和,这里共出现 6+7 = 13

分子为候选输出与每个参考输出的匹配,这里和为 4+5 = 9

所以 ROUGE-1 = 9 / 13 = 0.6923076923076923,ROUGE-2 的计算同理:

分母参考输出和 R1+R2 = 11,分子匹配数 R1+R2 = 6

所以 ROUGE-2 = 6 / 11 = 0.5454545454545。

2.ROUGE-L

ROUGE-L 代表 Longest Common Subsequence,其计算输出与参考输出之间的最长公共子序列 (LCS) 。为了将 LCS 应用于摘要评估,我们将摘要句子视为单词序列。直觉是两个摘要句子的 LCS 越长,两个摘要越相似。我们建议使用基于 LCS 的 F-measure 来估计长度为 m 和 Y 的两个摘要 X 之间的相似度,假设 X 是参考摘要句子,Y 是候选摘要句子,如下所示:

其中 LCS(X,Y) 是 X 和 Y 的最长公共子序列的长度,在 DUC 中,β 设置为非常大的数字 ∞,此时只考虑 Rlcs。等式 4 称为基于 LCS 的 F 度量,当 X=Y 时 ROUGE-L = 1,而当 LCS(X, Y) = 0 时,ROUGE-L = 0。

X 代表参考输出即 Reference,这里 X = the cat is on the mat,m = 6 即 X 的长度

Y 代表生成的输出即 Output,这里 Y = the cat the cat on the mat,n = 7 即输出对应的长度

将 LCS(X, Y) = 5 即 "the cat on the mat",m = 7,n = 6 代入公式:

R_{lcs} = \frac{LCS(X,Y)}{m} = 5 / 7 = 0.7142857142857143

R_{lcs} = \frac{LCS(X,Y)}{n} = 5 / 6 = 0.83

F_{lcs} = \frac{(1+\beta ^{2})R_{cls}P_{lcs}}{R_{lcs}+\beta^{2}P_{lcs}} = \frac{(1+\beta ^{2}) \cdot 0.7142 \cdot 0.83}{0.7142 + \beta^{2}\cdot 0.83}

β 可以看作是在 Recall 和 Prection 之间的度量,一般 Flcs 的计算中设置偏大,符合 ROUGE 偏向于 Recall 的初衷。 当有多个候选时,采用求和的方式计算:

3.ROUGE-W

ROUGE-W 代表 Weighted Longest Common Subsequence 即加权最长公共子序列。LCS 具有许多不错的属性,不幸的是,基本的 LCS 还有一个问题,即它不区分其嵌入序列中不同空间关系的 LCS。以下面为例:

给定候选 X 与输出 Y1、Y2 如果按照 ROUGE-L 计算得到的分数是相同的,但是从句子通顺的角度上看 Y1 是优于 Y2 的,因为 Y1 更加连贯。所以 ROGUE-W 的 W 就是给与连续的匹配更多地权重,从而在 LCS 相同的情况下,连贯性更好的输出可以获得更高的分数。ROUGE-W 的计算公式如下:

在形式上与 ROUGE-L 相似,权衡了 Recall 与 Precision,但是 WLCS 的计算相对复杂,其采用动态规划的方式计算,论文中给出了计算的伪代码:

其中 c 是动态规划表,c(i,j) 存储以 Y 的 X 和 yj 的单词 xi 结尾的 WLCS 分数,w 是存储以 c 表位置 i 和 j 结束的连续匹配长度的表,f 是表位置 c(i,j) 处连续匹配的函数。请注意,通过提供不同的加权函数 f,我们可以参数化 WLCS 算法以将不同的信用分配给连续的序列匹配。

权重函数 f 必须具有 f(x+y) > f(x) + f(y) 对于任何正整数 x 和 y 的性质。换句话说,连续匹配比非连续匹配获得更多的分数。例如,当 k >=0 和 α,β > 0 时,f(k)-=-αk-β。该函数为每个不连续的 n-gram 序列收取 -β 的差距惩罚。另一个可能的函数族是 k^α 形式的多项式族,其中 α > 1。然而,为了归一化最终的 ROUGE-W 分数,我们也更喜欢具有接近形式逆函数的函数。例如,f(k) = k^2 其具有封闭形式的逆函数 f(k)^-1 = sqrt(k)。

4.ROUGE-S

ROUGE-S 的 S 代表 Skip,全称为 Skip-Bigram Co-Occurrence Statistics,Skip-bigram 是其句子顺序中的任何一对单词,允许任意间隙。Skip-bigram 共现统计测量候选翻译和一组参考翻译之间的 skip-bigrams 重叠。

以 S1-S4 为例,对于每个 Sample 我们可以获取 C_4^2 个排列,基于这些排列的计算公式如下:

其中 SKIP2(X,Y) 是 X 和 Y 之间的 skip-bigram 匹配数,β 控制 Pskip2 和 Rskip2 的相对重要性,C 是组合函数。我们 F-skip2 为 skip-bigram 的 F-measure,即 ROUGE-S。 

三.ROUGE-实现

基于 python evaluate 库可以计算 candicat 和 reference 的 ROUGE 分数。

1.How To Use

import evaluate
rouge = evaluate.load('rouge')
predictions = ["hello there", "general kenobi"]
references = [["hello", "there"], ["general kenobi", "general yoda"]]
results = rouge.compute(predictions=predictions,
references=references)
print(results)
{'rouge1': 0.8333333333333333, 'rouge2': 0.5, 'rougeL': 0.8333333333333333, 'rougeLsum': 0.8333333333333333}

2.Inputs

◆ predictions (list) 

要评分的预测列表。每个预测都应该是一个字符串,其中用空格分隔标记。

◆ references (list| list[lsit]) 

每个预测的参考列表或每个预测的几个参考的列表。每个引用都应该是一个字符串,其中标记由空格分隔。

◆ rouge_types (list)

Rouge 计算类型,default = ['rouge1','rouge2','groupL','groupLSum']。

◆ use_aggregator (boolean)

如果为True,则返回聚合。默认值为True。

◆ use_stemmer (boolean)

如果为True,则使用Porter-stemmer去除单词后缀。默认为False。

3.Outputs

输出是一个字典,输入列表 group_types 中的每个 Rouge 类型都有一个条目。如果use_aggregator = False,则每个字典条目都是一个分数列表,每个句子一个分数。

又有 ROUGE 计算采取了归一化,所以其值的范围为 0-1。

import evaluate
rouge = evaluate.load('rouge')
predictions = ["hello there", "general kenobi"]
references = [["hello", "there"], ["general kenobi", "general yoda"]]
results = rouge.compute(predictions=predictions,references=references, use_aggregator=False)
print(results)

 当 use_aggregator = False 时:

{'rouge1': [0.6666666666666666, 1.0], 
 'rouge2': [0.0, 1.0], 
 'rougeL': [0.6666666666666666, 1.0], 
 'rougeLsum': [0.6666666666666666, 1.0]}

 当 use_aggregator = True 时: 

{'rouge1': 0.8333333333333333, 
 'rouge2': 0.5, 
 'rougeL': 0.8333333333333333, 
 'rougeLsum': 0.8333333333333333}

可以看出 use_aggregator = True 会对多个样本的 Rouge 值取平均,就像 BLEU 的 Wn 一样。

四.总结

与 BLEU 一样,ROUGE 整体简洁易用,且可解释性强,缺点也同样明显,ROUGE 只能从单词、短语的角度衡量相似度。不能从语义的角度去衡量,对于中文输出比对,我们可以使用分词将句子拆分为不同的词组,而不是单一的汉字评估。后续有机会我们看看能不能借助 GPT 帮我们实现自动评分的功能。

参考:

ROUGE 计算: ROUGE - a Hugging Face Space by evaluate-metric

ROUGE 论文: ROUGE: A Package for Automatic Evaluation of Summaries - ACL Anthology

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/892792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BC108 矩阵交换

描述 KiKi有一个矩阵,他想知道经过k次行变换或列变换后得到的矩阵。请编程帮他解答。 输入描述 第一行包含两个整数n和m,表示一个矩阵包含n行m列,用空格分隔。 (1≤n≤10,1≤m≤10) 从2到n1行,每行输入m个整数(范围-…

【Linux操作系统】深入探索Linux进程:创建、共享与管理

进程的创建是Linux系统编程中的重要概念之一。在本节中,我们将介绍进程的创建、获取进程ID和父进程ID、进程共享、exec函数族、wait和waitpid等相关内容。 文章目录 1. 进程的创建1.1 函数原型和返回值1.2 函数示例 2. 获取进程ID和父进程ID2.1 函数原型和返回值2.…

消息中间件-kafka实战-第六章-kafka加线程池多线程消费

目录 参考架构图延时队列 参考 头条面试:当线上Kafka集群有大量消息积压时,如何利用多线程消费解决消费积压问题 架构图 延时队列

Python查找交作业人数

写在前面: 利用Python实现交作业具体情况,能够高效快捷地收集作业! 一、问题:获取test文件夹下的所有文件 二、Python中os.listdir()函数的用法 (一)os.listdir()函数的基本用法 os.listdir()函数的基本…

linux系统中的中文显示问题

经常遇到这种情况:某些项目的文件中不可避免地包含有中文,在Windows系统中没有任何问题,拷到Linux系统中就出问题了。 1. Linux系统设置 $echo $LANG en_US.iso885915 朋友建议我设置为: export LANGzh_CN.utf8 但我这样设置之…

CSS中的z-index属性有什么作用?如何控制元素在层叠上下文中的显示顺序?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ z-index 属性的作用及控制元素层叠顺序作用 ⭐ 控制元素层叠顺序⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff0…

什么是flexbox布局?它有什么特点和优势?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是 Flexbox 布局?⭐ 特点和优势⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那…

数据结构,线性表,顺序表基础。

1.线性表 线性表特征&#xff1a; 对非空表&#xff0c;a0是表头&#xff0c;无前驱a(n-1)是表尾&#xff0c;无后继其他的都有ai前驱a(i-1)与后继a(i1)。 2、顺序结构存储方式是线性表存储的一种方式&#xff0c;主要体现形式为数组。 #include<stdio.h> #include<st…

密码学学习笔记(十八):Diffie–Hellman (DH) 密钥交换

DH算法是第一个密钥交换算法&#xff0c;也是第一个得到形式化描述的公钥密码算法。 群论 DH密钥交换算法基于数学中的群论&#xff0c;群论也是当今大多数公钥密码的基础。 要使集合及其运算成为一个群&#xff0c;需要满足以下性质&#xff1a; 封闭性&#xff1a;群中两…

Eureka 的几种主动下线服务的方式

补充&#xff1a;在启动eureka服务的时候发现控制台有以下的输出 由此猜想可以通过改接口下线服务&#xff0c; 于是尝试了一下。 果然能从注册中心中移除该实例。 1. 直接停掉服务。 默认情况下&#xff0c;如果Eureka Server在90秒没有收到Eureka客户的续约&#xff0c;它…

树莓派+WordPress:打造专属博客,内网穿透轻松发布到公网!

概述 在本次教程里&#xff0c;我们将在树莓派上搭建一个Wordpress博客站点&#xff0c;开始博客时代&#xff0c;记录生活点滴。同时做内网穿透将博客发布上线&#xff0c;让互联网用户都可以访问到&#xff0c;无需公网ip&#xff0c;也无需购买云服务器&#xff0c;简单快速…

内网隧道代理技术(十六)之 FRP的使用

FRP的使用和介绍 FRP介绍 FRP (Fast Reverse Proxy) 是一个使用 Go 语言开发的高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,他支持点对点的转发,还有全流量转发,FRP最大的一个特点是使用SOCKS代理,而SOCKS…

10----超链接

在 Markdown 里可以创建超链接&#xff0c;以链接到其他 Markdown 页面或网站。 一、行内超链接&#xff1a; 行内式超链接是Markdown中创建超链接的一种方式&#xff0c;它的语法相对简单&#xff0c;适合在文本中直接插入链接。 1.链接到网站&#xff1a;[链接文本](链接地…

排序+运算>直接运算的效率的原因分析

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Facebook 应用未启用:这款应用目前无法使用,应用开发者已得知这个问题。

错误&#xff1a;Facebook 应用未启用:这款应用目前无法使用&#xff0c;应用开发者已得知这个问题。应用重新启用后&#xff0c;你便能登录。 「应用未经过审核或未发布」&#xff1a; 如果一个应用还没有经过Facebook的审核或者开发者尚未将应用发布&#xff0c;那么它将无法…

MySQL数据库——图形化界面工具(DataGrip),SQL(2)-DML(插入、修改和删除数据)

目录 图形化界面工具&#xff08;DataGrip&#xff09; 下载及安装 启动及连接 使用 创建数据库 创建表结构 编写SQL DML 插入 更新和删除 1.修改数据 2.删除数据 总结 图形化界面工具&#xff08;DataGrip&#xff09; 下载及安装 DataGrip下载链接&#xff1a;…

如何使用HTML5新增的表单元素来增强表单功能?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 1. <input type"email"> 和 <input type"url">⭐ 2. <input type"tel">⭐ 3. <input type"date">、<input type"time"> 和 <input type"datet…

求解方程sympy.solve

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 求解方程 sympy.solve [太阳]选择题 下列代码最后一次输出的结果是&#xff1f; import sympy x sympy.symbols(x) y x**2 2*x - 3 print("【执行】sympy.solve(y, x)") print(s…

TIA博途中打开全局库al文件以及压缩库zal文件的具体方法示例

TIA博途中打开全局库al文件以及压缩库zal文件的具体方法示例 本例中所有的库文件均以博途V15软件为例进行说明,其他版本的博途软件可能稍有区别,但总体相同。 如下图所示,打开博途软件后,在右侧的“库”—全局库,点击打开图标, 如下图所示,此时在弹出的窗口中找到后缀名…

华为OD机试 - 执行时长 - 回溯(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路1、大概意思就是&#xff1a;2、比如&#xff1a; 五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff…