传知代码-ChatGPT多模态命名实体识别

代码以及视频讲解

本文所涉及所有资源均在传知代码平台可获取

ChatGPT辅助细化知识增强!

在这里插入图片描述

多模态命名实体识别(MNER)最近引起了广泛关注。 用户在社交媒体上生成大量非结构化内容,主要由图像和文本组成。这些帖子具有与社交媒体相关的固有特征,包括简洁和非正式的写作风格。 这些独特的特征对传统的命名实体识别(NER)方法提出了挑战。

在本文中,我提出了一个两阶段框架,旨在利用 ChatGPT 作为隐式知识库,并使其能够启发式生成辅助知识,以实现更有效的实体预测。 具体来说,其中包含一个多模态相似示例感知模块,该模块从少量预定义的人工样本中选择合适的示例。 然后将这些示例集成到适合 MNER 的格式化提示模板中,并指导 ChatGPT 生成辅助细化知识。 最后,将获得的知识与原始文本集成并输入下游模型以进行进一步处理。

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

一、研究背景

社交媒体上的多模态命名实体识别(MNER)旨在通过结合基于图像的线索来增强文本实体预测。 现有的研究主要集中在最大限度地利用相关图像信息或结合显式知识库中的外部知识。 然而,这些方法要么忽视了为模型提供外部知识的必要性,要么遇到检索知识冗余度高的问题。

二、模型结构和代码

我的模型主要分为两个阶段。在生成辅助细化知识的阶段,我利用一组有限的预定义人工样本,并采用多模态相似示例感知模块来仔细选择相关实例。然后,将这些选定的示例合并到格式正确的提示中,从而增强为 ChatGPT 提供的启发式指导,以获取精炼的知识。 在基于辅助知识的实体预测阶段,将原始文本与ChatGPT生成的知识信息相结合。然后,将此级联输入输入基于转换器的编码器以生成token表示。最后,将表示输入线性链条件随机场层,以预测原始文本序列的概率分布。

任务流程

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

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

y l = arg max ⁡ y l p L L M ( y l ∣ p , y < l ) y_l = \argmax_{y_l} p_{LLM}(y_l | p, y_{<l}) yl=ylargmaxpLLM(ylp,y<l)

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

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

为了使ChatGPT能够完成图文多模态任务,使用了先进的多模态预训练模型将图像转换为图像说明。最后将测试输入x设计为以下模板:
在这里插入图片描述

其中, t t t p p p q q q 代表特定的测试输入。KaTeX parse error: Undefined control sequence: \n at position 2: `\̲n̲` 表示模板中的换行符。同样,每个上下文示例 c i c_i ci的定义也遵循以下类似模板:
在这里插入图片描述

其中 t i t_i ti p i p_i pi q q q a i a_i ai 指的是从预定义的人工样本中检索的文本-图像问题-答案四元组。 MNER 的完整提示模板由固定提示头、一些上下文示例和测试输入组成,被馈送到 ChatGPT 以进行辅助知识生成。

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

1. 预定义的人工样本
使ChatGPT在MNER任务中表现更好的关键在于选择合适的上下文示例。获取准确标注的上下文示例,这些示例能够精确反映数据集的标注风格并提供扩展辅助知识的途径,是一个显著的挑战。直接从原始数据集中获取这些示例并不可行。为了解决这个问题,我采用了随机抽样的方法,从训练集中选择一小部分样本进行人工标注。具体来说,对于Twitter-2017数据集,从训练集中随机抽取200个样本进行人工标注,而对于Twitter-2015数据集,数量为120。标注过程包括两个主要部分。第一部分是识别句子中的命名实体,第二部分是综合考虑图像和文本内容以及相关知识,提供全面的理由说明。在标注过程中遇到的多种情况中,标注者需要从人类的角度正确判断并解释样本。对于图像和文本相关的样本,我们直接说明图像中强调了文本中的哪些实体。对于图像和文本无关的样本,我们直接声明图像描述与文本无关。通过人工标注过程,强调了句子中的实体及其对应的类别。此外,引入了相关的辅助知识来支持这些判断。这个细致的标注过程为ChatGPT提供了指导,使其能够生成高度相关且有价值的回答。

2. 多模态相似示例感知模块
由于GPT的少样本学习能力在很大程度上取决于上下文示例的选择,我设计了多模态相似示例感知(MSEA)模块来选择合适的上下文示例。作为一个经典的多模态任务,MNER的预测依赖于文本和视觉信息的整合。因此,我们将文本和图像的融合特征作为评估相似示例的基本标准。而这种多模态融合特征可以从之前的多模态命名实体识别(MNER)模型中获得。将MNER数据集D和预定义的人工样本 G G G表示为:
D = ( t i , p i , y i ) M i = 1 D = {(t_i, p_i, y_i)}M i=1 D=(ti,pi,yi)Mi=1
G = ( t j , p j , y j ) N j = 1 G = {(t_j, p_j, y_j)}N j=1 G=(tj,pj,yj)Nj=1
其中, t i t_i ti, p i p_i pi, y i y_i yi分别指代文本、图像和真实标签。基于 D D D训练的基础MNER模型 M M M主要由骨干编码器 M b M_b Mb C R F CRF CRF解码器 M c M_c Mc组成。输入的多模态图像-文本对通过编码器 M b M_b Mb编码,得到多模态融合特征 H H H
H = M b ( t , p ) H = M_b(t, p) H=Mb(t,p)
在以往的研究中,经过交叉注意力投射到高维潜在空间的融合特征 H H H会直接输入到解码层,以进行结果预测。我们的模型选择 H H H作为相似示例的判断依据,因为在高维潜在空间中相近的示例更有可能具有相同的映射方式和实体类型。计算测试输入与每个预定义人工样本的融合特征 H H H的余弦相似度。然后,选择前N个相似的预定义人工样本作为上下文示例,以启发ChatGPT生成辅助的精炼知识:
I = a r g T o p N j ∈ 1 , 2 , . . . , N H T H j ∥ H ∥ 2 ∥ H j ∥ 2 I = argTopN_{j∈{1,2,...,N}} \frac{H^TH_j}{ ∥H∥_2∥H_j∥_2} I=argTopNj1,2,...,NH2Hj2HTHj
I I I G G G中前 N N N个相似样本的索引集。上下文示例C定义如下:
C = ( t j , p j , y j ) ∣ j ∈ I C = {(t_j, p_j, y_j) | j ∈ I} C=(tj,pj,yj)jI
为了高效实现相似示例的感知,所有的多模态融合特征可以提前计算并存储。

3. 启发式增强提示生成

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

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

定义经过上下文学习后由ChatGPT生成的辅助知识为KaTeX parse error: Expected '}', got 'EOF' at end of input: … = {z_1, ···, zm} ,其中 ,其中 ,其中m 是 是 Z 的长度。将原始文本 的长度。将原始文本 的长度。将原始文本T = {t_1, ···, t_n} 与获得的辅助精炼知识 Z 拼接为 与获得的辅助精炼知识Z拼接为 与获得的辅助精炼知识Z拼接为[T; Z]$,并将其输入基于Transformer的编码器:
h 1 , ⋅ ⋅ ⋅ , h n , ⋅ ⋅ ⋅ , h n + m = e m b e d ( [ T ; Z ] ) {h_1, ···, h_n, ···, h_{n+m}} = embed([T; Z]) h1,⋅⋅⋅,hn,⋅⋅⋅,hn+m=embed([T;Z])
由于Transformer编码器中使用的注意力机制,得到的词元表示 H = h 1 , ⋅ ⋅ ⋅ , h n H = {h_1, ···, h_n} H=h1,⋅⋅⋅,hn包含了来自辅助知识Z的相关线索。与先前的研究类似,将 H H H输入标准的线性链条件随机场层,定义给定输入句子 T T T的标签序列 y y y的概率为:
P ( y ∣ T , Z ) = ∏ i = 1 n ψ ( y i − 1 , y i , h i ) ∑ y ′ ∈ Y ∏ i = 1 n ψ ( y ′ i − 1 , y ′ i , h i ) P(y|T, Z) = \frac{\prod_{i=1}^{n} \psi(y_{i−1}, y_i, h_i)}{\sum_{y′∈Y} \prod_{i=1}^{n} \psi(y′_{i−1}, y′_i, h_i)} P(yT,Z)=yYi=1nψ(yi1,yi,hi)i=1nψ(yi1,yi,hi)
其中, ψ ( y i − 1 , y i , h i ) ψ(y_{i−1}, y_i, h_i) ψ(yi1,yi,hi)和$ψ(y′_{i−1}, y′_i, h_i)是势函数。最后,使用负对数似然作为带有真实标签 y ∗ y∗ y的输入序列的损失函数:
L N L L ( θ ) = − l o g P θ ( y ∗ ∣ T , Z ) L_{NLL}(θ) = −log Pθ(y∗|T, Z) LNLL(θ)=log(yT,Z)

三、数据集介绍

我们在两个公共 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)

三、性能展示

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

六、实现过程

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

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.yamlpython -m scripts.train -c examples/ER/twitter-17.yaml

七、运行过程

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

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

源码下载

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

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

相关文章

GISBox vs CesiumLab:哪款GIS工具更适合你的项目?

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;越来越多的用户开始关注GIS工具箱的选择&#xff0c;其中GISBox和CesiumLab是两款备受推崇的产品。那么&#xff0c;哪一款更适合你的需求呢&#xff1f;本文将从功能、使用体验和应用场景等方面&#xff0c;对GISBo…

产品如何实现3D展示?具体步骤如下

产品实现3D展示主要依赖于先进的3D建模与展示技术。以下是产品实现3D展示的具体步骤和方法&#xff1a; 一、3D建模 使用专业的3D建模软件&#xff0c;如Blender、Maya、3ds Max等&#xff0c;这些软件提供了丰富的建模工具和材质编辑器&#xff0c;能够创建出高精度的3D模型…

Python基于amazon/chronos-t5-base的预训练模型离线对时间系列数据的未来进行预测

Python基于预训练模型对时间系列数据的未来进行预测 导入库 %matplotlib inline import matplotlib.pyplot as plt import numpy as np import pandas as pd import torch from chronos import ChronosPipeline from tqdm.auto import tqdm from autogluon.timeseries import…

电脑定期运行某个程序

1、右键计算机-管理&#xff0c;点击任务计划程序&#xff0c;再点击创建基本任务&#xff1b; 2、写名称&#xff0c;下一步 3、选择任务开始计划&#xff0c;下一步 4、选择触发时间&#xff0c;下一步 5、选择启动程序&#xff0c;下一步 6、选择运行的程序&#xff0c;下一…

模型拆解(一):DBINet、GCPANet、CPD、ACCoNet、FPS-U2Net

文章目录 一、DBINet1.1编码器模块&#xff1a;ResNet50PVT双分支结构1.2解码器模块&#xff1a;自细化模块SR的应用1.3DFM&#xff1a;双分支融合模块1.4转换器模块&#xff1a;调整编码器输出至解码器中1.5深度监督损失函数 二、GCPANet2.1编码器模块&#xff1a;ResNet50主干…

uniapp移动端优惠券! 附源码!!!!

本文为常见的移动端uniapp优惠券&#xff0c;共有6种优惠券样式&#xff08;参考了常见的优惠券&#xff09;&#xff0c;文本内容仅为示例&#xff0c;您可在此基础上调整为你想要的文本 预览效果 通过模拟数据&#xff0c;实现点击使用优惠券让其变为灰色的效果&#xff08;模…

来自骨关节炎计划的膝关节MR图像的自动异常感知3D骨骼和软骨分割|文献速递-基于生成模型的数据增强与疾病监测应用

Title 题目 Automated anomaly-aware 3D segmentation of bones and cartilages in kneeMR images from the Osteoarthritis Initiative 来自骨关节炎计划的膝关节MR图像的自动异常感知3D骨骼和软骨分割 Background 背景 近年来&#xff0c;多个机器学习算法被提出用于图像…

windows|常见的文件伪装方法

几种常见的文件伪装方法&#xff1a; 扩展名伪装unicode字符伪装压缩包伪装隐写术 方法仅限于学习目的&#xff0c;不用于任何恶意或非法用途。 ———— 一、扩展名伪装&#xff1a;假装是另一种类型的文件 修改文件的扩展名&#xff0c;使得文件看起来像其他类型的文件&a…

python常用设计模式,单例模式和工厂设计模式

python常用设计模式&#xff0c;单例和工厂设计模式Demo 单例模式 单例设计模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例。 应用场景&#xff1a;日志记录、线程池、缓存等 优点&#xff1a; 全局访问&…

洛谷题解 - P1162 填涂颜色

目录 填涂颜色题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 提示题解思路代码 填涂颜色 题目描述 由数字 0 0 0 组成的方阵中&#xff0c;有一任意形状的由数字 1 1 1 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 2 2 2。例如&#xff1a; 6 6 6\times…

python的散列类型与字符编码

文章目录 一、 初识散列类型(无序序列)二、认识集合集合的方法增删 二、认识字典字典方法增删改查 声明空变量 三、字符编码元组名() #声明一个空元组 一、 初识散列类型(无序序列) 数据类型分为3种: python的序列类型有好几种&#xff0c;之前的博文讲到了两种类型 1.数值类型…

Appium中的api(一)

目录 1.基础python代码准备 1--参数的一些说明 2--python内所要编写的代码 解释 2.如何获取包名和界面名 1-api 2-完整代码 代码解释 3.如何关闭驱动连接 4.安装卸载app 1--卸载 2--安装 5.判断app是否安装 6.将应用放到后台在切换为前台的时间 7.UIAutomatorViewer的使用 1--找…

Oracle CONNECT BY、PRIOR和START WITH关键字详解

Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中&#xff0c;CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据&#xff0c;例如…

5、JavaScript(四) ajax+js高级+BOM

25.ajax : 前端向后端异步的取数据而无需刷新页面的技术 1 公司中的整体工作流程 1、项目开发的流程 每个职位该做的工作&#xff1a; 产品经理&#xff1a;提需求的 与客户沟通 画出原型图给程序员使用 UI设计师&#xff1a;美化 替换UI框架&#xff1a;antd element-ui e…

sql-labs靶场第十六关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①寻找注入方法 ②爆库&#xff0c;查看数据库名称 ③爆表&#xff0c;查看security库的所有表 ④爆列&#xff0c;查看users表的所有列 ⑤成功获取用户名…

学习--四元数介绍

2022年的草稿箱里的一篇 四元数由William Rowan Hamilton发现 定义与复数类似&#xff0c;有三个虚部 q a b i c j d k qabicjdk qabicjdk 其中 i 2 j 2 k 2 i j k − 1 i^2j^2k^2ijk-1 i2j2k2ijk−1 四元数的模长&#xff1a; 四维的长度 加减法&#xff1a; 对应分…

linux-牛刀小试

题目一&#xff1a; 1.第一问 首先创建用户tab在超级用户root的终端输入useradd tab 切换到tab用户&#xff1a; 推出重新登录到tab用户或者su – tab切换到tab用户 2.第二问 在桌面创建SHEGNCHAN目录 在SHENGCHAN文件夹下创建相应的文件&#xff1a; 3.第三问 首先&#…

笔记本使用虚拟机,使用Ubuntu打开摄像头

最近在搞ros相关的内容&#xff0c;亲测了一下虚拟机Ubuntu打开摄像头&#xff0c;也是需要简单的设置的。 只需要 简单设置这四步 目录 设置usb3.1打开摄像头查看摄像头显示摄像头内容 设置usb3.1 这一步是为了防止打开摄像头的时候&#xff0c;没有画面。 打开摄像头 选…

V4L2驱动框架

文章目录 一、V4L2简介二、v4l2驱动关键组件&#xff08;一&#xff09;video_device结构体v4l2操作方法结构体v4l2的ioctl操作方法结构体 &#xff08;二&#xff09;v4l2_device结构体 一、V4L2简介 V4L2&#xff0c;即Video for Linux two&#xff0c;是Linux内核中用于视频…

Linux Redis查询key与移除日常操作

维护老项目Express node 编写的后端程序、有这么一个方法、没有设置redis过期时间&#xff08;建议设置过期时间&#xff0c;毕竟登录生产服务器并不是每个人都有权限登录的&#xff01;&#xff01;&#xff01;&#xff09;。如果变动只能通过登录生产服务器、手动修改… 于…