BLEU和SPICE:机器翻译与图像描述的自动评估方法详解

BLEU和SPICE:机器翻译与图像描述的自动评估方法详解

在机器翻译和图像描述领域,评估模型性能是一个重要且复杂的问题。为了有效地评估机器生成的文本质量,我们需要一种自动、快速且可靠的方法。BLEU(Bilingual Evaluation Understudy)和SPICE(Semantic Propositional Image Caption Evaluation)是其中两种广泛使用的方法,本文将详细介绍它们的工作原理及其优缺点。

BLEU:机器翻译评估方法

1. BLEU的基本原理

BLEU是一种自动化的机器翻译评估方法,通过计算候选翻译(candidate)和参考翻译(reference)之间的n-gram匹配来评估翻译质量。n-gram是指将句子中相邻的n个单词组合在一起的方式,例如:

  • 1-gram:{it, is, a, nice, day, today}
  • 2-gram:{it is, is a, a nice, nice day, day today}
  • 3-gram:{it is a, is a nice, a nice day, nice day today}

2. n-gram相似度计算

候选翻译和参考翻译的n-gram匹配度通过以下方式计算:

假设候选句子为 “It is a nice day today”,参考句子为 “Today is a nice day”。我们可以得到以下匹配情况:

  • 1-gram相似度:{it, is, a, nice, day, today} vs {today, is, a, nice, day},匹配项为 {is, a, nice, day},相似度为 p1 = 5/6 = 0.83。
  • 2-gram相似度:{it is, is a, a nice, nice day, day today} vs {today is, is a, a nice, nice day},匹配项为 {is a, a nice, nice day},相似度为 p2 = 3/5 = 0.6。
  • 3-gram相似度:{it is a, is a nice, a nice day, nice day today} vs {today is a, is a nice, a nice day},匹配项为 {is a nice, a nice day},相似度为 p3 = 2/4 = 0.5。

3. 特殊情况处理

情况1:重复单词

对于候选句子 “the the the the” 和参考句子 “The cat is standing on the ground”。如果不加以限制,1-gram相似度 p1 会等于 1。为了解决这个问题,需要对单词计数进行截断,计数取候选句子和参考句子中的最小值。这样计算得到的 p1 = 1/4。

情况2:长度惩罚因子

候选句子 “a nice day” 和参考句子 “Today is a nice day” 的匹配度可能会因为句子长度较短而偏高。为了避免这种现象,BLEU 引入了长度惩罚因子(Brevity Penalty,BP)。计算公式如下:

B P = { 1 if  c > r e ( 1 − r / c ) if  c ≤ r BP = \begin{cases} 1 & \text{if } c > r \\ e^{(1 - r/c)} & \text{if } c \leq r \end{cases} BP={1e(1r/c)if c>rif cr

其中,c 表示候选翻译的长度,r 表示参考翻译的长度。

4. BLEU最终公式

为了平衡各阶n-gram统计量的作用,通常取 N = 4,并对各阶统计量进行加权求和,权重 w n w_n wn 1 / n 1/n 1/n。BLEU最终计算公式如下:

B L E U = B P ⋅ exp ⁡ ( ∑ n = 1 N w n log ⁡ p n ) BLEU = BP \cdot \exp \left( \sum_{n=1}^{N} w_n \log p_n \right) BLEU=BPexp(n=1Nwnlogpn)

5. BLEU代码示例

以下是一个计算BLEU得分的Python代码示例:

from nltk.translate.bleu_score import sentence_bleu

reference = [['today', 'is', 'a', 'nice', 'day']]
candidate = ['it', 'is', 'a', 'nice', 'day', 'today']
score = sentence_bleu(reference, candidate)
print('BLEU score:', score)

SPICE:图像描述评估方法

1. SPICE的基本原理

BLEU在某些情况下表现不佳,例如“A shiny metal pot filled with some diced veggies.”和“The pan on the stove has chopped vegetables in it.”意思相近,但BLEU得分可能较低。为了弥补这一不足,SPICE通过比较语义命题内容(semantic propositional content)来提升图像描述的评估性能。

2. Scene Graphs

SPICE通过对比候选描述和参考描述的scene graphs来进行评估。scene graph 表征了对象(object)、对象的属性(attribute)以及对象之间的关系(relation)。如下图所示:

3. F-score计算

定义候选描述为c,参考描述集合为S={s1, s2, …, sn},G()表示scene graph,T()表示从scene graph中得到的logical tuples。例如,图1的logical tuple为:

{(girl), (court), (girl, young), (girl, standing), (court, tennis), (girl, on-top-of, court)}

定义精度P和召回R,SPICE的相似度计算如下:

P = ∣ T ( G ( c ) ) ∩ T ( G ( S ) ) ∣ ∣ T ( G ( c ) ) ∣ P = \frac{|T(G(c)) \cap T(G(S))|}{|T(G(c))|} P=T(G(c))T(G(c))T(G(S))
R = ∣ T ( G ( c ) ) ∩ T ( G ( S ) ) ∣ ∣ T ( G ( S ) ) ∣ R = \frac{|T(G(c)) \cap T(G(S))|}{|T(G(S))|} R=T(G(S))T(G(c))T(G(S))
F 1 = 2 P R P + R F1 = \frac{2PR}{P + R} F1=P+R2PR

其中 ( T x T ) (T x T) (TxT) 方法表示从两个scene graph中返回matching tuples,通过wordnet数据同义词查找得到。

4. SPICE代码示例

以下是一个计算SPICE得分的Python代码示例:

from spice import spice_score

reference = "The pan on the stove has chopped vegetables in it."
candidate = "A shiny metal pot filled with some diced veggies."
score = spice_score(reference, candidate)
print('SPICE score:', score)

参考文献

  • BLEU: a method for automatic evaluation of machine translation.
  • SPICE: Semantic Propositional Image Caption Evaluation.
  • Meteor Universal: Language Specific Translation Evaluation for Any Target Language.

总结

BLEU和SPICE是两种常用的自动评估方法,各有优缺点。BLEU通过计算n-gram匹配来评估翻译的流畅性和保真度,适用于机器翻译的自动评估。SPICE通过比较语义内容和scene graphs来提升图像描述的评估性能,更适合评估图像描述的语义一致性。选择适合的方法可以提高评估的准确性和有效性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AUTOSAR NvM模块(一)

NvMBlockDescriptor [ECUC_NVM_00061] 用于存储所有特定于块的配置参数的容器。对于每个非易失性随机存取存储器(NVRAM)块,应该指定这个容器的一个实例。 NvMBlockCrcType 定义了NVRAM块的CRC数据宽度。根据Autosar标准,此参数…

KVB外汇:澳元/美元、澳元/纽元、英镑/澳元的走势如何?

摘要 本文对近期澳元/美元、澳元/纽元、英镑/澳元的技术走势进行了详细分析。通过对关键支撑位和阻力位的分析,我们可以更好地理解澳元在不同货币对中的表现。随着全球经济形势的变化,各国央行的货币政策对外汇市场的影响也愈发明显。本文旨在帮助投资者…

观成科技:证券行业加密业务安全风险监测与防御技术研究

摘要:解决证券⾏业加密流量威胁问题、加密流量中的应⽤⻛险问题,对若⼲证券⾏业的实际流量内容进⾏调研分析, 分析了证券⾏业加密流量⾯临的合规性⻛险和加密协议及证书本⾝存在的⻛险、以及可能存在的外部加密流量威 胁,并提出防…

用GAN生成奖杯

数据集链接:https://pan.baidu.com/s/19Uxc2ELiMG3acUtLeSTDTA?pwdwsyw 提取码:wsyw 我设置的图片大小为128*128,如果内存爆炸可以将batch_size调小,epoch我设置的2000,我感觉其实1000也够了。代码如下: …

信创认证 | Smartbi Insight V11成功适配申威3231处理器

在信息技术飞速发展的浪潮中,软硬件的深度融合与协同发展已成为推动行业创新的关键因素。 近日,思迈特商业智能与数据分析软件[简称:Smartbi Insight]V11在统信服务器操作系统V20和中电科申泰信息科技有限公司产品申威3231处理器环境下完成适…

CAN和CANFD数据写入.asc文件的dll

因为工作需要,需要做一些硬件不是CANoe的上位机(比如说周立功CAN,NI-CAN),上位机需要有记录数据的功能,所以用Qt制作了一个记录数据的dll,方便重复使用(因为有的客户指定了编程软件,…

51循迹小车(蓝牙+循迹+超声波+舵机+避障L298N)

基本驱动 L298N电机驱动模块负责供电和控制电机驱动 将电池12V供电接到12V供电上,作为输入。单片机及其他器件供电可以使用5V供电,这里的GND都接到一起。 输出A和输出B接到电机上,负责给电机供电和控制电机。 通道A使能和通道B使能以及逻…

【Windows下使用vckpg下载protoc之后环境变量问题】

使用vcpkg进行下载的protoc: vcpkg install protobuf protobuf:x64-windows 检查protoc版本时出现问题: “protoc”不是内部或外部命令,也不是可运行程序或批处理文件 尝试添加系统环境变量后没有反应。 这个时候找到vckpg下的packages目录…

如何利用ChatGPT寻找科研创新点?分享5个有效实践技巧

欢迎关注:智写AI,为大家带来最酷最有效的智能AI学术科研写作攻略。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥交流:yida985 地表功能最强大的高级学术专业版已经开放,拥有全球领先的GPT学术科研应用,有兴趣…

鸿蒙开发设备管理:【@ohos.brightness (屏幕亮度)】

屏幕亮度 该模块提供屏幕亮度的设置接口。 说明: 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import brightness from ohos.brightness;brightness.setValue setValue(value: number):…

【Linux】网络编程套接字

一、预备知识 1.1 理解源IP地址和目的IP地址 在IP数据报的头部中,有两个IP地址,分别叫做源IP地址和目的IP地址。 源IP地址和目的IP地址是网络通信中常用的两个概念,他们代表了通信中的两个节点。 源IP地址是指发起通信的节点的IP地址&#…

在WSL Ubuntu中启用root用户的SSH服务

在 Ubuntu 中,默认情况下 root 用户是禁用 SSH 登录的,这是为了增加系统安全性。 一、修改配置 找到 PermitRootLogin 行:在文件中找到 PermitRootLogin 配置项。默认情况下,它通常被设置为 PermitRootLogin prohibit-password 或…

老生常谈问题之什么是缓存穿透、缓存击穿、缓存雪崩?举个例子你就彻底懂了!!

老生常谈问题之什么是缓存穿透、缓存击穿、缓存雪崩?举个例子你就彻底懂了!! 缓存穿透发生场景解决方案 缓存击穿解决方案 缓存雪崩发生场景解决方案 总结三者区分三者原因三者解决方案 想象一下,你开了一家便利店,店里…

FastAPI教程I

本文参考FastAPI教程https://fastapi.tiangolo.com/zh/tutorial 第一步 import uvicorn from fastapi import FastAPIapp FastAPI()app.get("/") async def root():return {"message": "Hello World"}if __name__ __main__:uvicorn.run(&quo…

从我邮毕业啦!!!

引言 时间过的好快,转眼间就要从北邮毕业了,距离上一次月度总结又过去了两个月,故作本次总结。 PS: https://github.com/WeiXiao-Hyy/blog整理了后端开发的知识网络,欢迎Star! 毕业🎓 6月1号完成了自己的…

Windows server 2016.2019 .NET Framework 3.5安装包、安装步骤

windows server2019 操作系统 安装 sqlserver2008时提示缺少 .NET Frameword 3.5, 在功能里选择 .NET Frameword 3.5安装报错, 下载安装包,下载地址 https://download.csdn.net/download/qq445829096/89450429这里指定备份源路径 安装包解…

多供应商食品零售商城系统的会员营销设计和实现

在多供应商食品零售商城系统中,会员营销是提升用户粘性和增加销售的重要手段。一个有效的会员营销系统能够帮助平台更好地了解用户需求,提供个性化服务,进而提高用户满意度和忠诚度。本文将详细探讨多供应商食品零售商城系统的会员营销设计与…

2毛钱不到的2A同步降压DCDC电压6V频率1.5MHz电感2.2uH封装SOT23-5芯片MT3520B

前言 2A,2.3V-6V输入,1.5MHz 同步降压转换器,批量价格约0.18元 MT3520B 封装SOT23-5 丝印AS20B5 特征 高效率:高达 96% 1.5MHz恒定频率操作 2A 输出电流 无需肖特基二极管 2.3V至6V输入电压范围 输出电压低至 0.6V PFM 模式可在…

MySQL进阶-索引-使用规则-索引失效情况一(索引列运算,字符串不加引号,头部模糊匹配)

文章目录 1、索引列运算1.1、查询表tb_user1.2、查看tb_user的索引1.3、查询 phone177999900151.4、执行计划 phone177999900151.5、查询 substring(phone,10,2) 151.6、执行计划 substring(phone,10,2) 15 2、字符串不加引号2.1、查询 phone177999900152.2、执行计划 phone177…

JAVA-矩阵置零

给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 思路: 找到0的位置,把0出现的数组的其他值夜置为0 需要额外空间方法: 1、定义两个布尔数组标记二维数组中行和列…