【技术实现步骤摘要】
一种基于预训练语言模型的命名实体识别方法
[0001]本专利技术涉及自然语言处理命名实体识别领域,具体涉及一种基于预训练语言模型对文本序列中命名实体进行识别的方法。
技术介绍
[0002]自然语言是人类交流和思维的主要工具,是人类区别其他动物的本质特性,人类的多种智能都与语言有着密切的关系,而文字是记录语言的工具,人类的逻辑思维以语言为形式,人类的绝大部分知识也是以语言文字的形式记载和流传下来的。文本中大量的文字能够表达丰富的语义信息和特征内容,帮助人们理解文本所要传达的信息。在全球智能化及信息化的时代,自然语言中信息的抽取与处理技术一直是科学家们重点研究内容。人工智能技术的发展与硬件设备计算性能的提升,推动了自然语言处理领域信息抽取、文本分类、阅读理解等多项技术的深入研究。信息抽取是自然语言处理领域中的底层处理,即对文本里包含的信息进行结构化处理,并以统一的形式集成在一起,包括命名实体识别、指代消解、属性抽取、关系抽取、事件抽取等。
[0003]命名实体识别方法的研究与应用作为自然语言处理领域的一个重要分支,是信息抽取、信息检索、机器翻译、问答系统等多种自然语言处理技术必不可少的组成部分,甚至是基础部分,因而命名实体识别方法一直是热门研究的课题之一。命名实体识别是指识别文本中具有特定意义的实体。具体来说,命名实体识别指的是,从一句话中识别出人名,地名,组织名,日期时间,这些人名,地名等被识别的目标就是命名实体,命名实体还可以是很多其它有意义的目标,比如产品,公司,专有名词等等。通过识别出来的命名实体,可以形
【技术保护点】
【技术特征摘要】
1.一种基于预训练语言模型的命名实体识别方法,其特征在于包括以下步骤:第一步:构建命名实体识别系统;命名实体识别系统由多模型识别模块、多级融合模块、判别模块、实体标签对齐器、未标记数据库D构成;未标记数据库D存储E条文本,E为正整数,与多模型识别模块、判别模块相连,供多模型识别模块和判别模块读取,D={D1,D2,...,D
e
,...,D
E
},D
e
表示未标记数据库中第e个文本;其中N为正整数,D
e
表示长度为N的文本即D
e
包含N个字符;多模型识别模块与用户、多级融合模块和判别模块相连,当从多模型识别模块训练集接收到训练集文本集合X时,X={X1,X2,...,X
c
,...,X
C
},其中X
c
表示训练集中第c个文本,1≤c≤C,C为正整数,N为正整数,X
c
长度为N即X
c
包含N个字符;多模型识别模块对X中每个文本分别进行多模型识别,得到多模型识别结果集合F(X)和全连接层输出集合Z(X);当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块;当对多模型识别模块进行训练时,多模型识别模块更新参数;当从多模型识别模块测试集接收到测试集文本集合V时,V={V1,V2,...,V
u
,...,V
U
},其中Vu表示测试集中第u个文本,V
u
表示长度为N的文本即Vu包含N个字符,为V
u
的第n个字符,1≤u≤U;多模型识别模块对V中每个文本分别进行多模型识别,得到多模型识别结果集合F(V),F(V)={F(V1),F(V2),...,F(V
u
),...,F(V
U
)},其中F(V
u
)表示多模型识别模块对文本V
u
的分类结果;将F(V)输出到多级融合模块;当从未标记数据库D中读取数据时,多模型识别模块对D中每个文本分别进行多模型识别,得到多模型识别结果集合F(D)和全连接层输出集合Z(D),F(D)={F(D1),F(D2),...,F(D
e
),...,F(D
E
)},其中F(D
e
)表示多模型识别模块对文本D
e
的分类结果,Z(D)={Z(D1),Z(D2),...,Z(D
e
),...,Z(D
E
)},其中Z(D
e
)表示多模型识别模块对文本D
e
的全连接层输出,将F(D)输出到多级融合模块,将Z(D)输出到判别模块;当接收到用户输入的文本T时,多模型识别模块对T进行多模型识别,得到多模型识别结果F(T),将F(T)输出到多级融合模块;多模型识别模块由6M个实体识别模型构成;这些模型共分为6组,分别对应6种模型框架,每组M个模型只有随机种子Seed不同,3≤M≤7,6种模型框架都由3部分组成:预训练编码器、下游编码器和解码器;预训练编码器为RoBERTa网络,下游编码器为BiLSTM网络或TENER网络,解码器为CRF或Span或Softmax;这六种模型框架分别由RoBERTa、BiLSTM或TENER、CRF或Span或Sotfmax组合而成;6M个实体识别模型记为net1,...,net
m
,...,net
6M
,1≤m≤6M,其中net1~net
M
为net1,net
M+1
~net
2M
为net2,net
2M+1
~net
3M
为net3,net
3M+1
~net
4M
为net4,net
4M+1
~net
5M
为net5,net
5M+1
~net
6M
为net6;当多模型识别模块接收到训练集文本集合X时,net1,...,net
m
,...,net
6M
分别对X中每个文本进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(X),F(X)={F(X1),F(X2),...,F(X
c
),...,F(X
C
)};F(X
c
)表示X
c
的分类结果集合,F(X
c
)={F(X
c
)1,F(X
c
)2,...,F(X
c
)
m
,...,F(X
c
)
6M
},其中F(X
c
)
m
表示net
m
网络对X
c
的分类结果,其中表示文本X
c
输入到net
m
后第n个字符得到的对应标签;同时得到X
c
在每个解码器中第一个全
连接层的输出结果集合连接层的输出结果集合Z(X
c
)
m
表示文本X
c
输入到net
m
后得到的全连接层输出;对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出集合ZZ(X
c
),ZZ(X
c
)={Z(X
c
)
net1
,Z(X
c
)
net2
,Z(X
c
)
net3
,Z(X
c
)
net4
,Z(X
c
)
net5
,Z(X
c
)
net6
},Z(X
c
)
netr
表示netr对X
c
的M个全连接层输出平均后的结果,1≤r≤6,对ZZ(X
c
)中的6个元素进行拼接后,得到拼接后的全连接层输即多模型识别模块对文本X
c
的全连接层输出Z(X
c
),Z(X
c
)=Concat(Z(X
c
)
net1
,Z(X
c
)
net2
,Z(X
c
)
net3
,Z(X
c
)
net4
,Z(X
c
)
net5
,Z(X
c
)
net6
),Concat()表示拼接操作,令全连接层输出集合Z(X)={Z(X1),Z(X2),...,Z(X
c
),...,Z(X
C
)};当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块;当生成伪标签数据集时,多模型识别模块从未标记数据库D读取文本,net1,...,net
m
,...,net
6M
分别对D中E个文本进行预训练编码、下游编码和解码,得到E个文本的分类结果集合F(D),F(D)={F(D1),F(D2),...,F(D
e
),...,F(D
E
)};F(D
e
)表示D
e
的分类结果集合,F(D
e
)={F(D
e
)1,F(D
e
)2,...,F(D
e
)
m
,...,F(D
e
)
6M
},其中F(D
e
)
m
表示net
m
网络对D
e
的分类结果,其中表示文本D
e
输入到net
m
后第n个字符得到的对应标签;同时得到D
e
在每个解码器中第一个全连接层的输出结果集合码器中第一个全连接层的输出结果集合Z(D
e
)
m
表示文本D
e
输入到net
m
后得到的全连接层输出;对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出ZZ(D
e
),ZZ(D
e
)={Z(D
e
)
net1
,Z(D
e
)
net2
,Z(D
e
)
net3
,Z(De)
net4
,Z(D
e
)
net5
,Z(D
e
)
net6
},Z(D
e
)
netr
表示netr对D
e
的M个全连接层输出平均后的结果,对ZZ(D
e
)中的6个元素进行拼接后,得到拼接后的全连接层输出Z(D
e
),Z(D
e
)=Concat(Z(D
e
)
net1
,Z(D
e
)
net2
,Z(D
e
)
net3
,Z(D
e
)
net4
,Z(D
e
)
net5
,Z(D
e
)
net6
);令全连接层输出Z(D),Z(D)={Z(D1),Z(D2),...,Z(D
e
),...,Z(D
E
)},将F(D)送入多级融合模块,将Z(D)送入判别模块;当多模型识别模块接收到测试集文本集合V时,net1,...,net
m
,...,net
6M
分别对V中每个文本分别进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(V),F(V)={F(V1),F(V2),...,F(V
u
),...,F(V
U
)};F(V
u
)表示V
u
的分类结果集合,F(V
u
)={F(V
u
)1,F(V
u
)2,...,F(V
u
)
m
,...,F(V
u
)
6M
},其中F(V
u
)
m
表示net
m
网络对V
u
的分类结果,其中表示文本Vu输入到net
m
后第n个字符得到的对应标签;将F(V)送入多级融合模块;当多模型识别模块接收到用户输入的文本T=(t1,t2,...,t
n
,...,t
N
)时,T表示长度为N的文本即T包含N个字符,net1,...,net
m
,...,net
6M
分别对T进行预训练编码、下游编码和解码,得到分类结果集合F(T),F(T)={F(T)1,F(T)2,...,F(T)
m
,...,F(T)
6M
},其中F(T)
m
表示net
m
网络对T的分类结果,F(T)
m
={F(T)
m
(t1),F(T)
m
(t2),...,F(T)
m
(t
n
),...,F(T)
m
(t
N
)},其中F(T)
m
(t
n
)表示文本T输入到net
m
后第n个字符t
n
得到的对应标签;将F(T)送入多级融合模块;多级融合模块与多模型识别模块、判别模块和实体标签对齐器相连,当从多模型识别
模块接收到F(X)时,采用多级融合策略对F(X)进行投票,得出X对应的预测标签序列集合Y
′
,将Y
′
送入判别模块;当从多模型识别模块接收到F(D)时,采用多级融合策略对F(D)进行投票,得出D对应的预测标签序列集合将送入判别模块;当从多模型识别模块接收到F(V)并从多模型识别模块测试集接收到测试集实际标签序列集合Y
#
时,采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合Y
*
,并根据Y
*
和Y
#
计算精确率、召回率和F1值供用户查看;当从多模型识别模块接收F(T)时,采用多级融合策略对F(T)进行投票,得出T对应的标签序列Y
T
,将Y
T
送入实体标签对齐器;判别模块与多模型识别模块、多级融合模块、未标记数据库相连,采用支持向量机SVM模型作为标签分类器,当从多模型识别模块接收到Z(X),从多级融合模块接收到Y
′
,从多模型识别模块训练集接收训练集实际标签序列集合Y时,判别模块根据Y
′
和Y生成判别模块训练集标签S,并根据Z(X)和S构建判别模块训练集Q,之后对判别模块进行训练;当从未标记数据库读取到文本集合D,从多模型识别模块接收到Z(D),从多级融合模块接收到时,判别模块对Z(D)进行判断,判断是否将加入伪标签数据集R;最后将R发送给多模型识别模块;实体标签对齐器与多级融合模块和用户相连,从多级融合模块接收Y
T
,将用户输入的文本T和Y
T
对应起来,得到T中各实体类别的实体列表;第二步:准备训练多模型识别模块的数据集;选用标注样本个数L小于1000、来自同一垂直领域的数据集作为原始数据集,令数据集中标注样本数为L,按4∶1的比例将原始样本划分为训练集和测试集,每条标注样本包含一条文本和其对应的实际标签;训练集中的文本集合构成训练集文本集合X,训练集中的实际标签序列集合构成训练集实际标签序列集合Y,训练集共L(X)条数据;测试集中的文本集合构成测试集文本集合V,测试集样本中的实际标签序列集合构成测试集实际标签序列集合Y
#
,测试集共L(V)条数据;L=L(X)+L(V);第三步:使用多模型识别模块训练集采用多模型识别模块训练方法训练多模型识别模块;采用有监督的方式对多模型识别模块中的6M个模型同时进行训练,得到6M组不同的模型参数权重;方法如下:3.1初始化权重参数,包括RoBERTa网络权重参数集合W
R
中的所有元素值、BiLSTM网络权重参数集合W
B
中所有元素值、TENER网络权重参数集合W
T
中所有元素值、CRF网络权重参数集合W
C
中所有元素值、Span网络权重参数集合W
S
中所有元素值、Softmax网络权重参数集合W
So
中所有元素值;3.2设置网络训练超参数:包括网络模型学习率learningRate,批处理尺寸,文本最大长度maxlen,随机种子Seed;3.3迭代计算每一个网络模型输出分布与真实实体标签分布差距,得到损失值,最小化损失值并更新网络参数,直到满足迭代次数要求,得到权重参数;具体方法如下:3.3.1初始化训练迭代参数itretation=1;3.3.2每个网络模型都从多模型识别模块训练集中接收训练集文本集合X,经过预编码、下游编码和解码得到当前参数下网络模型对于标签的输出分布,计算预测的输出分布与真实分布的差距,得到损失值Loss,使用Adam优化算法对Loss最小化以更新一次网络权重参数;
3.3.3令itretation=itretation+1,如果itretation≤迭代阈值K,K是[1,30]内的整数,转3.3.2;否则说明训练满足迭代次数要求,训练结束,将训练后的W
R
作为RoBERTa网络的权重参数集合,将训练后的W
B
作为BiLSTM网络的权重参数集合,将训练后的W
T
作为TENER网络的权重参数集合,将训练后的W
S
作为Span网络的权重参数集合,将训练后的W
C
作为CRF的权重参数集合,将训练后的W
So
作为Softmax的权重参数集合,得到训练好的6M个模型,也即得到训练好的多模型识别模块,转第四步;第四步:采用测试方法测试当前命名实体识别系统性能指标;训练好的多模型识别模块接收测试集文本集合V,V={V1,V2,...,V
u
,...,V
U
},1≤U≤L(V)且U为正整数,得到实体识别结果F(V);多级融合模块采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合其中其中表示文本V
u
的第n个字符最终预测得到的伪标签,并根据Y
*
和多模型识别模块测试集实际标签序列集合Y
#
计算精确率、召回率和F1值,具体方法为:4.1初始化变量u=1、tp=0、fp=0、fn=0,其中tp表示正确预测的数目,fp表示误判的数目,fn表示漏判的数目;4.2训练好的多模型识别模块接收测试集文本集合V,对V中的第u个文本V
u
进行识别;多模型识别模块对V
u
进行预编码、下游编码和解码,得到6M个实体识别结果集合F(V
u
),F(V
u
)={F(V
u
)1,F(V
u
)2,...,F(V
u
)
m
,...,F(V
u
)
6M
},其中F(V
u
)
m
表示net
m
网络对V
u
的分类结果,其中表示文本V
u
输入到net
m
后第n个字符得到的对应标签,将F(V
u
)送入多级融合模块;4.3多级融合模块对F(V
u
)进行多级融合;多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,得到V
u
的预测标签序列的预测标签序列的预测标签序列表示V
u
的第n个字符预测的伪标签;4.4多级融合模块根据预测标签序列和V
u
的实际标签序列对和中的所有实体进行判断:当一实体在和中同时出现时,令tp=tp+1;当一实体仅在出现时,令fn=fn+1;当一...
【专利技术属性】
技术研发人员:黄震,陈一凡,汪昌健,郭敏,李东升,王博阳,王安坤,徐皮克,
申请(专利权)人:中国人民解放军国防科技大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。