基于三阶段的小样本嵌套命名实体识别方法和系统

未命名 09-20 阅读:328 评论:0


1.本发明属于人工智能及自然语言处理的技术领域,主要涉及了一种基于三阶段的小样本嵌套命名实体识别方法和系统。


背景技术:

2.近年来,随着人工智能技术的不断发展,自然语言处理技术在许多领域得到了广泛的应用,尤其是在文本信息处理领域中,自然语言处理技术的应用越来越受到重视。其中,命名实体识别(named entity recognition,简称ner)是自然语言处理领域中的一个重要任务,旨在从文本中自动识别出具有特定意义的实体,并将其分类到预定义的类别中,如人名、地名、组织机构名、日期、货币等。在实际应用中,ner技术在信息抽取、智能问答、机器翻译等领域具有广泛的应用前景。然而,在实际应用中,命名实体之间常常是嵌套的。例如,“北京大学”这个实体中,还包括“北京”这个实体。前者的实体类型为“学校名”,后者的实体类型为“地名”。
3.嵌套ner面临着许多挑战,其中之一是数据稀缺性。针对这一问题,由于标注数据的获取成本高昂,使得训练数据数量有限,因此如何在有限的标注数据上构建高效的ner模型成为了研究者们关注的重点。针对这一问题,研究者们提出了少样本学习(few-shot learning)的方法,通过在少量标注数据上进行训练,实现在大规模未标注数据上进行准确的实体识别。但是,目前的少样本ner方法在实际应用中还存在一些问题,如模型复杂度高、模型鲁棒性不足等,需要进一步优化和改进。更重的是,目前的少样本ner方法鲜少关注嵌套ner场景,需要进一步探索小样本ner方法在嵌套ner场景下的适用性。


技术实现要素:

4.本发明正是针对现有技术中小样本ner方法在嵌套ner场景下适用性不佳的问题,提供一种基于三阶段的小样本嵌套命名实体识别方法和系统,首先根据原始嵌套ner数据集采样,保证每种类别采样得到的实体数量一致,初步构建嵌套ner小样本数据集;再从原始嵌套ner数据集的训练集、验证集以及测试集中分别采样k个实体实例,得到嵌套ner小样本训练数据集、验证集以及测试集;再构建嵌套ner模型,分别构建实体定位子模型、实体抽取子模型以及实体分类子模型,捕捉内层实体和外层实体的嵌套关系,构建特殊的软提示模板;最后训练嵌套ner模型,更好的支持小样本场景下的模型训练。
5.为了实现上述目的,本发明采取的技术方案是:基于三阶段的小样本嵌套命名实体识别方法,主要包括如下步骤:
6.s1,采样嵌套ner小样本数据集:根据原始嵌套ner数据集采样,保证每种类别采样得到的实体数量一致,初步构建嵌套ner小样本数据集;
7.s2,构建嵌套ner小样本数据集:从原始嵌套ner数据集的训练集、验证集以及测试集中分别采样k个实体实例,得到嵌套ner小样本训练数据集、验证集以及测试集;
8.s3,构建嵌套ner模型:分别构建实体定位子模型、实体抽取子模型以及实体分类
子模型,捕捉内层实体和外层实体的嵌套关系,构建特殊的软提示模板;
9.s4,训练嵌套ner模型:用于构建损失函数,构建优化函数。
10.作为本发明的一种改进,所述步骤s1中,初始化每种类别的实体数量,通过遍历原始嵌套ner数据集,对每个句子中的每种类别的实体数量计数,保留满足满足k-shot规则的句子组,采样得到嵌套ner小样本数据集。
11.作为本发明的一种改进,所述步骤s3中,嵌套ner模型实体定位子模型构建步骤具体为:
12.输入层从输入样本词典的“tokens”项获取,将其形式化为:x={x1,...,xn};
13.bert的输入由三部分组成:词嵌入(token embedding)、片段嵌入(segment embedding)、位置嵌入(position embedding);将这三个向量相加即可得到句子中每个词的输入向量,将句子中每个词的输入向量组合成矩阵,即句子的输入;bert的输入进行若干次多头注意力机制(multi-head attention)、层归一化(layer_norm)以及前馈网络层之后得到输出;
14.e=bert(x)
15.其中,再将获得的表示与h
[cls]
连接,即可得到句子中每个词的输入向量:
[0016][0017]
之后将输入多层感知机并进行归一化,获得每个词是否属于实体的概率;最后通过argmax操作获得每个词是否属于实体的结果;
[0018][0019][0020]
其中,采用io标注法,o-tag表示改词不属于实体的一部分。
[0021]
作为本发明的一种改进,所述步骤s3中,嵌套ner模型实体抽取子模型构建步骤具体为:
[0022]
使用bert进行编码的到相应的文本表示e;将实体集中部分x
rk
={x
l
,...,xr}定义为被判定为i-tag的最长连续实体序列,其中χ
l
表示实体集中部分的左边界,xr表示实体集中部分的右边界,通过平均池化获得x
rk
的整体表示;
[0023][0024]
将获得的表示与h
[cls]
连接,即可得到句子中每个词的边界判别向量;
[0025][0026]
再将分别输入两个独立的多层感知机并进行归一化,获得每个词是否属于实体的左边界或右边界的概率;
[0027][0028][0029]
之后,遍历实体集中部分x
rk
={x
l
,...,xr}中的所有跨度作为候选跨度si,分别利用每个候选跨度si的左右边界词的和通过点积运算计算跨度si为实体的概率:
[0030][0031]
最后通过对所有候选跨度si进行排序,对于有部分重叠的跨度,删除较低的跨度,最终获得经过过滤的候选实体跨度集合s=(s1,...,sf)。
[0032]
作为本发明的另一种改进,所述步骤s3中嵌套ner模型实体分类子模型的构建包括构建实体分类子模型的提示学习模块和构建实体分类子模型的对比学习模块;
[0033]
所述构建实体分类子模型的提示学习模块中,采用“全称(缩写)”格式构建提示学习模板,针对候选实体跨度si,其模板提示学习模板构建形式化为:
[0034]
x
p
={x
part1
,[p1],si,[p2],[mask],[p3],x
part2
}
[0035]
其中,[pi]表示软提示模板;
[0036]
使用bert对提示学习模板进行编码得到相应的文本表示e,并从其中获取[mask]标记的表示h
[mask]
,将其通过多层感知机进行分类:
[0037][0038]
其中,y为实体类型的标签空间。
[0039]
作为本发明的另一种改进,所述构建实体分类子模型的对比学习模块中,加入损失函数拉近正样本对之间的举例:
[0040][0041]
作为本发明的又一种改进,所述步骤s4模型训练中的目标函数是所有子任务损失函数之和:
[0042][0043][0044][0045]
l=αl
focus
+βl
left
+γl
right
+μl
prompt
+σl
contrast
[0046]
其中,以及均为监督信号标签;α,β,γ,μ,σ均为超参数,用于平衡不同损失函数的数量级。
[0047]
为了实现上述目的,本发明还采取的技术方案是:基于三阶段的小样本嵌套命名实体识别系统,其特征在于,包括:嵌套ner数据集采样单元、嵌套ner小样本数据集构建单元、嵌套ner模型构建单元和嵌套ner模型训练单元,
[0048]
所述嵌套ner数据集采样单元:用于根据原始嵌套ner数据集采样,保证每种类别采样得到的实体数量基本一致,初步构建小样本嵌套ner数据集;
[0049]
所述嵌套ner小样本数据集构建单元:用于根据嵌套ner小样本数据集划分训练集、验证集以及测试集,构建嵌套ner小样本数据集;
[0050]
所述嵌套ner模型构建单元:用于分别构建实体定位子模型、实体抽取子模型以及实体跨度分类子模型,有效捕捉内层实体和外层实体的嵌套关系,构建软提示模板;
[0051]
所述嵌套ner模型训练单元:用于构建损失函数,构建优化函数。
[0052]
作为本发明的另一种改进,所述实体定位子模型中,其优化目标只包含实体定位部分的io标记子任务,使用bert进行编码得到相应的文本表示e,根据e获得每个词是否在实体中的概率再根据预测该词是否属于实体的一部分;
[0053]
所述实体抽取子模型中,其优化目标只包含实体抽取部分的实体判定子任务,使用bert进行编码得到相应的文本表示e,根据e获得候选跨度为实体的分数在根据预测该候选跨度是否是一个完整实体;
[0054]
所述实体分类子模型中,其优化目标包含实体分类子模型的提示学习子任务和实体分类子模型的对比学习子任务,构建软提示模板,再使用bert对提示学习模板进行编码得到相应的文本表示e,并从其中获取[mask]标记的表示h
[mask]
,将其通过多层感知机进行分类;同时辅助对比学习子任务,以进行预测。
[0055]
与现有技术相比,本发明具有的有益效果:
[0056]
(1)本发明采用阶段训练的方法能够有效地对自然语言问题进行建模,捕获相应的语义特征。
[0057]
(2)通过参数共享,能够分别实现实体定位以及实体抽取这两部分任务中子任务间的相关性约束。
[0058]
(3)本发明提出实体嵌套关系建模机制,能够有效挖掘并利用内外层嵌套命名实体之间的关系,以促进实体分类。
[0059]
(4)本发明提出使用io标记法先对实体集中部分定位,再进行实体抽取的两阶段方法,将直接进行嵌套实体抽取这一复杂任务拆解为两个较为简单的子任务,能够更好的支持小样本场景下的模型训练过程。
[0060]
(5)本发明定义并实现一套完整的小样本嵌套ner方法和系统。
附图说明
[0061]
图1为本发明方法的步骤流程图;
[0062]
图2为本发明方法步骤s1中采样嵌套ner数据集的流程图;
[0063]
图3为本发明方法步骤s2构建嵌套ner小样本数据集的流程图;
[0064]
图4为本发明方法步骤s3构建嵌套ner模型的流程图;
[0065]
图5为本发明步骤s4训练嵌套ner模型的流程图;
[0066]
图6为本发明系统的结构示意图。
具体实施方式
[0067]
下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
[0068]
实施例1
[0069]
一种基于三阶段的小样本嵌套命名实体识别方法,如图1所示,主要包括如下步骤:
[0070]
步骤s1,采样嵌套ner小样本数据集:根据原始嵌套ner数据集采样,保证每种类别采样得到的实体数量一致,初步构建嵌套ner小样本数据集;
[0071]
利用用户的查询问题,从原始嵌套ner数据集中采样,初步构建小样本嵌套ner数据集,如图2所示。
[0072]
k-shot是指在机器学习和深度学习中一种常见的样本划分方式。在k-shot学习中,将所有的样本划分为两个集合,一个是训练集,另一个是测试集。在训练集中,将每个类别的样本随机选择k个,组成一个小的子集,这个子集被称为k-shot集合。而测试集则包含除k-shot集合以外的所有样本。这种方法可以在少量的标注数据上进行模型训练和测试,从而在数据稀缺的情况下实现高效的学习和预测。k-shot方法常被用于few-shot learning和meta-learning等任务中,尤其在自然语言处理中的实体识别任务中,k-shot方法常常被用于解决实体识别数据稀缺的问题。特别地,与句子级别的少样本任务不同,在命名实体识别中,样本是指句子中的一个实体跨度。一个被取样的句子可能包含多个实体实例。
[0073]
针对k-shot采样场景,与句子级别的小样本任务不同,在嵌套ner中,样本是指句子中的一个实体跨度。一个被采样的句子可能包含多个实体实例。通过遍历原始嵌套ner数据集,对每个句子中的每种类别的实体实例计数,最终保留恰好满足所有类别实体实例均满足k-shot的句子组;若原始嵌套ner数据集遍历结束后,未发现满足条件的句子组,则直接缺省。通过对于原始嵌套ner数据集采样而得到的小样本嵌套ner数据集是满足k-shot场景的,并且能促进模型获得真实有效的结果。
[0074]
s2,构建嵌套ner小样本数据集:用于根据嵌套ner小样本数据集划分训练集、验证集以及测试集,构建嵌套ner小样本数据集;
[0075]
如图3所示,对于k-shot,从原始嵌套ner数据集的训练集、验证集以及测试集中分别采样k个实体实例,得到嵌套ner小样本训练数据集、验证集以及测试集。
[0076]
s3,构建嵌套ner模型:分别构建实体定位子模型、实体抽取子模型以及实体分类子模型,捕捉内层实体和外层实体的嵌套关系,构建特殊的软提示模板,具体如图4所示;
[0077]
3.1构建实体定位子模型
[0078]
输入层从输入样本词典的“tokens”项获取,将其形式化为:x={χ1,...,xn}。
[0079]
bert的全称为bidirectional encoder representation from transformers,是一个预训练的语言表征模型。它强调了不再像以往一样采用传统的单向语言模型或者把两个单向语言模型进行浅层拼接的方法进行预训练,而是采用新的masked language model
(mlm),以致能生成深度的双向语言表征。bert是本发明提出的小样本嵌套ner模型的基础,bert的输入由三部分组成:词嵌入(token embedding)、片段嵌入(segment embedding)、位置嵌入(position embedding)。将这三个向量相加即可得到句子中每个词的输入向量,将句子中每个词的输入向量组合成矩阵,就是句子的输入。bert的输入进行若干次多头注意力机制(multi-head attention)、层归一化(layer_norm)以及前馈网络层之后得到输出。
[0080]
e=bert(x)
[0081]
其中,再将获得的表示与h
[cls]
连接,即可得到句子中每个词的输入向量。
[0082][0083]
之后将输入多层感知机并进行归一化,获得每个词是否属于实体的概率。
[0084]
最后通过argmax操作获得每个词是否属于实体的结果。
[0085][0086][0087]
其中,采用io标注法,即i-tag表示改词属于实体的一部分,o-tag表示改词不属于实体的一部分。
[0088]
3.2构建实体抽取子模型
[0089]
使用bert进行编码的到相应的文本表示e。本发明将实体集中部分x
rk
={χ
l
,...,xr}定义为被判定为i-tag的最长连续实体序列。其中x
l
表示实体集中部分的左边界,xr表示实体集中部分的右边界。通过平均池化获得χ
rk
的整体表示。
[0090][0091]
将获得的表示与h
[cls]
连接,即可得到句子中每个词的边界判别向量。
[0092][0093]
再将分别输入两个独立的多层感知机并进行归一化,获得每个词是否属于实体的左边界或右边界的概率。
[0094][0095][0096]
之后,遍历实体集中部分χ
rk
={χ
l
,...,χr}中的所有跨度作为候选跨度si,分别利用每个候选跨度si的左右边界词的和通过点积运算计算跨度si为实体的概率。
[0097]
[0098]
最后通过对所有候选跨度si进行排序,对于有部分重叠的跨度,删除较低的跨度,以完成过滤。最终获得经过过滤的候选实体跨度集合s=(s1,...,sf)。
[0099]
3.3构建实体分类子模型的提示学习模块
[0100]
本发明设计了一种特殊的提示学习模板,即采用“全称(缩写)”格式构建提示学习模板。例如,“the open systems interconnection model(osi model)is a conceptual model...”中“the open systems interconnection model(osi model)”即采用此格式。针对候选实体跨度si,其模板提示学习模板构建形式化为。
[0101]
x
p
={x
part1
,[p1],si,[p2],[mask],[p3],x
part2
}
[0102]
其中,[pi]表示软提示模板。例如,要对“u.s.law allows state legislatures to choose representatives to the electoral college as a last resort.”中的“state”进行分类,则模板设计为“u.s.law allows[p1]state[p2][mask][p3]legislatures to choose representatives to the electoral college as a last resort.”。软提示模板的插入位置由候选实体跨度si的边界给出。
[0103]
使用bert对提示学习模板进行编码得到相应的文本表示e,并从其中获取[mask]标记的表示h
[mask]
,将其通过多层感知机进行分类。
[0104][0105]
其中,y为实体类型的标签空间。
[0106]
3.4构建实体分类子模型的对比学习模块
[0107]
本发明构建对比学习模块,以解决软提示模板插入原句所造成对内层实体和外层实体之间联系的截断的问题。同一句子中有多个候选实体跨度si,在不同位置插入软提示模板构成的句子互为正样本对。通过加入损失函数拉近正样本对之间的举例,以解决软提示模板插入原句所造成对内层实体和外层实体之间联系的截断的问题。
[0108][0109]
s4,训练嵌套ner模型:
[0110]
在步骤s2所得的训练集上对步骤s3构建的嵌套ner模型进行训练,如图5所示,用于构建损失函数,构建优化函数。
[0111]
4.1构建损失函数
[0112]
上述所有的子任务采用的都是分类模型,在模型训练的过程中,模型的目标函数就是所有子任务损失函数的总和,通过最小化这个总和的目标函数来进行参数更新。本发明采用分类模型中最常采用的交叉熵损失函数,公式如下:
[0113][0114]
其中n表示分类的类别数,yj表示第j类的标签值,取值为0或1,p(χj)表示第j类预测的概率值。上述公式中表达了一个分类模型的损失函数,本发明方法模型的整体目标函数l是所有子任务损失函数之和。
[0115][0116][0117][0118]
l=αl
focus
+βl
left
+γl
right
+μl
prompt
+σl
contrast
[0119]
其中,以及均为监督信号标签;α,β,γ,μ,σ均为超参数,用于平衡不同损失函数的数量级。
[0120]
4.2构建优化函数
[0121]
本发明使用的深度学习模型都是基于预训练模型bert加上任务特定的分类层微调(fine-tuning)训练所得的,在微调过程中为了避免破坏原预训练模型的表征能力,因此不需要训练太多周期,迭代次数设置为35次。各深度学习模型都是基于深度学习框架pytorch实现的,训练过程中设置的学习率为3e-5,批量大小(batch size)为8,优化器为adamw,正则化方法使用dropout来防止过拟合。
[0122]
本发明的模型在ace2004、ace2005、genia以及kbp2017数据集上取得了优于先进模型的结果,具体见表1至表4。
[0123]
表1:ace2004上的实验结果(指标为micro-f1).
[0124][0125][0126]
表2:ace2005上的实验结果(指标为micro-f1).
[0127]
methods5-shot10-shotlocateandlabel11.4325.13unifiedner8.7213.17see-few25.5836.36sdnet22.0332.20esd31.5738.81ourmodel(bert_base)37.7442.25
[0128]
表3:genia上的实验结果(指标为micro-f1).
[0129]
methods5-shot10-shotlocateandlabel15.5731.65unifiedner4.6810.62see-few19.3137.78sdnet17.4619.03esd25.0335.23ourmodel(bert_base)34.4344.95
[0130]
表4:kbp2017上的实验结果(指标为micro-f1).
[0131][0132][0133]
上表说明了本发明的模型和基线在ace2004、ace2005、genia和kbp2017上的性能。可以看到:
[0134]
1)本发明的模型始终大大优于所有基线。特别是在5-shot设置中,本发明的模型的f1分数在ace2004、ace2005、genia和kbp2017上分别比之前的模型高出+9.33%、+6.17%、+9.40%、+5.12%。
[0135]
2)对于完全监督的方法,locate and label和unified generative ner都表现不佳。特别是,unified generative ner作为一种基于生成的方法,在few-shot设置中表现更差。这些表明完全监督的方法在少样本ner中可能存在固有缺陷。
[0136]
3)对于few-shot方法,随着shot的上升,它们表现出有竞争力的性能,尤其是see-few和esd。see-few在10-shot设置下表现出竞争力,但在5-shot设置上的表现并不令人满意。原因可能是see-few中使用的nli任务在上下文利用方面存在局限性。esd也表现出良好的性能,我们将其归因于其在大规模语料库few-nerd和genia数据集的重要部分上的预训练。没有预训练的esd也进行了评估,其性能在四个数据集上下降了15%-25%。
[0137]
本发明的模型使用huggingfacetransformer 4.11.3和pytorch 1.7.1实现。对于genia数据集,我们将bert替换为biobert。在实验细节中,我们ace2004、ace200和kbp2017数据集使用bert-base-uncased,对genia数据集使用dmis-lab/biobert-base-cased-v1.212(两个模型大小:均在110m左右).软提示通过嵌入“,”、“(”和“)”来初始化。在一个单一nvidia 3090gpu 24gb显存上训练模型。
[0138]
实施例2
[0139]
一种基于三阶段的小样本嵌套命名实体识别系统,如图6所示,包括嵌套ner数据
集采样单元、嵌套ner小样本数据集构建单元、嵌套ner模型构建单元和嵌套ner模型训练单元,
[0140]
其中,嵌套ner数据集采样单元,用于根据原始嵌套ner数据集采样,保证每种类别采样得到的实体数量基本一致,初步构建小样本嵌套ner数据集;
[0141]
嵌套ner小样本数据集构建单元,用于根据嵌套ner小样本数据集划分训练集、验证集以及测试集,构建嵌套ner小样本数据集;
[0142]
嵌套ner模型构建单元,用于分别构建关注实体定位子模型、实体抽取子模型以及基于软提示学习的实体跨度分类子模型;为了有效捕捉内层实体和外层实体的嵌套关系,构建一种特殊的软提示模板;所述嵌套ner模型构建单元还包括:
[0143]
实体定位子模型构建单元,该单元的优化目标只包含实体定位部分的io标记子任务,使用bert进行编码得到相应的文本表示e,根据e获得每个词是否在实体中的概率再根据预测该词是否属于实体的一部分。
[0144]
实体抽取子模型构建单元,该单元的优化目标只包含实体抽取部分的实体判定子任务,使用bert进行编码得到相应的文本表示e,根据e获得候选跨度为实体的分数在根据预测该候选跨度是否是一个完整实体。
[0145]
实体分类子模型构建单元,该单元的优化目标包含实体分类子模型的提示学习子任务和实体分类子模型的对比学习子任务。构建特殊的软提示模板,再使用bert对提示学习模板进行编码得到相应的文本表示e,并从其中获取[mask]标记的表示h
[mask]
,将其通过多层感知机进行分类。同时辅助对比学习子任务,以解决软提示模板插入原句所造成对内层实体和外层实体之间联系的截断的问题,以进行预测。
[0146]
后期整合实体抽取子模型构建单元得到的候选跨度,在实体分类子模型构建单元中进行预测预测,整合得到的以及h
[mask]
进行最终实体类别预测。
[0147]
不同子任务预测构建单元,将不同任务多视角解耦构建单元,将复杂的小样本嵌套ner任务拆解为多个简单子任务单元的组合。
[0148]
嵌套ner模型训练单元,用于构建损失函数,构建优化函数,所述嵌套ner模型训练单元还包括:
[0149]
损失函数构建单元,模型的目标函数就是所有子任务损失函数的总和,通过模型训练来最小化这个总和的目标函数;
[0150]
优化函数构建单元,负责优化模型参数,调整模型中参数的更新。
[0151]
综上,本发明方法解决小样本场景下嵌套ner的内外层嵌套实体间的关系挖掘问题,提供一种基于实体定位、实体抽取和实体分类的三阶段的小样本嵌套ner方法,借助于人工智能自然语言处理技术,提出了一种新的基于实体定位、实体抽取和实体分类的三阶段的小样本嵌套ner模型,适用于小样本嵌套ner场景;并提出了一种有效的实体嵌套关系建模机制,通过一种特殊的软提示模板设计及对比学习辅助任务,将内外层嵌套实体之间的关系进行有效建模,进一步提高了模型捕捉内外层嵌套实体之间关系的能力。本发明的方法在小样本嵌套ner场景下具有更高的准确率和更好的鲁棒性,适用于各种文本场景下
的嵌套ner任务,在信息抽取领域有很大的应用前景。
[0152]
需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。

技术特征:
1.基于三阶段的小样本嵌套命名实体识别方法,其特征在于,主要包括如下步骤:s1,采样嵌套ner小样本数据集:根据原始嵌套ner数据集采样,保证每种类别采样得到的实体数量一致,初步构建嵌套ner小样本数据集;s2,构建嵌套ner小样本数据集:从原始嵌套ner数据集的训练集、验证集以及测试集中分别采样k个实体实例,得到嵌套ner小样本训练数据集、验证集以及测试集;s3,构建嵌套ner模型:分别构建实体定位子模型、实体抽取子模型以及实体分类子模型,捕捉内层实体和外层实体的嵌套关系,构建特殊的软提示模板;s4,训练嵌套ner模型:用于构建损失函数,构建优化函数。2.如权利要求1所述的基于三阶段的小样本嵌套命名实体识别方法,其特征在于:所述步骤s1中,初始化每种类别的实体数量,通过遍历原始嵌套ner数据集,对每个句子中的每种类别的实体数量计数,保留满足满足k-shot规则的句子组,采样得到嵌套ner小样本数据集。3.如权利要求2所述的基于三阶段的小样本嵌套命名实体识别方法,其特征在于:所述步骤s3中,嵌套ner模型实体定位子模型构建步骤具体为:输入层从输入样本词典的“tokens”项获取,将其形式化为:x={χ1,...,χ
n
};bert的输入由三部分组成:词嵌入(token embedding)、片段嵌入(segment embedding)、位置嵌入(position embedding);将这三个向量相加即可得到句子中每个词的输入向量,将句子中每个词的输入向量组合成矩阵,即句子的输入;bert的输入进行若干次多头注意力机制(multi-head attention)、层归一化(layer_norm)以及前馈网络层之后得到输出;e=bert(χ)其中,再将获得的表示与h
[cls]
连接,即可得到句子中每个词的输入向量:之后将输入多层感知机并进行归一化,获得每个词是否属于实体的概率;最后通过argmax操作获得每个词是否属于实体的结果;过argmax操作获得每个词是否属于实体的结果;其中,采用io标注法,o-tag表示改词不属于实体的一部分。4.如权利要求1所述的基于三阶段的小样本嵌套命名实体识别方法,其特征在于:所述步骤s3中,嵌套ner模型实体抽取子模型构建步骤具体为:使用bert进行编码的到相应的文本表示e;将实体集中部分χ
rk
={χ
l
,...,χ
r
}定义为被判定为i-tag的最长连续实体序列,其中χ
l
表示实体集中部分的左边界,χ
r
表示实体集中部分的右边界,通过平均池化获得χ
rk
的整体表示;
将获得的表示与h
[cls]
连接,即可得到句子中每个词的边界判别向量;再将分别输入两个独立的多层感知机并进行归一化,获得每个词是否属于实体的左边界或右边界的概率;实体的左边界或右边界的概率;之后,遍历实体集中部分χ
rk
={χ
l
,...,χ
r
}中的所有跨度作为候选跨度s
i
,分别利用每个候选跨度s
i
的左右边界词的和通过点积运算计算跨度s
i
为实体的概率:最后通过对所有候选跨度s
i
进行排序,对于有部分重叠的跨度,删除较低的跨度,最终获得经过过滤的候选实体跨度集合s=(s1,...,s
f
)。5.如权利要求3或4所述的基于三阶段的小样本嵌套命名实体识别方法,其特征在于:所述步骤s3中嵌套ner模型实体分类子模型的构建包括构建实体分类子模型的提示学习模块和构建实体分类子模型的对比学习模块;所述构建实体分类子模型的提示学习模块中,采用“全称(缩写)”格式构建提示学习模板,针对候选实体跨度s
i
,其模板提示学习模板构建形式化为:x
p
={x
part1
,[p1],s
i
,[p2],[mask],[p3],x
part2
}其中,[p
i
]表示软提示模板;使用bert对提示学习模板进行编码得到相应的文本表示e,并从其中获取[mask]标记的表示h
[mask]
,将其通过多层感知机进行分类:其中,y为实体类型的标签空间。6.如权利要求5所述的基于三阶段的小样本嵌套命名实体识别方法,其特征在于:所述构建实体分类子模型的对比学习模块中,加入损失函数拉近正样本对之间的举例:7.如权利要求6所述的基于三阶段的小样本嵌套命名实体识别方法,其特征在于:所述步骤s4模型训练中的目标函数是所有子任务损失函数之和:步骤s4模型训练中的目标函数是所有子任务损失函数之和:
l=αl
focus
+βl
left
+γl
right
+μl
prompt
+σl
contrast
其中,以及均为监督信号标签;α,β,γ,μ,σ均为超参数,用于平衡不同损失函数的数量级。8.基于三阶段的小样本嵌套命名实体识别系统,其特征在于,包括:嵌套ner数据集采样单元、嵌套ner小样本数据集构建单元、嵌套ner模型构建单元和嵌套ner模型训练单元,所述嵌套ner数据集采样单元:用于根据原始嵌套ner数据集采样,保证每种类别采样得到的实体数量基本一致,初步构建小样本嵌套ner数据集;所述嵌套ner小样本数据集构建单元:用于根据嵌套ner小样本数据集划分训练集、验证集以及测试集,构建嵌套ner小样本数据集;所述嵌套ner模型构建单元:用于分别构建实体定位子模型、实体抽取子模型以及实体跨度分类子模型,有效捕捉内层实体和外层实体的嵌套关系,构建软提示模板;所述嵌套ner模型训练单元:用于构建损失函数,构建优化函数。9.如权利要求8所述的基于三阶段的小样本嵌套命名实体识别系统,其特征在于:所述实体定位子模型中,其优化目标只包含实体定位部分的io标记子任务,使用bert进行编码得到相应的文本表示e,根据e获得每个词是否在实体中的概率再根据预测该词是否属于实体的一部分;所述实体抽取子模型中,其优化目标只包含实体抽取部分的实体判定子任务,使用bert进行编码得到相应的文本表示e,根据e获得候选跨度为实体的分数在根据预测该候选跨度是否是一个完整实体;所述实体分类子模型中,其优化目标包含实体分类子模型的提示学习子任务和实体分类子模型的对比学习子任务,构建软提示模板,再使用bert对提示学习模板进行编码得到相应的文本表示e,并从其中获取[mask]标记的表示h
[mask]
,将其通过多层感知机进行分类;同时辅助对比学习子任务,以进行预测。

技术总结
本发明公开了一种基于三阶段的小样本嵌套命名实体识别方法和系统,首先根据原始嵌套NER数据集采样,保证每种类别采样得到的实体数量一致,初步构建嵌套NER小样本数据集;再从原始嵌套NER数据集的训练集、验证集以及测试集中分别采样K个实体实例,得到嵌套NER小样本训练数据集、验证集以及测试集;再构建嵌套NER模型,分别构建实体定位子模型、实体抽取子模型以及实体分类子模型,捕捉内层实体和外层实体的嵌套关系,构建特殊的软提示模板;最后训练嵌套NER模型,更好的支持小样本场景下的模型训练。型训练。型训练。


技术研发人员:周德宇 徐圆圆 张旭
受保护的技术使用者:东南大学
技术研发日:2023.06.29
技术公布日:2023/9/19
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐