ChatGPT多模态命名实体识别
多模态命名实体识别(MNER)最近引起了广泛关注。 用户在社交媒体上生成大量非结构化内容,主要由图像和文本组成。这些帖子具有与社交媒体相关的固有特征,包括简洁和非正式的写作风格。 这些独特的特征对传统的命名实体识别(NER)方法提出了挑战。
在本文中,我提出了一个两阶段框架,旨在利用 ChatGPT 作为隐式知识库,并使其能够启发式生成辅助知识,以实现更有效的实体预测。 具体来说,其中包含一个多模态相似示例感知模块,该模块从少量预定义的人工样本中选择合适的示例。 然后将这些示例集成到适合 MNER 的格式化提示模板中,并指导 ChatGPT 生成辅助细化知识。 最后,将获得的知识与原始文本集成并输入下游模型以进行进一步处理。
本文所涉及所有资源均在传知代码平台可获取。
文章目录
- 一、研究背景
- 二、模型结构和代码
- 任务流程
- 第一阶段:辅助精炼知识启发式生成
- 1. 预定义的人工样本
- 2. 多模态相似示例感知模块
- 3. 启发式增强提示生成
- 第二阶段:基于辅助精炼知识的实体预测
- 三、数据集介绍
- 四、性能展示
- 1. Twitter-2015:
- 2. Twitter-2017:
- 六、实现过程
- 环境要求
- 2. 我们的项目基于 AdaSeq,AdaSeq 项目基于 Python 版本 >= 3.7 和 PyTorch 版本 >= 1.8。
- 3. 下载
- 4. 将我们的附件文件夹复制到 adaseq/examples/
- 5. 用我们的adaseq文件夹替换原来的adaseq文件夹
- 6. 训练模型
- 七、运行过程
- 2.最终结果 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/736dadf40ee34694a79b5048b0fe4677.png)
一、研究背景
社交媒体上的多模态命名实体识别(MNER)旨在通过结合基于图像的线索来增强文本实体预测。 现有的研究主要集中在最大限度地利用相关图像信息或结合显式知识库中的外部知识。 然而,这些方法要么忽视了为模型提供外部知识的必要性,要么遇到检索知识冗余度高的问题。
二、模型结构和代码
我的模型主要分为两个阶段。在生成辅助细化知识的阶段,我利用一组有限的预定义人工样本,并采用多模态相似示例感知模块来仔细选择相关实例。然后,将这些选定的示例合并到格式正确的提示中,从而增强为 ChatGPT 提供的启发式指导,以获取精炼的知识。 在基于辅助知识的实体预测阶段,将原始文本与ChatGPT生成的知识信息相结合。然后,将此级联输入输入基于转换器的编码器以生成token表示。最后,将表示输入线性链条件随机场层,以预测原始文本序列的概率分布。
任务流程
1.任务公式化
将MNER任务视为一个序列标注任务。给定一个包含n个词元的句子 T = t 1 , … , t n T = t_1, \ldots, 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 yi∈Y是使用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 h、C、x、y均为文本序列,目标 y = y 1 , ⋅ ⋅ ⋅ , y L y=y_1,⋅⋅⋅,y_L y=y1,⋅⋅⋅,yL是长度为 L L L的文本序列。在每一步解码过程中,我们有:
y l = arg max y l p L L M ( y l ∣ p , y < l ) y_l = \arg \max_{y_l} p_{LLM} \left( y_l \mid p, y_{<l} \right) yl=argylmaxpLLM(yl∣p,y<l)
其中,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 i x_i xi设计为以下模板:
其中,t、p和q代表特定的测试输入。\n
表示模板中的换行符。同样,每个上下文示例 c i c_i ci的定义也遵循以下类似模板:
其中, t i t_i ti、 p i p_i pi、 q q q 和 a i a_i ai 指的是从预定义的人工样本中检索的文本-图像问题-答案四元组。MNEN的完整提示模板由固定提示示头,一些上下文示例和测试输入组成,被发送到ChatGPT以进行辅助知识生成。
第一阶段:辅助精炼知识启发式生成
1. 预定义的人工样本
使ChatGPT在MNEN任务中表现更好的关键在于选择合适的上下文示例。获取准确标注的上下文示例,这些示例能够捕获因联想推理的示本风格并提供扩展辅助知识的途径,是一个显著的挑战。直接从原始数据集中获取这些示例并不可行。为了解决这个问题,我采取了随机抽样的办法。为训练集选择一个小部分样本进行人工标注。具体来说,对于Flickr30k-2017数据集,从训练集中随机抽取200个样本进行人工标注,而对于Twitter-2015数据集,数量为120。标注过程包括两个重要部分。第一部分是识别句子中的命名实体,第二部分是结合考量图像和文本内容以及相关语境,为提供合理的图像描述。在标注过程中遇到的多种情况中,标注者需要给出与文本语义准确匹配的解释来补全。对于图像和文本相关的样本,我们通过查说明图像中事物的主要和次要实体类别,对图片给予文本补充。在这个标记方法过程中,强调了句子结构对于主图像和文本关系的影响引入了结构化的答案选择,以增强这些样例的价值。这个细致的标注过程旨在为ChatGPT提供了指导,使得生成高质量的生成有信仰的灵活性。
2. 多模态相似示例感知模块
由于GPT的少样本学习能力在很大程度上取决于上下文示例的选择,我设计了多模态相似示例感知(MSEA)模块来选择合适的上下文示例。作为一个经典的多模态任务,MNEN的预测依赖于文本和视觉信息的整合。因此,我们将文本和图像的融合特征作为评估相似示例的基本标准。而这种多模态融合特征可以从之前的多模态命名实体识别(MNER)模型中获得。将MNER数据集D和预定义的人工样本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训练的基础MNER模型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^T H_j}{||H||_2 ||H_j||_2} I=argTopNj=1,2,...,n∣∣H∣∣2∣∣Hj∣∣2HTHj
I I I 是 G G G 中前 N N N 个相似样本的索引集。上下文示例定义如下:
C = ( t j , p j , y j ) ∣ j ∈ I C = (t_j, p_j, y_j) | j \in I C=(tj,pj,yj)∣j∈I
为了高效实现相似示例的感知,所有的多模态融合特征可以提前计算并存储。
3. 启发式增强提示生成
在获得上下文示例 C C 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 , ⋯ , z m } Z = \{z_1, \cdots, z_m\} Z={z1,⋯,zm},其中 m m m 是 Z Z Z 的长度。将原始文本 T = { t 1 , ⋯ , t n } T = \{t_1, \cdots, t_n\} T={t1,⋯,tn} 与获得的辅助精炼知识 Z Z Z 拼接为 [ T ; Z ] [T; Z] [T;Z],并将其输入基于 Transformer 的编码器:
h 1 , ⋯ , h n , ⋯ , h n + m = e m b e d ( [ T ; Z ] ) h_1, \cdots, h_n, \cdots, h_{n+m} = 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 包含了来自辅助知识的相关线索。与之前的研究类似,将 H H H 输入标准的线性链条件随机场层,定义给定输入句子的标签序列 y ∣ g y|g y∣g 的概率为:
P ( y ∣ T , Z ) = ∏ i = 1 n ψ ( y i , y i − 1 , 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, y_{i-1}, h_i)}{\sum_{y \in Y} \prod_{i=1}^{n} \psi(y_i-1, y_i, h_i)} P(y∣T,Z)=∑y∈Y∏i=1nψ(yi−1,yi,hi)∏i=1nψ(yi,yi−1,hi)
其中, ψ ( y i − 1 , y i , h i ) \psi(y_{i-1}, y_i, h_i) ψ(yi−1,yi,hi) 和 ψ ( y i − 1 ′ , y i ′ , h i ) \psi(y'_{i-1}, y'_i, h_i) ψ(yi−1′,yi′,hi) 是势函数。最后,使用负对数似然作为带有真实标签 y ∗ y^* y∗ 的输出序列的损失函数:
L N L L ( θ ) = − log P θ ( y ∗ ∣ T , Z ) L_{NLL}(\theta) = -\log P_\theta(y^* | T, Z) LNLL(θ)=−logPθ(y∗∣T,Z)
三、数据集介绍
我们在两个公共 MNER 数据集上进行了实验:Twitter-2015 和 Twitter-2017。这两个数据集都是从 Twitter 平台上收集的,包含了文本和图像的配对信息,主要用于研究在社交媒体短文本场景下的多模态命名实体识别和情感分析等任务。
-
Twitter-2015:推文中的文本部分被手动标注了命名实体,并使用 BIO2(Beginning-Inside-Outside)标注方案对命名实体进行分类。实体类别包括人物(Person)、组织(Organization)、地点(Location)等。3373/723/723 (train/development/test)
-
Twitter-2017:相比于 Twitter-2015,Twitter-2017 数据集的规模更大,包含了更多的推文样本。Twitter-2017 不仅扩大了数据规模,还提高了标注的多样性和复杂性,推文中的命名实体更加丰富。此外,推文配对的图像信息在识别命名实体方面也具有重要作用,尤其是那些无法通过文本直接判断的实体。4000/1000/3257 (train/development/test)
四、性能展示
1. Twitter-2015:
Model | Pre | Rec | F1 |
---|---|---|---|
UMT | 71.67 | 75.23 | 73.41 |
UMGF | 74.49 | 75.21 | 74.85 |
MNER-QG | 77.76 | 72.31 | 74.94 |
R-GCN | 73.95 | 76.18 | 75.00 |
CAT-MNER | 78.75 | 78.69 | 78.72 |
Proposed | 79.21 | 79.45 | 79.33 |
2. Twitter-2017:
Model | Pre | Rec | F1 |
---|---|---|---|
UMT | 85.28 | 85.34 | 85.31 |
UMGF | 86.54 | 84.50 | 85.51 |
MNER-QG | 88.57 | 85.96 | 87.25 |
R-GCN | 86.72 | 87.53 | 87.11 |
CAT-MNER | 90.27 | 90.67 | 90.47 |
Proposed | 90.86 | 92.01 | 91.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/release/modelscope/
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.最终结果
本文所涉及所有资源均在 【传知代码】获取。