有效
一种基于预训练语言模型的命名实体识别方法
黄震、陈一凡、汪昌健、郭敏、李东升、王博阳、王安坤、徐皮克
中国人民解放军国防科技大学
黄
黄震 专利 49
中国人民解放军国防科技大学自然语言处理生物模型计算计算模型系统
陈
陈一凡 专利 4
中国人民解放军国防科技大学G06K9/00图形数据读写电子数据处理
汪
汪昌健 专利 26
中国人民解放军国防科技大学计算技术物理仪器生物模型计算
郭
郭敏 专利 19
中国人民解放军国防科技大学物理仪器计算技术电子数据处理
李
李东升 专利 142
中国人民解放军国防科技大学自然语言处理数据存储检索程序控制装置
王
王博阳 专利 4
中国人民解放军国防科技大学G06K9/00图形数据读写数据存储检索
王
王安坤 专利 6
中国建筑科学研究院物理仪器电子数据处理G06K9/00
徐
徐皮克 专利 2
中国人民解放军国防科技大学自然语言处理电子数据处理计算技术
摘要
本发明公开了一种基于预训练语言模型的命名实体识别方法,目的是提高命名实体识别的准确率、召回率和F1值,实现少样本情况下识别命名实体的要求。技术方案是先构建由多模型识别模块、多级融合模块、判别模块、实体标签对齐器和未标记数据库构成的命名实体识别系统,利用初步训练的模型对未标记数据进行标注,采用多模型识别和多级融合的方式提高自动标注效果,并利用SVM分类器对自动标记数据进行筛选,原始训练集和经过筛选的自动标注数据对模型再次进行训练,最终使用训练后的命名实体识别系统对目标文本进行多模型识别、多级融合和实体标签对齐,得到目标文本中的实体。采用本发明可提升少样本场景下实体识别的准确率、召回率和F1值。
1.一种基于预训练语言模型的命名实体识别方法,其特征在于包括以下步骤:第一步:构建命名实体识别系统;命名实体识别系统由多模型识别模块、多级融合模块、判别模块、实体标签对齐器、未标记数据库D构成;未标记数据库D存储E条文本,E为正整数,与多模型识别模块、判别模块相连,供多模型识别模块和判别模块读取,D={D 1 ,D 2 ,...,D e ,...,D E },D e 表示未标记数据库中第e个文本;其中 1≤n≤N,N为正整数,D e 表示长度为N即D e 包含N个字符;多模型识别模块与用户、多级融合模块和判别模块相连,当从多模型识别模块训练集接收到训练集文本集合X时,X={X 1 ,X 2 ,...,X c ,...,X C },其中X c 表示训练集中第c个文本,1≤c≤C,C为正整数, 1≤n≤N,N为正整数,X c 长度为N即X c 包含N个字符;多模型识别模块对X中每个文本分别进行多模型识别,得到多模型识别结果集合F(X)和全连接层输出集合Z(X);当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块;当对多模型识别模块进行训练时,多模型识别模块更新参数;当从多模型识别模块测试集接收到测试集文本集合V时,V={V 1 ,V 2 ,...,V u ,...,V U },其中V u 表示测试集中第u个文本, V u 表示长度为N即V u 包含N个字符, 为V u 的第n个字符,1≤u≤U;多模型识别模块对V中每个文本分别进行多模型识别,得到多模型识别结果集合F(V),F(V)={F(V 1 ),F(V 2 ),...,F(V u ),...,F(V U )},其中F(V u )表示多模型识别模块对文本V u 的分类结果;将F(V)输出到多级融合模块;当从未标记数据库D中读取数据时,多模型识别模块对D中每个文本分别进行多模型识别,得到多模型识别结果集合F(D)和全连接层输出集合Z(D),F(D)={F(D 1 ),F(D 2 ),...,F(D e ),...,F(D E )},其中F(D e )表示多模型识别模块对文本D e 的分类结果,Z(D)={Z(D 1 ),Z(D 2 ),...,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个实体识别模型记为net 1 ,...,net m ,...,net 6M ,1≤m≤6M,其中net 1 ~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时,net 1 ,...,net m ,...,net 6M 分别对X中每个文本进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(X),F(X)={F(X 1 ),F(X 2 ),...,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(X 1 ),Z(X 2 ),...,Z(X c ),...,Z(X C )};当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块;当生成伪标签数据集时,多模型识别模块从未标记数据库D读取文本,net 1 ,...,net m ,...,net 6M 分别对D中E个文本进行预训练编码、下游编码和解码,得到E个文本的分类结果集合F(D),F(D)={F(D 1 ),F(D 2 ),...,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(D e ) 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(D 1 ),Z(D 2 ),...,Z(D e ),...,Z(D E )},将F(D)送入多级融合模块,将Z(D)送入判别模块;当多模型识别模块接收到测试集文本集合V时,net 1 ,...,net m ,...,net 6M 分别对V中每个文本分别进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(V),F(V)={F(V 1 ),F(V 2 ),...,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 的分类结果, 其中 表示文本V u 输入到net m 后第n个字符 得到的对应标签;将F(V)送入多级融合模块;当多模型识别模块接收到用户输入的文本T=(t 1 ,t 2 ,...,t n ,...,t N )时,T表示长度为N的文本即T包含N个字符,net 1 ,...,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 (t 1 ),F(T) m (t 2 ),...,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={V 1 ,V 2 ,...,V u ,...,V U },1≤U≤L(V)且U为正整数,得到实体识别结果F(V);多级融合模块采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合Y * ={Y 1* ,Y 2* ,...,Y u* ,...,Y U* },其中 表示文本V u 的第n个字符最终预测得到的伪标签,并根据Y * 和多模型识别模块测试集实际标签序列集合Y # 计算精确率、召回率和F1值,Y # ={Y 1# ,Y 2# ,...,Y u# ,...,Y U# },具体方法为: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多级融合模块根据预测标签序列Y u* 和V u 的实际标签序列Y u# 对Y u* 和Y u# 中的所有实体进行判断:当一实体在Y u* 和Y u# 中同时出现时,令tp=tp+1;当一实体仅在Y u# 出现时,令fn=fn+1;当一实体仅在Y u* 出现时,令fp=fp+1;4.5如果u≤U,令u=u+1,转4.2;否则,说明U条测试文本已经全部测试完毕,转4.6;4.6计算精确率P、召回率R和F1值:P=tp/(tp+fp),R=tp/(tp+fn),F1=2×P×R/(P+R);第五步:初始化未标记数据库;在互联网上爬取数据集相关领域文本共E条,构成未标记数据库D;第六步:构建判别模块训练集Q,方法是:训练好的多模型识别模块接收多模型识别模块训练集中的训练文本集合X,对X进行识别,得到判别模块训练集输入Z(X)和实体识别结果F(X);多级融合模块接收实体识别结果F(X),对F(X)进行多级融合,得到X对应的预测序列集合Y′,Y′={Y 1′ ,Y 2′ ,...,Y c′ ,...,Y C′ },其中 表示文本X c 的第n个字符最终预测的预测标签;判别模块接收Y′和多模型识别模块训练集实际标签序列Y,Y={Y 1 ,Y 2 ,...,Y c ,...,Y C },其中Y c 为X c 对应的实际标签序列, 表示文本X c 的第n个字符的实际标签,得到判别模块训练集标签S,将Z(X)与S结合得到判别模块训练集Q={Q 1 ,Q 2 ,...,Q c ,...,Q C },其中Q c =(Z(X c ),S c ),表示Q中第c个样本,Z(X c )表示Z(X)的第c个元素,S c 表示S的第c个元素;第七步:使用第六步得到的判别模块训练集Q,采用libsvm工具包对判别模块进行有监督的训练,得到训练后的判别模块,即SVM判别器;第八步:使用训练后的多模型识别模块、多级融合模块和训练后的判别模块生成伪标签数据集R,方法是:多模型识别模块接收未标记数据库D中的文本,进行多模型识别,得到全连接层输出集合Z(D)和实体识别结果F(D);多级融合模块从多模型识别模块接收F(D)并进行多级融合,得到D对应的预测标签 其中 训练后的判别模块从多模型识别模块接收全连接层输出Z(D)、从多级融合模块接收 从未标记数据库接收文本集合D,对Z(D 1 ),Z(D 2 ),...,Z(D e ),...,Z(D E )逐项进行判断,令 R e 表示第e个候补的伪标签样本,包含未标记数据文本D e 和D e 对应的预测标签序列 判断集合{R 1 ,R 2 ,...,R e ,...,R E }中各项能否作为新的训练样本加入伪标签数据集R中;第九步:构建新的多模型识别模块训练集并再次训练多模型识别模块;具体方法为:9.1构建新的多模型识别模块训练集,方法是:将多模型识别模块训练集和第八步生成的R进行合并,构成新的多模型识别模块训练集;9.2再次训练多模型识别模块;使用新的多模型识别模块训练集,采用第三步的多模型识别模块训练方法对多模型识别模块再次进行训练,得到6M组新的模型权重参数;9.3测试再次训练多模型识别模块后命名实体识别系统的性能;使用新训练的多模型识别模块的权重参数,采用第四步的测试方法,对多模型识别模块测试集进行测试,得到新系统的新精确率P’、新召回率R’和新F1值F1’;9.4判断是否需要继续训练;比较F1和F1’,若F1’>F1,说明多模型识别模块还未训练至最优,令新训练得到的模型权重参数作为多模型识别模块的权重参数,转第六步;若F1’≤F1,则说明多模型识别模块已经训练至最优,转第十步;第十步:使用命名实体识别系统对用户输入的文本T进行实体识别,T表示长度为N的文本,T={t 1 ,t 2 ,...,t n ,...,t N },t n 表示文本T的第n个字符,方法为:10.1多模型识别模块对文本T进行识别;使用多模型识别模块对文本T进行预编码、下游编码和解码,得到6M个实体识别结果集合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 (t 1 ),F(T) m (t 2 ),…,F(T) m (t n ),…,F(T) m (t N )},其中F(T) m (t n )表示文本T输入到net m 后第n个字符t n 得到的对应标签,将F(T)送入多级融合模块;10.2多级融合模块对F(T)进行多级融合;多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,最终得到文本T的预测标签序列 10.3使用实体标签对齐器将文本T的预测标签序列Y T 与用户接收文本T对应,得到每个实体类别的实体列表,方法是:10.3.1初始化A个空列表集合,用{list 1 ,list 2 ,...,list a ,...,list A }表示,分别对应A个实体类别,初始化n=1,初始化预测实体字符序列entity为空字符,entity用来暂时存储预测的实体字符序列;10.3.2如果n≤N,令n=n+1,转10.3.3;如果n>N,说明已经对全部标签进行了判别,得到了A个实体类别对应的实体列表,即对T的识别结果,每个实体列表对应一个类别,实体列表中为同一类别的实体,转第十一步;10.3.3根据文本T的预测标签序列Y T 的第n个标签 执行不同的操作;如果 表示非实体标签,令n=n+1,转10.3.2;如果 表示第a类实体的实体头部标签或第a类实体的实体中部标签,将 对应的T中字符t n 插入到entity尾部,令n=n+1,转10.3.2;如果 表示第a类实体的实体尾部标签或第a类实体的单实体标签,将 对应的T中字符t n 插入到entity尾部,并将entity加入第a类实体对应的实体列表list a 中,之后令entity为空字符,n=n+1,转10.3.2;1≤a≤A,A为原始数据集中的实体类型数;第十一步,结束。
2.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于所述1≤E≤7000,所述M=5。
3.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于所述多模型识别模块的net1为RoBERTa+BiLSTM+CRF架构,即预训练编码器采用RoBERTa预训练模型对文本进行预编码,得到预编码结果,下游编码器采用BiLSTM网络对预编码结果进行下游编码,解码器采用CRF对编码结果进行解码得到实体标签序列;所述net2为RoBERTa+BiLSTM+Span架构,net2的预训练编码器、下游编码器与net1的相同,解码器采用span网络对编码结果进行解码得到实体识别结果,具体来说,就是将下游编码先送入一个全连接层,再将得到的结果分别送入另外3个全连接层,分别得到实体首字符的识别结果、实体尾字符的识别结果和实体类型的识别结果,之后对3种识别结果进行整合得到实体标签序列;所述net3为RoBERTa+BiLSTM+Softmax架构,net3的预训练编码器、下游编码器与net1的相同,解码器采用全连接层加Softmax层对编码结果进行解码得到实体标签序列;所述net4为RoBERTa+TENER+CRF架构:net4的预训练编码器、解码器与net1的相同,下游编码器采用TENER网络对预编码结果进行下游编码;所述net5为RoBERTa+TENER+Span架构,即预训练编码器为RoBERTa预训练模型、下游编码器为TENER网络和解码器为Span网络;所述net6为RoBERTa+TENER+Softmax架构,即预训练编码器为RoBERTa预训练模型、下游编码器为TENER网络和解码器为Softmax。
4.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于第二步所述原始数据集选用MilNER数据集,L=400。
5.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于第二步所述标签采用BIOES标注方式,B表示实体头部标签,I表示实体中部标签,E表示实体尾部标签,O表示非实体标签,S表示单实体标签,每个标签还包含有实体类型信息,分别以1,2,...,a,...,A表示。
6.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于3.1步所述初始化权重参数的方法是:使用网上发布的预训练模型参数初始化RoBERTa网络权重参数集合W R 中的所有元素值;将BiLSTM网络权重参数集合W B 中所有元素值都初始化为[0,1]之间的随机数;将TENER网络权重参数集合W T 中所有元素值都初始化为[0,1]之间的随机数;将CRF网络权重参数集合W C 中所有元素值都初始化为[0,1]之间的随机数;将Span网络权重参数集合W S 中所有元素值都初始化为[0,1]之间的随机数;将Softmax网络权重参数集合W So 中所有元素值都初始化为[0,1]之间的随机数。
7.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于3.2步所述设置网络训练超参数的方法是:令网络模型学习率learningRate=0.00002,批处理尺寸batchsize=8,文本最大长度maxlen=512,随机种子Seed=2021。
8.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于3.3.2步所述计算损失值Loss的方法是:解码器为CRF的模型由CRF得到;解码器为Softmax的模型由1个常用的损失函数交叉熵损失函数得到;解码器为Span的模型由3个交叉熵损失函数分别计算实体头字符损失、实体尾字符损失和实体类型损失的和得到。
9.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于3.3.2步所述K为10。
10.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于第六步所述构建判别模块训练集Q的具体方法是:6.1初始化变量c=1;6.2构建判别模块训练集样本Q c 的输入Z(X c );使用训练好的多模型识别模块对文本X c 进行预编码、下游编码和全连接层转化,得到6M个全连接层输出 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,令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 c )作为训练集样本Q c 的输入送入判别模块;6.3使用训练好的多模型识别模块对文本X c 进行预编码、下游编码和解码,得到6M个实体识别结果集合F(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个字符 得到的对应标签,将F(X c )送入多级融合模块;6.4多级融合模块对F(X c )进行多级融合;多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步对第一步投票得到的6个投票结果进行二级投票,得到文本X c 多级融合后的预测标签序列 表示文本X c 的第n个字符最终预测的预测标签;6.5判别模块从多级融合模块接收Y c′ 、Y c 和Z(X c ),生成判别模块训练集;具体方法为:6.5.1判别模块根据Y c′ 和Y c ,生成Q c 的实际输出S c ;其中 即当实体的预测标签与实体真实标签相同时 为0,表示接受实体的预测标签作为实体的实际标签,否则 为1,表示不接受实体的预测标签作为实体的实际标签;6.5.2判别模块将Q c 加入到判别模块训练集Q中;6.6如果c≤C,令c=c+1,转6.2;否则,说明已经通过多模型识别训练集生成了判别模块训练集Q。
11.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于第七步所述采用libsvm工具包对判别模块进行有监督的训练的具体方法是:7.1调用libsvm工具包中的grid.py自动搜素得到SVM核函数径向基内核的两个超参数:惩罚因子和影响因子;7.2调用libsvm工具包中的svm-train.exe训练判别模块,其中超参数设置为7.1得到的惩罚因子和影响因子,得到训练后的判别模块,即SVM判别器。
12.如权利要求1所述的一种基于预训练语言模型的命名实体识别方法,其特征在于第八步所述使用训练后的多模型识别模块、多级融合模块和训练后的判别模块生成伪标签数据集R的具体方法为:8.1初始化e=1;8.2多模型识别模块对未标记数据库D中的第e个文本D e 进行识别;使用训练好的多模型识别模块对文本D e 进行预编码、下游编码和全连接层转化,得到6M个全连接层输出 对6组各M个全连接层输出进行平均,得到输出ZZ(D e ),ZZ(D e )={Z(D e ) net1 ,Z(D e ) net2 ,Z(D e ) net3 ,Z(D e ) net4 ,Z(D e ) net5 ,Z(D e ) net6 },对ZZ(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 e ) net1 ,Z(D e ) net2 ,Z(D e ) net3 ,Z(D e ) net4 ,Z(D e ) net5 ,Z(D e ) net6 表示D e 对应的6种不同的模型框架的输出,将Z(D e )输出到判别模块;使用训练好的多模型识别模块对文本D e 进行预编码、下游编码和解码,得到6M个实体识别结果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个字符 得到的对应标签,并将F(D e )送入多级融合模块;8.3多级融合模块对实体识别结果F(D e )进行多级融合;多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,最终得到文本D e 的预测标签序列 将 送入判别模块;8.4判别模块从多模型识别模块接收Z(D e ),对Z(D e )进行判别分类,如果结果为0,则说明样本R e 可以作为训练数据加入到R中, D e 作为训练文本, 作为训练文本的实际标签序列,将样本R e 加入伪标签数据集R中,转8.4;如果结果为1,则说明样本R e 质量不高,不能作为训练数据加入到R中,直接转8.4;8.5如果e≤E,令e=e+1,转8.2;否则,说明已经对全部未标记数据进行了判别,并且筛选得到了伪标签数据集R,结束。



