【论文复现】ChatGPT多模态命名实体识别

在这里插入图片描述

📝个人主页🌹:Eternity._
🌹🌹期待您的关注 🌹🌹

在这里插入图片描述
在这里插入图片描述

❀ChatGPT

  • ChatGPT辅助细化知识增强!
  • 1. 研究背景
  • 2. 模型结构和代码
  • 3. 任务流程
    • 第一阶段:辅助精炼知识启发式生成
    • 第二阶段:基于辅助精炼知识的实体预测
  • 4. 数据集介绍
  • 5. 性能展示
  • 6. 实现过程
  • 7. 运行过程

ChatGPT辅助细化知识增强!

在这里插入图片描述
多模态命名实体识别(MNER)技术近期备受瞩目。随着社交媒体上涌现出海量由图像与文本交织而成的非结构化内容,这些帖子展现出了社交媒体特有的属性,诸如言简意赅及不拘一格的表达方式。这些独特之处,无疑给传统的命名实体识别(NER)手段带来了前所未有的挑战。

在本文的探讨中,我构思了一个双阶段架构,其核心在于将ChatGPT作为隐性的知识宝库,并激发其潜力,以启发式的方式产生辅助性的知识,从而助力实体预测的精准度更上一层楼。具体而言,该架构中融入了一个多模态相似样例感知组件,该组件能够从预设的少量人工样本中精挑细选,筛选出恰当的样例。随后,这些样例将被巧妙地嵌入到专为MNER设计的格式化提示模板之中,进而引导ChatGPT生成更为精细的辅助知识。最终,这些宝贵的知识将与原始文本融合,一并输入至下游模型,进行更为深入的加工处理。

【注】 文章中所用到的数据集,都经过预处理的数据集文件(.txt),代码和数据集都放在了附件中,感兴趣的小伙伴可以进行下载,谢谢支持!

1. 研究背景


社交媒体平台上的多模态命名实体识别(MNER)任务,其核心在于借助图像信息来强化文本实体的预测能力。当前的研究焦点大多集中在如何最大限度地挖掘和利用与文本相关的图像数据,或是如何将外部知识库中的显式知识融入其中。然而,这些研究路径要么未能充分意识到为模型引入外部知识的重要性,要么在知识检索过程中遭遇了信息冗余的难题。

本文所涉及的所有资源的获取方式:这里

2. 模型结构和代码


我的模型设计包含两个核心阶段。在首个阶段,即辅助细化知识的生成过程中,我运用了一组精心挑选的预定义人工样本,并借助多模态相似示例感知模块来精准筛选相关性高的实例。随后,这些精心挑选的示例被巧妙地融入格式规范的提示中,以此强化给予ChatGPT的启发式信息,从而提炼出更为精确的知识。进入第二个阶段,即基于辅助知识的实体预测阶段,我将原始文本与ChatGPT所产出的知识信息加以整合。这一整合后的输入随后被送入基于转换器的编码器,以生成相应的token表示。最终,这些表示被进一步传递给线性链条件随机场层,用以预测原始文本序列的概率分布。

3. 任务流程


1. 任务公式化
将MNER任务视为一个序列标注任务。给定一个包含n个词元的句子
T= t 1 t_1 t1…, t n t_n tn及其对应的图像I,MNER的目标是定位并分类句中提到的命名实体,生成标签序列y= y 1 y_1 y1…, y n y_n yn,其中 ( y i ∈ Y (y_i \in Y (yiY) 是使用BIO2标注体系的预定义语义类别。

2. 上下文学习
GPT-3及其后续模型ChatGPT(以下简称GPT)是基于大量数据集预训练的自回归语言模型。在推理过程中,上下文少样本学习通过在冻结的GPT模型上执行文本序列生成任务的方式来完成新的下游任务。具体来说,给定一个测试输入x,其目标y基于格式化的提示p(h,C,x)作为条件进行预测,其中h指的是描述任务的提示头,C= c 1 c_1 c1…, c n c_n cn是n个上下文示例构成的上下文。所有的h、C、x、y均为文本序列,目标y= y 1 y_1 y1…, y L y_L yL,是长度为L的文本序列。在每一步解码过程中,我们有: y l = arg ⁡ max ⁡ y l p LLM ( y l ∣ p , y < l ) y_l = \arg\max_{y_l} p_{\text{LLM}}(y_l \mid p, y_{<l}) yl=argylmaxpLLM(ylp,y<l)

其中,LLM代表预训练的大型语言模型的权重,这些权重在新任务中是冻结的。每个上下文示例
c i c_i ci=( x i x_i xi, y i y_i yi)由任务的输入-目标对构成,这些示例可以手动构建或从训练集中采样。

虽然GPT-4可以接受多模态信息输入,但这一功能仅处于内部测试阶段,尚未公开使用。此外,与ChatGPT相比,GPT-4的成本更高,API请求速度较慢。为了提高可复现性,我们仍然选择ChatGPT作为主要的研究对象,并且提供的这一范式也可以用于GPT-4。

为了使ChatGPT能够完成图文多模态任务,使用了先进的多模态预训练模型将图像转换为图像说明。最后将测试输入x设计为以下模板:
在这里插入图片描述
其中,t、p和q 代表特定的测试输入。\n 表示模板中的换行符。同样,每个上下文示例
c i c_i ci的定义也遵循以下类似模板:
在这里插入图片描述
其中, t i ​ t_i​ ti​, p i ​ p_i​ pi,q, a i ​ a_i​ ai指的是从预定义的人工样本中检索的文本-图像问题-答案四元组。 MNER 的完整提示模板由固定提示头、一些上下文示例和测试输入组成,被馈送到 ChatGPT 以进行辅助知识生成。

第一阶段:辅助精炼知识启发式生成

人工精选的上下文样本
在提升ChatGPT于MNER任务中的效能方面,关键在于精心挑选恰当的上下文样本。获取那些准确标注且能精准体现数据集标注风格,并能为辅助知识扩展提供渠道的样本,是一项艰巨的任务。直接从原始数据集中筛选这些样本并不现实。为此,我采取了随机抽样的策略,从训练集中审慎地选取了一部分样本进行人工标注。针对Twitter-2017数据集,我随机抽取了200个训练样本进行细致标注;而对于Twitter-2015数据集,则标注了120个样本。标注流程包含两大环节:首先是识别句子内的命名实体,其次是结合图像、文本内容及相关知识,给出全面详尽的阐释。在标注实践中,标注者需从人类视角出发,准确判断并解析样本。对于图像与文本相关联的样本,我们明确指出图像突出了文本中的哪些实体;对于图像与文本无关的样本,则直接表明图像描述与文本内容无直接联系。这一精细的标注流程为ChatGPT提供了明确指引,助力其生成高度相关且富有价值的回应。

多模态相似样本智能筛选模块
鉴于GPT的少样本学习能力在很大程度上受上下文样本选择的影响,我研发了多模态相似样本智能筛选(MSEA)模块,旨在精准挑选适合的上下文样本。MNER作为一项典型的多模态任务,其预测精准度依赖于文本与视觉信息的深度融合。因此,我们将文本与图像的融合特征作为衡量样本相似性的基准。而这种多模态融合特征可源自前期的多模态命名实体识别(MNER)模型。在将MNER数据集D和预定义的人工样本G表示为:

D = { ( t i , p i , y i ) } i = 1 M D = \{(t_i, p_i, y_i)\}_{i=1}^M D={(ti,pi,yi)}i=1M

G = { ( t j , p j , y j ) } j = 1 M G = \{(t_j, p_j, y_j)\}_{j=1}^M G={(tj,pj,yj)}j=1M

其中, t j t_j tj, p j p_j pj, y j y_j yj,分别指代文本、图像和真实标签。基于D训练的基础MNER模型
M主要由骨干编码器 M b M_b Mb和CRF解码器 M c M_c Mc组成。输入的多模态图像-文本对通过编码器
M b M_b Mb编码,得到多模态融合特征H:
H = M b ( t , p ) H = M_b(t, p) H=Mb(t,p)

在以往的研究中,经过交叉注意力投射到高维潜在空间的融合特征H会直接输入到解码层,以进行结果预测。我们的模型选择H作为相似示例的判断依据,因为在高维潜在空间中相近的示例更有可能具有相同的映射方式和实体类型。计算测试输入与每个预定义人工样本的融合特征H的余弦相似度。然后,选择前N个相似的预定义人工样本作为上下文示例,以启发ChatGPT生成辅助的精炼知识:
( I = arg ⁡ max ⁡ j ∈ { 1 , 2 , . . . , N } ∥ H ∥ 2 ∥ H j ∥ 2 H T H j (I = \arg\max_{{j \in \{1, 2, ..., N\}}} \frac{\|H\|_2 \|H_j\|_2}{H^T H_j} (I=argmaxj{1,2,...,N}HTHjH2Hj2)

I 是G中前N个相似样本的索引集。上下文示例C定义如下:
C = { ( t j , p j , y j ) ∣ j ∈ I } C = \{(t_j, p_j, y_j) \mid j \in I\} C={(tj,pj,yj)jI}

为了高效实现相似示例的感知,所有的多模态融合特征可以提前计算并存储。

3. 启发式增强提示生成
在获得上下文示例C之后,构建了一个完整的启发式增强提示,以利用ChatGPT在MNER任务中的少样本学习能力。提示头、一组上下文示例和测试输入共同构成了一个完整的提示。提示头根据任务需求以自然语言描述MNER任务。鉴于输入的图像和文本不一定总是直接相关,鼓励ChatGPT发挥其自主判断力。上下文示例由MSEA模块的结果 C = c 1 , ⋯   , c n C = c_1, \cdots, c_n C=c1,,cn 构建。对于测试输入,答案部分留空,由ChatGPT生成。

第二阶段:基于辅助精炼知识的实体预测


定义经过上下文学习后由ChatGPT生成的辅助知识为Z = {z_1, ···, zm},其中m是Z的长度。将原始文本的长度。将原始文本T = {t_1, ···, t_n}与获得的辅助精炼知识Z拼接为与获得的辅助精炼知识Z拼接为[T; Z]$,并将其输入基于Transformer的编码器:
h 1 , ⋯   , h n , ⋯   , h n + m = embed ( [ T ; Z ] ) h_1, \cdots, h_n, \cdots, h_{n+m} = \text{embed}([T; Z]) h1,,hn,,hn+m=embed([T;Z])

由于Transformer编码器中使用的注意力机制,得到的词元表示 H = ( h 1 , ⋯   , h n ) H = (h_1, \cdots, h_n) H=(h1,,hn)包含了来自辅助知识Z的相关线索。与先前的研究类似,将H输入标准的线性链条件随机场层,定义给定输入句子T的标签序列y的概率为:

P ( y ∣ T , Z ) = ∑ y ′ ∈ Y ∏ i = 1 n ψ ( y i − 1 ′ , y i ′ , h i ) ∏ i = 1 n ψ ( y i − 1 , y i , h i ) P(y \mid T, Z) = \frac{\sum_{{y' \in Y}} \prod_{{i=1}}^{n} \psi(y'_{i-1}, y'_i, h_i)}{\prod_{{i=1}}^{n} \psi(y_{i-1}, y_i, h_i)} P(yT,Z)=i=1nψ(yi1,yi,hi)yYi=1nψ(yi1,yi,hi)

其中 ( ψ ( y i − 1 , y i , h i ) (\psi(y_{i-1}, y_i, h_i) (ψ(yi1,yi,hi))和 ( ψ ( y i − 1 ′ , y i ′ , h i ) (\psi(y'_{i-1}, y'_i, h_i) (ψ(yi1,yi,hi))是势函数。最后,使用负对数似然作为带有真实标签 y∗的输入序列的损失函数:
L NLL ( θ ) = − log ⁡ P θ ( y ∗ ∣ T , Z ) L_{\text{NLL}}(\theta) = -\log P_\theta(y^* \mid T, Z) LNLL(θ)=logPθ(yT,Z)

4. 数据集介绍


我们在两个公共 MNER 数据集上进行了实验:Twitter-2015和 Twitter-2017。这两个数据集都是从Twitter平台上收集的,包含了文本和图像的配对信息,主要用于研究在社交媒体短文本场景下的多模态命名实体识别和情感分析等任务。

1. Twitter-2015: 推文中的文本部分被手动标注了命名实体,并使用BIO2(Beginning- Inside-Outside)标注方案对命名实体进行分类。实体类别包括人物(Person)、组织(Organization)、地点(Location)等。3373/723/723(train/development/test)

2. Twitter-2017: 相比于Twitter-2015,Twitter-2017数据集的规模更大,包含了更多的推文样本。Twitter-2017不仅扩大了数据规模,还提高了标注的多样性和复杂性,推文中的命名实体更加丰富。此外,推文配对的图像信息在识别命名实体方面也具有重要作用,尤其是那些无法通过文本直接判断的实体。4000/1000/3257(train/development/test)

5. 性能展示


1. Twitter-2015:

ModelPreRecF1
UMT71.6775.2373.41
UMGF74.4975.2174.85
MNER-QG77.7672.3174.94
R-GCN73.9576.1875.00
CAT-MNER78.7578.6978.72
Proposed79.2179.4579.33

2. Twitter-2017:

ModelPreRecF1
UMT85.2885.3485.31
UMGF86.5484.5085.51
MNER-QG88.5785.9687.25
R-GCN86.7287.5387.11
CAT-MNER90.2790.6790.47
Proposed90.8692.0191.43

6. 实现过程


在下载附件并准备好数据集并调试代码后,进行下面的步骤,附件已经调通并修改,可直接正常运行;

1. 环境要求

python == 3.7
torch == 1.13.1
transformers == 4.30.2
modelscope == 1.7.1

2. 我们的项目基于AdaSeq, AdaSeq项目基于Python版本>= 3.7和PyTorch版本>= 1.8。

3. 下载

git clone https://github.com/modelscope/adaseq.git
cd adaseq
pip install -r requirements.txt -f https://modelscope.oss-cn-beijing.aliyuncs.com/releases/repo.html

4. 将我们的附件文件夹复制到/adaseq/examples/

-adaseq
---|examples
-----|ER
-------|twitter-15-txt.yaml
-------|twitter-17-txt.yaml

5. 用我们的adaseq文件夹替换原来的adaseq文件夹

-adaseq
---|.git
---|.github
---|adaseq   <-- (Use our adaseq replace it)  
---|docs
---|examples
---|scripts
---|tests
---|tools

6. 训练模型

	python -m scripts.train -c examples/ER/twitter-15.yaml
	python -m scripts.train -c examples/ER/twitter-17.yaml

7. 运行过程


  1. 训练过程
    在这里插入图片描述

  2. 最终结果
    在这里插入图片描述


编程未来,从这里启航!解锁无限创意,让每一行代码都成为你通往成功的阶梯,帮助更多人欣赏与学习!

更多内容详见:这里

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

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

相关文章

深度学习之循环神经网络(RNN)

1 为什么需要RNN&#xff1f; ​ 时间序列数据是指在不同时间点上收集到的数据&#xff0c;这类数据反映了某一事物、现象等随时间的变化状态或程度。一般的神经网络&#xff0c;在训练数据足够、算法模型优越的情况下&#xff0c;给定特定的x&#xff0c;就能得到期望y。其一…

【从零开始的LeetCode-算法】3238. 求出胜利玩家的数目

给你一个整数 n &#xff0c;表示在一个游戏中的玩家数目。同时给你一个二维整数数组 pick &#xff0c;其中 pick[i] [xi, yi] 表示玩家 xi 获得了一个颜色为 yi 的球。 如果玩家 i 获得的球中任何一种颜色球的数目 严格大于 i 个&#xff0c;那么我们说玩家 i 是胜利玩家。…

GIT的基本使用与进阶

GIT的简单入门 一.什么是git&#xff1f; Git 是一个开源的分布式版本控制系统&#xff0c;用于跟踪文件更改、管理代码版本以及协作开发。它主要由 Linus Torvalds 于 2005 年创建&#xff0c;最初是为 Linux 内核开发而设计的。如今&#xff0c;Git 已经成为现代软件开发中…

ReactPress:功能全面的开源发布平台

ReactPress Github项目地址&#xff1a;https://github.com/fecommunity/reactpress 欢迎Star。 此项目是用于构建博客网站的&#xff0c;包含前台展示、管理后台和后端。 此项目是基于 React antd NestJS NextJS MySQL 的&#xff0c;项目已经开源&#xff0c;项目地址在 …

C++初阶——vector

一、什么是vector vector是表示可变大小的数组的序列容器&#xff0c;就像数组一样&#xff0c;vector也采用连续空间来存储元素。也就是说它的访问和数组一样高效&#xff0c;但是它的大小是动态可变的&#xff0c;并且它的大小会被容器自动处理。 二、vector的构造 常用的构…

sql专题 之 where和join on

文章目录 前言where介绍使用过滤结果集关联两个表 连接外连接内连接自然连接 使用inner join和直接使用where关联两个表的区别总结 前言 从数据库查询数据时&#xff0c;一张表不足以查询到我们想要的数据&#xff0c;更多的时候我们需要联表查询。 联表查询我们一般会使用连接…

服务器数据恢复—分区结构被破坏的reiserfs文件系统数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器中有一组由4块SAS硬盘组建的RAID5阵列&#xff0c;上层安装linux操作系统统。分区结构&#xff1a;boot分区LVM卷swap分区&#xff08;按照顺序&#xff09;&#xff0c;LVM卷中划分了一个reiserfs文件系统作为根分区。 服务器故障…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于稳态信息和条件分布自适应的风电场阻抗智能辨识和稳定性评估》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

vue反向代理配置及宝塔配置

vue生产环境和开发环境 反向代理 正向代理 宝塔面板配置 本地小皮面板---NginxApache解决方案_小皮面板反向代理-CSDN博客 上面这个链接供大家参考&#xff0c;我这里面提取vue配置反向代理格式 在vite.config.js页面写入 server: {proxy: {"/api": {target: "…

【NOIP普及组】统计单词数

【NOIP普及组】统计单词数 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 一般的文本编辑器都有查找单词的功能&#xff0c;该功能可以快速定位特定单词在文章中的位置&#xff0c;有的还能统计出特定单词在文章中出现的次数。 现在&#x…

uni-app中使用 unicloud 云开发平台③

文章目录 六、hbuilderX 中使用 unicloud 云开发平台文档传统业务开发流程什么是 unicloudunicloud 优点开发流程uncloud 构成云数据库云存储及 CDN创建云函数工程七、unicloud api 操作云函数调用云函数实现云数据库基本增删改查1. 获取数据库引用云存储操作六、hbuilderX 中使…

STM32 极速入门第一天 点亮一个LED( 使用PlatformIO开发STM32单片机 ) 2024/11/11

什么是STM32? STM32是STMicroelectronics&#xff08;意法半导体&#xff09;推出的一系列基于ARM Cortex-M内核的32位Flash微控制器。它们因高性能、低功耗、易于编程和广泛的外设集成而广泛应用于各种嵌入式系统项目中。 使用设备: STM32F103C6T6 我的 keil 装的是 C51 所以…

微信小程序使用阿里巴巴矢量图标库正确姿势

1、打开官网&#xff1a;https://www.iconfont.cn/&#xff0c;把整理好的图标下载解压。 2、由于微信小程序不支持直接在wxss中引入.ttf/.woff/.woff2&#xff08;在开发工具生效&#xff0c;手机不生效&#xff09;。我们需要对下载的文件进一步处理。 eot&#xff1a;IE系列…

kafka面试题解答(四)

5、消费者组和分区数之间的关系是怎样的&#xff1f; 消费者组数小于等于分区数&#xff0c;消费者组内每个消费者负责消费不同分区的数据&#xff0c;一个分区只能由一个组内消费者消费。 6、kafka如何知道哪个消费者消费哪个分区&#xff1f; 生产者把数据发送给各个分区&…

Android Profiler 内存分析

Android studio&#xff08;下面简称AS&#xff09;为App提供的性能分析工具&#xff0c;在AS3.0替换掉旧的分析工具&#xff0c;对于其使用方法&#xff0c;官方也有对应的介绍&#xff1a;Android Profiler 对于使用方法&#xff0c;我只用到比较简单的功能&#xff0c;高级的…

DXF-模型空间和图纸空间、图层冷冻标志位

‌DXF文件中操作环境的标志码是组代码67 CAD-模型空间和图纸空间-是CAD中两种不同的操作环境 模型空间主要用于建模&#xff0c;是一个没有界限的三维空间&#xff0c;用户在这个空间中以任意尺寸绘制图形&#xff0c;通常按照1&#xff1a;1的比例&#xff0c;以实际尺寸绘制…

前端开发调试之 PC 端调试

以下内容来自稀土掘金青训营课程 bug 与 debug 点击.cls开启动态修改元素的class输入字符串可以动态的给元素添加类名勾选/取消类名可以动态的查看类名生效效果点击具体的样式值&#xff08;字号、颜色、宽度高度等&#xff09;可以进行编辑&#xff0c;浏览器内容区域实时预览…

Spring Boot集成SQL Server快速入门Demo

1.什么是SQL Server&#xff1f; SQL Server是由Microsoft开发和推广的以客户/服务器&#xff08;c/s&#xff09;模式访问、使用Transact-SQL语言的关系数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同开发的&…

Self-RAG讲解

Self-RAG Self-RAG 概述 Self-RAG&#xff08;Self-Reflective Retrieval-Augmented Generation&#xff09;是一种增强型的RAG&#xff08;检索增强生成&#xff09;策略&#xff0c;结合了自我反思和自我评分机制&#xff0c;以提高检索文档和生成内容的质量。通过对检索到…

设计一致性的关键:掌握 Axure 母版使用技巧

设计一致性的关键&#xff1a;掌握 Axure 母版使用技巧 前言 在快节奏的产品开发周期中&#xff0c;设计师们一直在寻找能够提升工作效率和保持设计一致性的方法。 Axure RP&#xff0c;作为一款强大的原型设计工具&#xff0c;其母版功能为设计师们提供了一个强大的解决方案…