📝个人主页🌹: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
(yi∈Y) 是使用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(yl∣p,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}HTHj∥H∥2∥Hj∥2)
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)∣j∈I}
为了高效实现相似示例的感知,所有的多模态融合特征可以提前计算并存储。
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(y∣T,Z)=∏i=1nψ(yi−1,yi,hi)∑y′∈Y∏i=1nψ(yi−1′,yi′,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∗的输入序列的损失函数:
L
NLL
(
θ
)
=
−
log
P
θ
(
y
∗
∣
T
,
Z
)
L_{\text{NLL}}(\theta) = -\log P_\theta(y^* \mid T, Z)
LNLL(θ)=−logPθ(y∗∣T,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:
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 |
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. 运行过程
-
训练过程
-
最终结果
编程未来,从这里启航!解锁无限创意,让每一行代码都成为你通往成功的阶梯,帮助更多人欣赏与学习!
更多内容详见:这里