CN113806494B - 一种基于预训练语言模型的命名实体识别方法 - Google Patents

一种基于预训练语言模型的命名实体识别方法 Download PDF

Info

Publication number
CN113806494B
CN113806494B CN202111184101.5A CN202111184101A CN113806494B CN 113806494 B CN113806494 B CN 113806494B CN 202111184101 A CN202111184101 A CN 202111184101A CN 113806494 B CN113806494 B CN 113806494B
Authority
CN
China
Prior art keywords
module
model
entity
text
training
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111184101.5A
Other languages
English (en)
Other versions
CN113806494A (zh
Inventor
黄震
陈一凡
汪昌健
郭敏
李东升
王博阳
王安坤
徐皮克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202111184101.5A priority Critical patent/CN113806494B/zh
Publication of CN113806494A publication Critical patent/CN113806494A/zh
Application granted granted Critical
Publication of CN113806494B publication Critical patent/CN113806494B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/33Querying
    • G06F16/3331Query processing
    • G06F16/334Query execution
    • G06F16/3344Query execution using natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2411Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/289Phrasal analysis, e.g. finite state techniques or chunking
    • G06F40/295Named entity recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/30Semantic analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Biomedical Technology (AREA)
  • Databases & Information Systems (AREA)
  • Character Discrimination (AREA)

Abstract

本发明公开了一种基于预训练语言模型的命名实体识别方法,目的是提高命名实体识别的准确率、召回率和F1值,实现少样本情况下识别命名实体的要求。技术方案是先构建由多模型识别模块、多级融合模块、判别模块、实体标签对齐器和未标记数据库构成的命名实体识别系统,利用初步训练的模型对未标记数据进行标注,采用多模型识别和多级融合的方式提高自动标注效果,并利用SVM分类器对自动标记数据进行筛选,原始训练集和经过筛选的自动标注数据对模型再次进行训练,最终使用训练后的命名实体识别系统对目标文本进行多模型识别、多级融合和实体标签对齐,得到目标文本中的实体。采用本发明可提升少样本场景下实体识别的准确率、召回率和F1值。

Description

一种基于预训练语言模型的命名实体识别方法
技术领域
本发明涉及自然语言处理命名实体识别领域,具体涉及一种基于预训练语言模型对文本序列中命名实体进行识别的方法。
背景技术
自然语言是人类交流和思维的主要工具,是人类区别其他动物的本质特性,人类的多种智能都与语言有着密切的关系,而文字是记录语言的工具,人类的逻辑思维以语言为形式,人类的绝大部分知识也是以语言文字的形式记载和流传下来的。文本中大量的文字能够表达丰富的语义信息和特征内容,帮助人们理解文本所要传达的信息。在全球智能化及信息化的时代,自然语言中信息的抽取与处理技术一直是科学家们重点研究内容。人工智能技术的发展与硬件设备计算性能的提升,推动了自然语言处理领域信息抽取、文本分类、阅读理解等多项技术的深入研究。信息抽取是自然语言处理领域中的底层处理,即对文本里包含的信息进行结构化处理,并以统一的形式集成在一起,包括命名实体识别、指代消解、属性抽取、关系抽取、事件抽取等。
命名实体识别方法的研究与应用作为自然语言处理领域的一个重要分支,是信息抽取、信息检索、机器翻译、问答系统等多种自然语言处理技术必不可少的组成部分,甚至是基础部分,因而命名实体识别方法一直是热门研究的课题之一。命名实体识别是指识别文本中具有特定意义的实体。具体来说,命名实体识别指的是,从一句话中识别出人名,地名,组织名,日期时间,这些人名,地名等被识别的目标就是命名实体,命名实体还可以是很多其它有意义的目标,比如产品,公司,专有名词等等。通过识别出来的命名实体,可以形成实体数据库,并为后续的关系抽取、舆情分析、知识图谱、指代消解和问答系统等任务提供前提。因此对命名实体识别技术展开研究是十分必要的。
命名实体识别方法主要分为三大类,基于规则和词典的算法、基于统计机器学习的算法和基于深度学习的算法。基于规则和词典的算法使用语言学专家手工构造规则模板,以模式和字符串相匹配为主要手段,这类方法依赖于知识库和词典的建立,代价大,系统建设周期长、移植性差。基于统计机器学习的算法,主要包括隐马尔可夫模型、最大熵、支持向量机、条件随机场等,算法训练一个判别器,对输入的各种特征进行判断,最终得到对应实体标签,这类方法需要依据特定命名实体识别所面临的主要困难和所表现出的特性,考虑选择能有效反映该类实体特性的特征集合。基于深度学习的算法利用神经网络提取的深层文本特征,具有语义更加丰富、表达能力更强的特点,相比前两类算法效果有提升,也更为方便。在实际场景下,实体识别任务往往面临标注数据少,标注成本高,实体类型不通用的问题,导致命名实体识别需要解决模型过拟合、实体长度较长等问题。命名实体识别方法面临实际场景中的情况,会因为标注的可用于训练的数据少、要识别的实体较通用领域数据差异较大等问题增加识别难度。
现实任务中往往有着大量的未标记数据,尤其是在互联网技术高速发展的今天,能够从网上获取的数据十分庞大。基于深度学习的命名实体识别算法能够提取文本中深层的语义、语法特征,利用这些深层特征的不变性提高识别率,但这往往需要以大量的标注数据为支撑,由于现实中命名实体识别样本标注成本高,人工获得大量标注数据不现实,在样本缺少的情况下,深度学习模型学到的特征往往只适用于训练数据,模型泛化能力差,在其他数据上的效果不好。因此如果能将容易获得的大量未标记数据利用起来,有助于提高命名实体识别的识别率。
利用未标记数据是命名实体识别的一个重要研究点。现有的命名实体识别算法致力于加强词汇信息的引入,提高实体边界的识别性能,从而提高实体识别的整体性能。未标记数据中存在大量对实体识别任务有帮助的实体信息,并且深度学习模型也可以从无标记数据中学到更丰富、更泛化的特征。利用未标记数据中大量实体信息和潜在的特征,能够有效地提高在少样本场景下模型的泛化能力和实体识别的准确率、召回率和F1值。
因此,如何充分利用大量的未标记数据,结合未标记数据中的实体信息,提供一种准确率、召回率和F1值更高的命名实体识别方法,是本领域技术人员正在探讨的热点问题。
发明内容
本发明要解决的技术问题是提供一种基于预训练语言模型的命名实体识别方法。此方法基于深度学习的算法,利用大量未标记数据中大量对实体识别任务有帮助的实体信息,提高命名实体识别的准确率、召回率和F1值,实现在少样本情况下仍然能够有效识别命名实体的要求。
为解决上述技术问题,本发明技术方案是:先构建由多模型识别模块、多级融合模块、判别模块、实体标签对齐器和未标记数据库构成的命名实体识别系统。使用实体样本少、领域窄的数据集(如CCKS2020任务八“面向试验鉴定的命名实体识别”评测任务发布的数据集MilNER)作为多模型识别模块的训练集和测试集、采用有监督的方式对多模型识别模块进行训练,得到多模型识别模块的网络权重参数。之后采用命名实体识别系统对多模型识别模块训练集文本进行多模型识别、多级融合,得到训练集文本的预测标签序列和全连接层输出。利用训练集的实际标签序列、从多级融合模块获得的预测标签序列和从多模型识别模块获得的全连接层输出构建对判别模块进行训练的训练数据集,采用有监督的方式对判别模块进行训练,得到判别模块的网络权重参数。命名实体识别系统对未标记数据库的文本进行多模型识别、多级融合,得到未标记数据的预测标签,判别模块对未标记数据的预测标签进行处理和判别,得到伪标签数据集。利用伪标签数据集和多模型识别模块的训练集一起对多模型识别模块进行训练,更新多模型识别模块的网络权重参数。最后训练后的命名实体识别系统对目标文本进行多模型识别、多级融合,得到目标文本的预测标签序列,实体标签对齐器根据目标文本和目标文本对应的预测标签序列,得到目标文本中的命名实体。
本发明包括以下步骤:
第一步:构建命名实体识别系统。命名实体识别系统由多模型识别模块、多级融合模块、判别模块、实体标签对齐器、未标记数据库D构成。
未标记数据库D存储由互联网等渠道获取的文本集合,包含E条文本,E为正整数且1≤E≤7000,与多模型识别模块、判别模块相连。未标记数据库D供多模型识别模块和判别模块读取。D={D1,D2,...,De,...,DE},De表示未标记数据库中第e个文本;其中
Figure BDA0003298477990000033
Figure BDA0003298477990000031
N为正整数,De表示长度为N的文本(以字符为单位,De长度为N说明De包含N个字符)。
多模型识别模块与用户、多级融合模块和判别模块相连,当从多模型识别模块训练集接收到训练集文本集合X(X={X1,X2,...,Xc,...,XC},其中Xc表示训练集中第c个文本,1≤c≤C,C为正整数,其中
Figure BDA0003298477990000032
N为正整数,Xc表示长度为N的文本(以字符为单位,Xc长度为N说明Xc包含N个字符))时,多模型识别模块对X中每个文本分别进行多模型识别,得到多模型识别结果集合F(X)和全连接层输出集合Z(X),F(X)={F(X1),F(X2),...,F(Xc),...,F(XC)},Z(X)={Z(X1),Z(X2),...,Z(Xc),...,Z(XC)},其中F(Xc)表示多模型识别模块对文本Xc的分类结果,Z(Xc)表示多模型识别模块对文本Xc的全连接层输出;当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块;当对多模型识别模块进行训练时,多模型识别模块更新参数;当从多模型识别模块测试集接收到测试集文本集合V(V={V1,V2,...,Vu,...,VU},其中Vu表示测试集中第u个文本)时,多模型识别模块对V中每个文本分别进行多模型识别,得到多模型识别结果集合F(V)(F(V)={F(V1),F(V2),...,F(Vu),...,F(VU)},其中F(Vu)表示多模型识别模块对文本Vu的分类结果),将F(V)输出到多级融合模块;当从未标记数据库D中读取数据时,多模型识别模块对D中每个文本分别进行多模型识别,得到多模型识别结果集合F(D)(F(D)={F(D1),F(D2),...,F(De),...,F(DE)},其中F(De)表示多模型识别模块对文本De的分类结果)和全连接层输出集合Z(D)(Z(D)={Z(D1),Z(D2),...,Z(De),...,Z(DE)},其中Z(De)表示多模型识别模块对文本De的全连接层输出),将F(D)输出到多级融合模块,将Z(D)输出到判别模块;当接收到用户输入的文本T时,多模型识别模块对T进行多模型识别,得到多模型识别结果F(T),将F(T)输出到多级融合模块。
多模型识别模块由6M个实体识别模型构成。这些模型共分为6组,分别对应6种模型框架,每组M(3≤M≤7,优选M=5)个模型只有随机种子(即控制训练过程中模型参数有序随机初始化的超参数,以下简称Seed)不同。6种模型框架都由3部分组成:预训练编码器、下游编码器和解码器。预训练编码器为RoBERTa网络(即RoBERTa预训练模型,见文献“RoBERTa:A Robustly Optimized BERT Pretraining Approach”,2019),下游编码器为BiLSTM网络(即双向长短时记忆循环网络,见文献“Bidirectional LSTM-CRF Models forSequence Tagging.”,2015)或TENER网络(见文献“TENER:Adapting Transformer Encoderfor Named Entity Recognition.”,ACL2019),解码器为CRF(即全连接层和条件随机场,见文献“Conditional Random Fields:Probabilistic Models for Segmenting andLabeling Sequence Data.”,2001)或Span(见文献“Span-based Joint Entity andRelation Extraction with Transformer Pre-training.”,2019)或Softmax。这六种模型框架分别由RoBERTa、BiLSTM或TENER、CRF或Span或Sotfmax组合而成。(1)net1为RoBERTa+BiLSTM+CRF架构:这种模型框架是目前命名实体识别较常用的框架,预训练编码器采用RoBERTa预训练模型对文本进行预编码,得到预编码结果,下游编码器采用BiLSTM网络对预编码结果进行下游编码,解码器采用CRF对编码结果进行解码得到实体标签序列;(2)net2为RoBERTa+BiLSTM+Span架构:与net1相比,net2的预训练编码器、下游编码器与net1的相同,解码器与net1的不同,解码器采用span网络对编码结果进行解码得到实体识别结果,具体来说,就是将下游编码先送入一个全连接层,再将得到的结果分别送入另外3个全连接层,分别得到实体首字符的识别结果、实体尾字符的识别结果和实体类型的识别结果,之后对3种识别结果进行整合得到实体标签序列;(3)net3为RoBERTa+BiLSTM+Softmax架构,与net1相比,net3的预训练编码器、下游编码器与net1的相同,解码器与net1的不同,net3的解码器采用全连接层加Softmax层对编码结果进行解码得到实体标签序列;(4)net4为RoBERTa+TENER+CRF架构:与net1相比,net4的预训练编码器、解码器与net1的相同,下游编码器与net1的不同,下游编码器采用TENER网络对预编码结果进行下游编码;(5)net5为RoBERTa+TENER+Span架构,即预训练编码器为RoBERTa预训练模型(与net1相同)、下游编码器为TENER网络(与net4相同)和解码器为Span网络(与net2相同);(6)net6为RoBERTa+TENER+Softmax架构,即预训练编码器为RoBERTa预训练模型(与net1相同)、下游编码器为TENER网络(与net4相同)和解码器为Softmax(与net3相同)。6M个实体识别模型记为net1,...,netm,...,net6M,1≤m≤6M,其中net1~netM为net1,netM+1~net2M为net2,net2M+1~net3M为net3,net3M+1~net4M为net4,net4M+1~net5M为net5,net5M+1~net6M为net6。
当多模型识别模块接收到训练集文本集合X时,net1,...,netm,...,net6M分别对X中每个文本进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(X),F(X)={F(X1),F(X2),...,F(Xc),...,F(XC)}。F(Xc)表示Xc的分类结果集合,F(Xc)={F(Xc)1,F(Xc)2,...,F(Xc)m,...,F(Xc)6M},其中F(Xc)m表示netm网络对Xc的分类结果,
Figure BDA0003298477990000051
其中
Figure BDA0003298477990000052
表示文本Xc输入到netm后第n个字符
Figure BDA00032984779900000511
得到的对应标签。同时得到Xc在每个解码器中第一个全连接层的输出结果集合
Figure BDA0003298477990000053
Z(Xc)m表示文本Xc输入到netm后得到的全连接层输出。对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出集合ZZ(Xc),ZZ(Xc)={Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6},Z(Xc)netr表示netr对Xc的M个全连接层输出平均后的结果,1≤r≤6,对ZZ(Xc)中的6个元素进行拼接后,得到拼接后的全连接层输出Z(Xc),Z(Xc)=Concat(Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6),Concat()表示拼接操作,令全连接层输出集合Z(X)={Z(X1),Z(X2),...,Z(Xc),...,Z(XC)}。当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块。
当生成伪标签数据集时,多模型识别模块从未标记数据库D读取文本,net1,...,netm,...,net6M分别对D中E个文本进行预训练编码、下游编码和解码,得到E个文本的分类结果集合F(D),F(D)={F(D1),F(D2),...,F(De),...,F(DE)}。其中
Figure BDA0003298477990000054
Figure BDA0003298477990000055
N为正整数,De表示长度为N的文本(以字符为单位,De长度为N说明De包含N个字符)。F(De)表示De的分类结果集合,F(De)={F(De)1,F(De)2,...,F(De)m,...,F(De)6M},其中F(De)m表示netm网络对De的分类结果,
Figure BDA0003298477990000056
其中
Figure BDA0003298477990000057
表示文本De输入到netm后第n个字符
Figure BDA0003298477990000058
得到的对应标签。同时得到De在每个解码器中第一个全连接层的输出结果集合
Figure BDA0003298477990000059
Figure BDA00032984779900000510
Z(De)m表示文本De输入到netm后得到的全连接层输出;对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出ZZ(De),ZZ(De)={Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6},Z(De)netr表示netr对De的M个全连接层输出平均后的结果,1≤r≤6,对ZZ(De)中的6个元素进行拼接后,得到拼接后的全连接层输出Z(De),Z(De)=Concat(Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6),令全连接层输出Z(D)={Z(D1),Z(D2),...,Z(De),...,Z(DE)}。将F(D)送入多级融合模块,将Z(D)送入判别模块。
当多模型识别模块接收到测试集文本集合V={V1,V2,...,Vu,...,VU}时,net1,...,netm,...,net6M分别对V中每个文本分别进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(V),F(V)={F(V1),F(V2),...,F(Vu),...,F(VU)}。其中
Figure BDA0003298477990000061
Figure BDA0003298477990000062
N为正整数,Vu表示长度为N的文本(以字符为单位,Vu长度为N说明Vu包含N个字符,
Figure BDA0003298477990000063
为Vu的第n个字符),1≤u≤U,U为正整数。F(Vu)表示Vu的分类结果集合,F(Vu)={F(Vu)1,F(Vu)2,...,F(Vu)m,...,F(Vu)6M},其中F(Vu)m表示netm网络对Vu的分类结果,
Figure BDA0003298477990000064
Figure BDA0003298477990000065
其中
Figure BDA0003298477990000066
表示文本Vu输入到netm后第n个字符
Figure BDA0003298477990000067
得到的对应标签。将F(V)送入多级融合模块。
当多模型识别模块接收到用户输入的文本T=(t1,t2,...,tn,...,tN)时(T表示长度为N的文本,以字符为单位,T长度为N说明T包含N个字符),net1,...,netm,...,net6M分别对T进行预训练编码、下游编码和解码,得到分类结果集合F(T),F(T)={F(T)1,F(T)2,...,F(T)m,...,F(T)6M},其中F(T)m表示netm网络对T的分类结果,F(T)m={F(T)m(t1),F(T)m(t2),...,F(T)m(tn),...,F(T)m(tN)},其中F(T)m(tn)表示文本T输入到netm后第n个字符tn得到的对应标签。将F(T)送入多级融合模块。
多级融合模块与多模型识别模块、判别模块和实体标签对齐器相连,当从多模型识别模块接收到F(X)时,采用多级融合策略对F(X)进行投票,得出X对应的预测标签序列集合Y′,将Y′送入判别模块;当从多模型识别模块接收到F(D)时,采用多级融合策略对F(D)进行投票,得出D对应的预测标签序列集合
Figure BDA0003298477990000068
Figure BDA0003298477990000069
送入判别模块;当从多模型识别模块接收到F(V)并从多模型识别模块测试集接收到测试集实际标签序列集合Y#时,采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合Y*,并根据Y*和Y#计算精确率(Precision)、召回率(Recall)和F1值(其中精确率,即查准率,表示真正正确的占所有预测为正的比例;召回率,即查全率,表示真正正确的占所有实际为正的比例;F1值=精确率×召回率×2/(精确率+召回率),是对Precision和Recall进行的整体评价)供用户查看;当从多模型识别模块接收F(T)时,采用多级融合策略对F(T)进行投票,得出T对应的标签序列YT,将YT送入实体标签对齐器。
判别模块与多模型识别模块、多级融合模块、未标记数据库相连,采用机器学习常用的支持向量机(以下简称为SVM)模型作为标签分类器,当从多模型识别模块接收到Z(X),从多级融合模块接收到Y′,从多模型识别模块训练集接收训练集实际标签序列集合Y时,判别模块根据Y′和Y生成判别模块训练集标签S,并根据Z(X)和S构建判别模块训练集Q,之后对判别模块进行训练;当从未标记数据库读取到文本集合D,从多模型识别模块接收到Z(D),从多级融合模块接收到
Figure BDA0003298477990000071
时,判别模块对Z(D)进行判断,判断是否将
Figure BDA0003298477990000072
加入伪标签数据集R。最后将R发送给多模型识别模块。
实体标签对齐器与多级融合模块和用户相连,从多级融合模块接收YT,将用户输入的文本T和YT对应起来,得到T中各实体类别的实体列表。
第二步:准备训练多模型识别模块的数据集。选用标注样本个数L小于1000、来自同一垂直领域(即某一行业的某个部分,如军事领域下的武器装备部分等)的数据集(如MilNER数据集,MilNER是CCKS2020任务八“面向试验鉴定的命名实体识别”评测任务发布的数据集,包含400条标注样本(L=400))作为原始数据集,令数据集中标注样本数为L,按4∶1的比例将原始样本划分为训练集和测试集,每条标注样本包含一条文本和其对应的实际标签(本发明中标签采用BIOES标注方式,B表示实体头部标签,I表示实体中部标签,E表示实体尾部标签,O表示非实体标签,S表示单实体标签,每个标签还包含有实体类型信息,分别以1,2,...,a,...,A表示,A为原始数据集中的实体类型数,如标签“B-a”表示标签对应的字符为实体头部,且字符所在的实体属于第a类实体)。训练集中的文本集合构成训练集文本集合X,训练集中的实际标签序列集合构成训练集实际标签序列集合Y,训练集共L(X)条数据;测试集中的文本集合构成测试集文本集合V,测试集样本中的实际标签序列集合构成测试集实际标签序列集合Y#,测试集共L(V)条数据。L=L(X)+L(V)。
第三步:使用多模型识别模块训练集采用多模型识别模块训练方法训练多模型识别模块。采用有监督的方式对多模型识别模块中的6M个模型同时进行训练,得到6M组不同的模型参数权重。方法如下:
3.1初始化权重参数,使用网上发布的预训练模型参数(网址为:https:// pan.baidu.com/s/1Rk_QWqd7-wBTwycr91bmug,2019-09-08)初始化RoBERTa网络权重参数集合WR中的所有元素值;将BiLSTM网络权重参数集合WB中所有元素值都初始化为[0,1]之间的随机数;将TENER网络权重参数集合WT中所有元素值都初始化为[0,1]之间的随机数;将CRF网络权重参数集合WC中所有元素值都初始化为[0,1]之间的随机数;将Span网络权重参数集合WS中所有元素值都初始化为[0,1]之间的随机数;将Softmax网络权重参数集合WSo中所有元素值都初始化为[0,1]之间的随机数。
3.2设置网络训练超参数:网络模型学习率(learningRate)、批处理尺寸(batchsize)、文本最大长度(maxlen)、随机种子(Seed,实验中设置为2021),实验证明,learningRate=0.00002,batchsize=8,maxlen=512时,实体识别的F1值最高。
3.3迭代计算每一个网络模型输出分布与真实实体标签分布差距,得到损失值,最小化损失值并更新网络参数,直到满足迭代次数要求,得到权重参数。具体方法如下:
3.3.1初始化训练迭代参数itretation=1;
3.3.2每个网络模型都从多模型识别模块训练集中接收训练集文本集合X,X={X1,X2,...,Xc,...,XC},
Figure BDA0003298477990000081
1≤C≤L(X),1≤n≤N,
Figure BDA0003298477990000082
表示第c个文本的第n个字符,N表示文本的长度,经过预编码、下游编码和解码得到当前参数下网络模型对于标签的输出分布,计算预测的输出分布与真实分布的差距,得到损失值Loss(解码器为CRF的模型由CRF得到;解码器为Softmax的模型由1个常用的损失函数交叉熵损失函数得到;解码器为Span的模型由3个交叉熵损失函数(分别计算实体头字符损失、实体尾字符损失和实体类型损失)的和得到),使用Adam优化算法(见文献“Kingma D P,Ba J.Adam:Amethod for stochastic optimization[J].arXiv preprint arXiv:1412.6980,2014”,Kingma的论文:Adam,一种随机优化方法)对Loss最小化以更新一次网络权重参数。
3.3.3令itretation=itretation+1,如果itretation≤迭代阈值K,K是[1,30]内的整数,(实验证明,训练迭代10(即K为10)次时,实体识别的F1值最高),转3.3.2;否则说明训练满足迭代次数要求,训练结束,将训练后的WR作为RoBERTa网络的权重参数集合,将训练后的WB作为BiLSTM网络的权重参数集合,将训练后的WT作为TENER网络的权重参数集合,将训练后的WS作为Span网络的权重参数集合,将训练后的WC作为CRF的权重参数集合,将训练后的WSo作为Softmax的权重参数集合,得到训练好的6M个模型,也即得到训练好的多模型识别模块,转第四步。
第四步:采用测试方法测试当前命名实体识别系统性能指标。训练好的多模型识别模块接收测试集文本集合V,V={V1,V2,...,Vu,...,VU},1≤U≤L(V)且U为正整数(其中u表示第u个测试集文本序号,Vu表示V中第u个测试集文本,
Figure BDA0003298477990000083
得到实体识别结果F(V);多级融合模块采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合
Figure BDA0003298477990000091
其中
Figure BDA0003298477990000092
Figure BDA0003298477990000093
表示文本Vu的第n个字符最终预测得到的伪标签,并根据Y*和多模型识别模块测试集实际标签序列集合Y#计算精确率、召回率和F1值,
Figure BDA0003298477990000094
具体方法为:
4.1初始化变量u=1、tp=0、fp=0、fn=0,其中tp表示正确预测的数目,fp表示误判的数目,fn表示漏判的数目;
4.2训练好的多模型识别模块接收测试集文本集合V,对V中的第u个文本Vu进行识别。多模型识别模块对Vu进行预编码、下游编码和解码,得到6M个实体识别结果集合F(Vu),F(Vu)={F(Vu)1,F(Vu)2,...,F(Vu)m,...,F(Vu)6M},其中F(Vu)m表示netm网络对Vu的分类结果,
Figure BDA0003298477990000095
其中
Figure BDA0003298477990000096
表示文本Vu输入到netm后第n个字符
Figure BDA0003298477990000097
得到的对应标签,将F(Vu)送入多级融合模块。
4.3多级融合模块对F(Vu)进行多级融合。多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,得到Vu的预测标签序列
Figure BDA0003298477990000098
Figure BDA0003298477990000099
Figure BDA00032984779900000910
表示Vu的第n个字符预测的伪标签。
4.4多级融合模块根据预测标签序列
Figure BDA00032984779900000911
和Vu的实际标签序列
Figure BDA00032984779900000912
Figure BDA00032984779900000913
Figure BDA00032984779900000914
中的所有实体进行判断:当一实体在
Figure BDA00032984779900000915
Figure BDA00032984779900000916
中同时出现时,令tp=tp+1;当一实体仅在
Figure BDA00032984779900000917
出现时,令fn=fn+1;当一实体仅在
Figure BDA00032984779900000918
出现时,令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,D={D1,D2,...,De,...,DE}(其中
Figure BDA00032984779900000919
N为正整数,De表示D中第e个长度为N的文本,以字符为单位,De长度为N说明De包含N个字符)。
第六步:构建判别模块训练集Q。训练好的多模型识别模块接收多模型识别模块训练集中的训练文本集合X,X={X1,X2,...,Xc,...,XC},对X进行识别,得到判别模块训练集输入Z(X)和实体识别结果F(X);多级融合模块接收实体识别结果F(X),对F(X)进行多级融合,得到X对应的预测序列集合Y′,Y′={Y1′,Y2′,...,Yc′,...,YC′},其中
Figure BDA0003298477990000101
Figure BDA0003298477990000102
表示文本Xc的第n个字符最终预测的预测标签;判别模块接收Y′和多模型识别模块训练集实际标签序列Y,Y={Y1,Y2,...,Yc,...,YC}(其中Yc为Xc对应的实际标签序列,
Figure BDA0003298477990000103
Figure BDA0003298477990000104
Figure BDA0003298477990000105
表示文本Xc的第n个字符的实际标签),得到判别模块训练集标签S,将Z(X)与S结合得到判别模块训练集Q={Q1,Q2,...,Qc,...,QC},其中Qc=(Z(Xc),Sc),表示Q中第c个样本,Z(Xc)表示Qc的输入,Sc表示Qc的实际输出。具体方法为:
6.1初始化变量c=1;
6.2构建判别模块训练集样本Qc的输入Z(Xc)。使用训练好的多模型识别模块对文本Xc进行预编码、下游编码和全连接层转化(解码器中的首个全连接层),得到6M个全连接层输出ZXc={Z(Xc)1,Z(Xc)2,...,Z(Xc)m,...,Z(Xc)6M},Z(Xc)m表示文本Xc输入到netm后得到的全连接层输出,对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出集合ZZ(Xc),ZZ(Xc)={Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6},Z(Xc)netr表示netr对Xc的M个全连接层输出平均后的结果,1≤r≤6,令Z(Xc)=Concat(Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6),Concat()表示拼接操作,将Z(Xc)作为训练集样本Qc的输入送入判别模块。
6.3使用训练好的多模型识别模块对文本Xc进行预编码、下游编码和解码,得到6M个实体识别结果集合F(Xc),F(Xc)={F(Xc)1,F(Xc)2,...,F(Xc)m,...,F(Xc)6M},其中F(Xc)m表示netm网络对Xc的分类结果,
Figure BDA0003298477990000106
Figure BDA0003298477990000107
Figure BDA0003298477990000108
表示文本Xc输入到netm后第n个字符
Figure BDA0003298477990000109
得到的对应标签,将F(Xc)送入多级融合模块。
6.4多级融合模块对F(Xc)进行多级融合。多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步对第一步投票得到的6个投票结果进行二级投票,得到文本Xc多级融合后的预测标签序列
Figure BDA00032984779900001014
Figure BDA00032984779900001010
Figure BDA00032984779900001011
表示文本Xc的第n个字符最终预测的预测标签。
6.5判别模块从多级融合模块接收Yc′、Yc和Z(Xc),生成判别模块训练集。具体方法为:
6.5.1判别模块根据Yc′和Yc,生成Qc的实际输出Sc。其中
Figure BDA00032984779900001012
Figure BDA00032984779900001013
Figure BDA0003298477990000111
即当实体的预测标签与实体真实标签相同时
Figure BDA0003298477990000112
为0,表示接受实体的预测标签作为实体的实际标签,否则
Figure BDA0003298477990000113
为1,表示不接受实体的预测标签作为实体的实际标签。
6.5.2判别模块将Qc加入到判别模块训练集Q中。
6.6如果c≤C,令c=c+1,转6.2;否则,说明已经通过多模型识别训练集生成了判别模块训练集Q,转第七步。
第七步:使用第六步得到的判别模块训练集Q,采用libsvm工具包(libsvm3.21,python版,见文献“Chang C C,CJ Lin*.LIBSVM:a Library for Support VectorMachines.”,2011)对判别模块进行有监督的训练,得到训练后的判别模块,即SVM判别器。具体方法如下:
7.1调用libsvm工具包中的grid.py自动搜素得到SVM核函数径向基内核(RBF核)的两个超参数:惩罚因子和影响因子。
7.2调用libsvm工具包中的svm-train.exe训练判别模块,其中超参数设置为7.1得到的惩罚因子和影响因子,得到训练后的判别模块,即SVM判别器。
第八步:使用训练后的多模型识别模块、多级融合模块和训练后的判别模块生成伪标签数据集R。多模型识别模块接收未标记数据库D中的文本,进行多模型识别,得到全连接层输出集合Z(D)和实体识别结果F(D),Z(D)={Z(D1),Z(D2),...,Z(De),...,Z(DE)},F(D)={F(D1),F(D2),...,F(De),...,F(DE)};多级融合模块从多模型识别模块接收F(D)并进行多级融合,得到D对应的预测标签
Figure BDA0003298477990000114
Figure BDA0003298477990000115
其中
Figure BDA0003298477990000116
训练后的判别模块从多模型识别模块接收全连接层输出Z(D)、从多级融合模块接收
Figure BDA0003298477990000117
从未标记数据库接收文本集合D,对Z(D1),Z(D2),...,Z(De),...,Z(DE)逐项进行判断,令
Figure BDA0003298477990000118
Figure BDA0003298477990000119
Re表示第e个候补的伪标签样本,包含未标记数据文本De和De对应的预测标签序列
Figure BDA00032984779900001110
判断集合{R1,R2,...,Re,...,RE}中各项能否作为新的训练样本加入伪标签数据集R中。具体方法为:
8.1初始化e=1;
8.2多模型识别模块对未标记数据库D中的第e个文本De进行识别。使用训练好的多模型识别模块对文本De进行预编码、下游编码和全连接层转化(解码器中的首个全连接层),得到6M个全连接层输出
Figure BDA00032984779900001111
对6组各M个全连接层输出进行平均,得到输出ZZ(De),ZZ(De)={Z(De)net1,Z(De)net2,Z(De)net3,Z(De)nete,Z(De)net5,Z(De)net6},对ZZ(De)进行拼接,得到Z(De)=Concat(Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6),其中Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6表示De对应的6种不同的模型框架的输出,将Z(De)输出到判别模块;使用训练好的多模型识别模块对文本De进行预编码、下游编码和解码,得到6M个实体识别结果F(De)={F(De)1,F(De)2,...,F(De)m,...,F(De)6M},其中F(De)m表示netm网络对De的分类结果,
Figure BDA0003298477990000121
Figure BDA0003298477990000122
Figure BDA0003298477990000123
表示文本De输入到netm后第n个字符
Figure BDA0003298477990000124
得到的对应标签,并将F(De)送入多级融合模块。
8.3多级融合模块对实体识别结果F(De)进行多级融合。与4.3步一样,多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,最终得到文本De的预测标签序列
Figure BDA0003298477990000125
Figure BDA0003298477990000126
送入判别模块。
8.4判别模块从多模型识别模块接收Z(De),对Z(De)进行判别分类,如果结果为0,则说明样本Re可以作为训练数据加入到R中,
Figure BDA0003298477990000127
(De作为训练文本,
Figure BDA0003298477990000128
作为训练文本的实际标签序列),将样本Re加入伪标签数据集R中,转8.4;如果结果为1,则说明样本Re质量不高,不能作为训练数据加入到R中,直接转8.4。
8.5如果e≤E,令e=e+1,转8.2;否则,说明已经对全部未标记数据进行了判别,并且筛选得到了伪标签数据集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长度为N说明T包含N个字符),T={t1,t2,...,tn,...,tN},tn表示文本T的第n个字符。具体方法为:
10.1多模型识别模块对文本T进行识别。使用多模型识别模块对文本T进行预编码、下游编码和解码,得到6M个实体识别结果集合F(T)={F(T)1,F(T)2,...,F(T)m,...,F(T)6M},其中F(T)m表示netm网络对T的分类结果,F(T)m={F(T)m(t1),F(T)m(t2),...,F(T)m(tn),...,F(T)m(tN)},其中F(T)m(tn)表示文本T输入到netm后第n个字符tn得到的对应标签,将F(T)送入多级融合模块。
10.2多级融合模块对F(T)进行多级融合。多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,最终得到文本T的预测标签序列
Figure BDA0003298477990000131
Figure BDA0003298477990000132
10.3使用实体标签对齐器将文本T的预测标签序列YT与用户接收文本T对应,得到每个实体类别的实体列表。具体方法如下:
10.3.1初始化A个空列表集合,用{list1,list2,...,lista,...,listA}表示,分别对应A个实体类别,初始化n=1,初始化预测实体字符序列entity为空字符,entity用来暂时存储预测的实体字符序列。
10.3.2如果n≤N,令n=n+1,转10.3.3;如果n>N,说明已经对全部标签进行了判别,得到了A个实体类别对应的实体列表,即对T的识别结果,每个实体列表对应一个类别,实体列表中为同一类别的实体,转第十一步。
10.3.3根据文本T的预测标签序列YT的第n个标签
Figure BDA0003298477990000133
执行不同的操作。如果
Figure BDA0003298477990000134
表示非实体标签,令n=n+1,转10.3.2;如果
Figure BDA0003298477990000135
表示第a(1≤a≤A)类实体的实体头部标签或第a类实体的实体中部标签,将
Figure BDA0003298477990000136
对应的T中字符tn插入到entity尾部,令n=n+1,转10.3.2;如果
Figure BDA0003298477990000137
表示第a类实体的实体尾部标签或第a类实体的单实体标签,将
Figure BDA0003298477990000138
对应的T中字符tn插入到entity尾部,并将entity加入第a类实体对应的实体列表lista中,之后令entity为空字符,n=n+1,转10.3.2。
第十一步,结束。
采用本发明可以达到以下技术效果:
1.本发明第一步构建了一个完整的命名实体识别系统,融合了多模型识别模块、多级融合模块、判别模块和实体标签对齐器。多模型识别模块采用RoBERTa作为预训练编码器,下游编码器采用BiLSTM或TENER,解码器分别采用CRF、Span网络和Softmax。选择CCKS2020任务八“面向试验鉴定的命名实体识别”评测任务发布的数据集作为训练多模型识别模块的数据。首先RoBERTa对输入文本进行了预编码,BiLSTM或TENER对预编码进行了下游编码,CRF、Span和Softmax对编码结果进行了解码,得到了6M组分类结果,使用多模型识别的方式,能够得到输入文本更多更全面的特征,充分挖掘数据隐含的信息;多级融合模块对这6M组分类结果进行一级投票和二级投票,获得输入文本的最终标签序列,通过这样的融合方式,将获得更好的实体识别效果,使得实体识别的准确率、召回率和F1值较背景技术所述的方法有所提高。
2.本发明第九步使用少量不易获取的人工标记数据,同时有效利用了大量容易得到的未标记数据,提升了少样本场景下实体识别的准确率、召回率和F1值,具有较强的工业应用前景。
3.本发明构建的判别模块,使用SVM作为判别器(相比于基于深度学习的方法,SVM速度更快,能够达到短时间内生成大量伪标签样本的目的),选择多模型识别模块中全连接层的输出作为判别模块的输入数据,使用多级融合模块产生的预测结果和数据真实标签的一致性作为判别模块的标签对SVM判别器进行训练,这种方式能够筛选得到质量较高的伪标签数据集,防止错误的预测标签使模型学到错误的信息而使模型性能下降。
4.本发明第五步构建了一个用于训练实体标签挑选系统中判别模块的数据集,这个数据集能使SVM分类器具有良好的判别能力,从而提高最终实体识别的准确率、召回率和F1值。
附图说明:
图1为本发明第一步构建的命名实体识别系统逻辑结构图。
图2为本发明总体流程图。
图3为本发明第一步构建的命名实体识别系统的多模型识别模块逻辑结构图。
图4为本发明中多级融合模块对实体识别精确率、召回率和F1值影响的示意图,说明本发明采用的多级融合方法是有效的。通过图4可以看出,使用多级融合模块较仅使用单模型进行实体识别提高了精确率、召回率和F1值这三项性能指标。说明本发明采用的多级融合的方法是确实有效的。
图5为本发明实体标签挑选系统生成的样本数量对命名实体识别F1值影响的示意图,说明本发明能够将大量的未标记数据利用起来,通过实体标签挑选系统,将蕴含丰富实体信息的高质量样本挑选出来,让模型获得更多实体信息,达到提升模型效果的作用,缓解了标记样本少的问题。
具体实施方式
图2是本发明整体流程图;如图2所示,本发明包括以下步骤:
第一步:构建命名实体识别系统。命名实体识别系统如图1所示,由多模型识别模块、多级融合模块、判别模块、实体标签对齐器、未标记数据库构成。
未标记数据库D存储由互联网等渠道获取的文本集合,包含E条文本,E为正整数且1≤E≤7000,与多模型识别模块、判别模块相连。未标记数据库D供多模型识别模块和判别模块读取。D={D1,D2,...,De,...,DE},De表示未标记数据库中第e个文本;其中
Figure BDA0003298477990000151
Figure BDA0003298477990000152
N为正整数,De表示长度为N的文本(以字符为单位,De长度为N说明De包含N个字符)。
多模型识别模块与用户、多级融合模块和判别模块相连,当从多模型识别模块训练集接收到训练集文本集合X(X={X1,X2,...,Xc,...,XC},其中Xc表示训练集中第c个文本,1≤c≤C,C为正整数,其中
Figure BDA0003298477990000153
N为正整数,Xc表示长度为N的文本(以字符为单位,Xc长度为N说明Xc包含N个字符))时,多模型识别模块对X中每个文本分别进行多模型识别,得到多模型识别结果集合F(X)和全连接层输出集合Z(X),F(X)={F(X1),F(X2),...,F(Xc),...,F(XC)},Z(X)={Z(X1),Z(X2),...,Z(Xc),...,Z(XC)},其中F(Xc)表示多模型识别模块对文本Xc的分类结果,Z(Xc)表示多模型识别模块对文本Xc的全连接层输出;当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块;当对多模型识别模块进行训练时,多模型识别模块更新参数;当从多模型识别模块测试集接收到测试集文本集合V(V={V1,V2,...,Vu,...,VU},其中Vu表示测试集中第u个文本)时,多模型识别模块对V中每个文本分别进行多模型识别,得到多模型识别结果集合F(V)(F(V)={F(V1),F(V2),...,F(Vu),...,F(VU)},其中F(Vu)表示多模型识别模块对文本Vu的分类结果),将F(V)输出到多级融合模块;当从未标记数据库D中读取数据时,多模型识别模块对D中每个文本分别进行多模型识别,得到多模型识别结果集合F(D)(F(D)={F(D1),F(D2),...,F(De),...,F(DE)},其中F(De)表示多模型识别模块对文本De的分类结果)和全连接层输出集合Z(D)(Z(D)={Z(D1),Z(D2),...,Z(De),...,Z(DE)},其中Z(De)表示多模型识别模块对文本De的全连接层输出),将F(D)输出到多级融合模块,将Z(D)输出到判别模块;当接收到用户输入的文本T时,多模型识别模块对T进行多模型识别,得到多模型识别结果F(T),将F(T)输出到多级融合模块。
多模型识别模块如图3所示,由6M个实体识别模型构成。这些模型共分为6组,分别对应6种模型框架,每组M(3≤M≤7,优选M=5)个模型只有随机种子Seed不同。6种模型框架都由3部分组成:预训练编码器、下游编码器和解码器。预训练编码器为RoBERTa网络,下游编码器为BiLSTM网络或TENER网络,解码器为CRF或Span或Softmax。这六种模型框架分别由RoBERTa、BiLSTM或TENER、CRF或Span或Sotfmax组合而成。(1)net1为RoBERTa+BiLSTM+CRF架构:这种模型框架是目前命名实体识别较常用的框架,预训练编码器采用RoBERTa预训练模型对文本进行预编码,得到预编码结果,下游编码器采用BiLSTM网络对预编码结果进行下游编码,解码器采用CRF对编码结果进行解码得到实体标签序列;(2)net2为RoBERTa+BiLSTM+Span架构:与net1相比,net2的预训练编码器、下游编码器与net1的相同,解码器与net1的不同,解码器采用span网络对编码结果进行解码得到实体识别结果,具体来说,就是将下游编码先送入一个全连接层,再将得到的结果分别送入另外3个全连接层,分别得到实体首字符的识别结果、实体尾字符的识别结果和实体类型的识别结果,之后对3种识别结果进行整合得到实体标签序列;(3)net3为RoBERTa+BiLSTM+Softmax架构,与net1相比,net3的预训练编码器、下游编码器与net1的相同,解码器与net1的不同,net3的解码器采用全连接层加Softmax层对编码结果进行解码得到实体标签序列;(4)net4为RoBERTa+TENER+CRF架构:与net1相比,net4的预训练编码器、解码器与net1的相同,下游编码器与net1的不同,下游编码器采用TENER网络对预编码结果进行下游编码;(5)net5为RoBERTa+TENER+Span架构,即预训练编码器为RoBERTa预训练模型(与net1相同)、下游编码器为TENER网络(与net4相同)和解码器为Span网络(与net2相同);(6)net6为RoBERTa+TENER+Softmax架构,即预训练编码器为RoBERTa预训练模型(与net1相同)、下游编码器为TENER网络(与net4相同)和解码器为Softmax(与net3相同)。6M个实体识别模型记为net1,...,netm,...,net6M,1≤m≤6M,其中net1~netM为net1,netM+1~net2M为net2,net2M+1~net3M为net3,net3M+1~net4M为net4,net4M+1~net5M为net5,net5M+1~net6M为net6。
当多模型识别模块接收到训练集文本集合X时,net1,...,netm,...,net6M分别对X中每个文本进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(X),F(X)={F(X1),F(X2),...,F(Xc),...,F(XC)}。,F(Xc)表示Xc的分类结果集合,F(Xc)={F(Xc)1,F(Xc)2,...,F(Xc)m,...,F(Xc)6M},其中F(Xc)m表示netm网络对Xc的分类结果,
Figure BDA0003298477990000161
其中
Figure BDA0003298477990000162
表示文本Xc输入到netm后第n个字符
Figure BDA0003298477990000163
得到的对应标签。同时得到Xc在每个解码器中第一个全连接层的输出结果集合
Figure BDA0003298477990000164
Figure BDA0003298477990000165
Z(Xc)m表示文本Xc输入到netm后得到的全连接层输出。对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出集合ZZ(Xc),ZZ(Xc)={Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6},Z(Xc)netr表示netr对Xc的M个全连接层输出平均后的结果,1≤r≤6,对ZZ(Xc)中的6个元素进行拼接后,得到拼接后的全连接层输出Z(Xc),Z(Xc)=Concat(Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6),Concat()表示拼接操作,令全连接层输出集合Z(X)={Z(X1),Z(X2),...,Z(Xc),...,Z(XC)}。当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块。
当生成伪标签数据集时,多模型识别模块从未标记数据库D读取文本,net1,...,netm,...,net6M分别对D中E个文本进行预训练编码、下游编码和解码,得到E个文本的分类结果集合F(D),F(D)={F(D1),F(D2),...,F(De),...,F(DE)}。其中
Figure BDA0003298477990000171
Figure BDA0003298477990000172
N为正整数,De表示长度为N的文本(以字符为单位,De长度为N说明De包含N个字符)。F(De)表示De的分类结果集合,F(De)={F(De)1,F(De)2,...,F(De)m,...,F(De)6M},其中F(De)m表示netm网络对De的分类结果,
Figure BDA0003298477990000173
其中
Figure BDA0003298477990000174
表示文本De输入到netm后第n个字符
Figure BDA0003298477990000175
得到的对应标签。同时得到De在每个解码器中第一个全连接层的输出结果集合
Figure BDA0003298477990000176
Figure BDA0003298477990000177
Z(De)m表示文本De输入到netm后得到的全连接层输出;对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出ZZ(De),ZZ(De)={Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6},Z(De)netr表示netr对De的M个全连接层输出平均后的结果,1≤r≤6,对ZZ(De)中的6个元素进行拼接后,得到拼接后的全连接层输出Z(De),Z(De)=Concat(Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6),令全连接层输出Z(D)={Z(D1),Z(D2),...,Z(De),...,Z(DE)}。将F(D)送入多级融合模块,将Z(D)送入判别模块。
当多模型识别模块接收到测试集文本集合V={V1,V2,...,Vu,...,VU}时,net1,...,netm,...,net6M分别对V中每个文本分别进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(V),F(V)={F(V1),F(V2),...,F(Vu),...,F(VU)}。其中
Figure BDA0003298477990000178
Figure BDA0003298477990000179
N为正整数,Vu表示长度为N的文本(以字符为单位,Vu长度为N说明Vu包含N个字符,
Figure BDA00032984779900001710
为Vu的第n个字符),1≤u≤U,U为正整数。F(Vu)表示Vu的分类结果集合,F(Vu)={F(Vu)1,F(Vu)2,...,F(Vu)m,...,F(Vu)6M},其中F(Vu)m表示netm网络对Vu的分类结果,
Figure BDA0003298477990000181
Figure BDA0003298477990000182
其中
Figure BDA0003298477990000183
表示文本Vu输入到netm后第n个字符
Figure BDA0003298477990000184
得到的对应标签。将F(V)送入多级融合模块。
当多模型识别模块接收到用户输入的文本T=(t1,t2,...,tn,...,tN)时(T表示长度为N的文本,以字符为单位,T长度为N说明T包含N个字符),net1,...,netm,...,net6M分别对T进行预训练编码、下游编码和解码,得到分类结果集合F(T),F(T)={F(T)1,F(T)2,...,F(T)m,...,F(T)6M},其中F(T)m表示netm网络对T的分类结果,F(T)m={F(T)m(t1),F(T)m(t2),...,F(T)m(tn),...,F(T)m(tN)},其中F(T)m(tn)表示文本T输入到netm后第n个字符tn得到的对应标签。将F(T)送入多级融合模块。
多级融合模块与多模型识别模块、判别模块和实体标签对齐器相连,当从多模型识别模块接收到F(X)时,采用多级融合策略对F(X)进行投票,得出X对应的预测标签序列集合Y′,将Y′送入判别模块;当从多模型识别模块接收到F(D)时,采用多级融合策略对F(D)进行投票,得出D对应的预测标签序列集合
Figure BDA0003298477990000185
Figure BDA0003298477990000186
送入判别模块;当从多模型识别模块接收到F(V)并从多模型识别模块测试集接收到测试集实际标签序列集合Y#时,采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合Y*,并根据Y*和Y#计算精确率、召回率和F1值供用户查看;当从多模型识别模块接收F(T)时,采用多级融合策略对F(T)进行投票,得出T对应的标签序列YT,将YT送入实体标签对齐器。
判别模块与多模型识别模块、多级融合模块、未标记数据库相连,采用机器学习常用的支持向量机(以下简称为SVM)模型作为标签分类器,当从多模型识别模块接收到Z(X),从多级融合模块接收到Y′,从多模型识别模块训练集接收训练集实际标签序列集合Y时,判别模块根据Y′和Y生成判别模块训练集标签S,并根据Z(X)和S构建判别模块训练集Q,之后对判别模块进行训练;当从未标记数据库读取到文本集合D,从多模型识别模块接收到Z(D),从多级融合模块接收到
Figure BDA0003298477990000187
时,判别模块对Z(D)进行判断,判断是否将
Figure BDA0003298477990000188
加入伪标签数据集R。最后将R发送给多模型识别模块。
实体标签对齐器与多级融合模块和用户相连,从多级融合模块接收YT,将用户输入的文本T和YT对应起来,得到T中各实体类别的实体列表。
第二步:准备训练多模型识别模块的数据集。本实施例使用MilNER数据集(MilNER是CCKS2020任务八“面向试验鉴定的命名实体识别”评测任务发布的数据集,包含4(A=4)类命名实体,400(L=400)条样本)作为原始数据集,其中320(L(X)=320)个样本作为训练集,其他80(L(V)=80)个样本作为测试集,每条样本包含一条文本和其对应的实际标签。训练集中的文本集合构成训练集文本集合X,训练集中的实际标签序列集合构成训练集实际标签序列集合Y;测试集中的文本集合构成测试集文本集合V,测试集样本中的实际标签序列集合构成测试集实际标签序列集合Y#
第三步:使用多模型识别模块训练集采用多模型识别模块训练方法训练多模型识别模块。采用有监督的方式对多模型识别模块中的6M个模型同时进行训练,得到6M组不同的模型参数权重。方法如下:
3.1初始化权重参数,使用网上发布的预训练模型参数(网址为:https://pan.baidu.com/s/1Rk_QWqd7-wBTwycr91bmug,2019-09-08)初始化RoBERTa网络权重参数集合WR中的所有元素值;将BiLSTM网络权重参数集合WB中所有元素值都初始化为[0,1]之间的随机数;将TENER网络权重参数集合WT中所有元素值都初始化为[0,1]之间的随机数;将CRF网络权重参数集合WC中所有元素值都初始化为[0,1]之间的随机数;将Span网络权重参数集合WS中所有元素值都初始化为[0,1]之间的随机数;将Softmax网络权重参数集合WSo中所有元素值都初始化为[0,1]之间的随机数。
3.2设置网络训练超参数:设置learningRate=0.00002,batchsize=8,maxlen=512,随机种子Seed为2021。
3.3迭代计算每一个网络模型输出分布与真实实体标签分布差距,得到损失值,最小化损失值并更新网络参数,直到满足迭代次数要求,得到权重参数。具体方法如下:
3.3.1初始化训练迭代参数itretation=1;
3.3.2每个网络模型都从多模型识别模块训练集中接收训练集文本集合X,X=
{X1,X2,...,Xc,...XC},
Figure BDA0003298477990000192
1≤C≤L(X),1≤n≤N,
Figure BDA0003298477990000193
表示第c个文本的第n个字符,N表示文本的长度,经过预编码、下游编码和解码得到当前参数下网络模型对于标签的输出分布,计算预测的输出分布与真实分布的差距,得到损失值Loss(解码器为CRF的模型由CRF得到;解码器为Softmax的模型由1个常用的损失函数交叉熵损失函数得到;解码器为Span的模型由3个交叉熵损失函数(分别计算实体头字符损失、实体尾字符损失和实体类型损失)的和得到),使用Adam优化算法对Loss最小化以更新一次网络权重参数。
3.3.3令itretation=itretation+1,如果itretation≤迭代阈值K,K是[1,30]内的整数,本实施例中令K为10,转3.3.2;否则说明训练满足迭代次数要求,训练结束,将训练后的WR作为RoBERTa网络的权重参数集合,将训练后的WB作为BiLSTM网络的权重参数集合,将训练后的WT作为TENER网络的权重参数集合,将训练后的WS作为Span网络的权重参数集合,将训练后的WC作为CRF的权重参数集合,将训练后的WSo作为Softmax的权重参数集合,得到训练好的6M个模型,也即得到训练好的多模型识别模块,转第四步。
第四步:采用测试方法测试当前命名实体识别系统性能指标。训练好的多模型识别模块接收测试集文本集合V,V={V1,V2,...,Vu,...,VU},1≤U≤80=L(V)(其中u表示第u个测试集文本序号,Vu表示V中第u个测试集文本,
Figure BDA0003298477990000201
得到实体识别结果F(V);多级融合模块采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合
Figure BDA0003298477990000202
其中
Figure BDA0003298477990000203
Figure BDA0003298477990000204
表示文本Vu的第n个字符最终预测得到的伪标签,并根据Y*和多模型识别模块测试集实际标签序列集合Y#计算精确率、召回率和F1值,
Figure BDA0003298477990000205
具体方法为:
4.1初始化变量u=1、tp=0、fp=0、fn=0,其中tp表示正确预测的数目,fp表示误判的数目,fn表示漏判的数目;
4.2训练好的多模型识别模块接收测试集文本集合V,对V中的第u个文本Vu进行识别。多模型识别模块对Vu进行预编码、下游编码和解码,得到6M个实体识别结果集合F(Vu),F(Vu)={F(Vu)1,F(Vu)2,...,F(Vu)m,...,F(Vu)6M},其中F(Vu)m表示netm网络对Vu的分类结果,
Figure BDA0003298477990000206
其中
Figure BDA0003298477990000207
表示文本Vu输入到netm后第n个字符
Figure BDA0003298477990000208
得到的对应标签,将F(Vu)送入多级融合模块。
4.3多级融合模块对F(Vu)进行多级融合。多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,得到Vu的预测标签序列
Figure BDA0003298477990000209
Figure BDA00032984779900002010
Figure BDA00032984779900002011
表示Vu的第n个字符预测的伪标签。
4.4多级融合模块根据预测标签序列
Figure BDA00032984779900002012
和Vu的实际标签序列
Figure BDA00032984779900002019
Figure BDA00032984779900002013
Figure BDA00032984779900002014
中的所有实体进行判断:当一实体在
Figure BDA00032984779900002015
Figure BDA00032984779900002016
中同时出现时,令tp=tp+1;当一实体仅在
Figure BDA00032984779900002017
出现时,令fn=fn+1;当一实体仅在
Figure BDA00032984779900002018
出现时,令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,D={D1,D2,...,De,...,DE}(其中,1≤n≤N,N为正整数,De表示D中第e个长度为N的文本,以字符为单位,De长度为N说明De包含N个字符)。
第六步:构建判别模块训练集Q。训练好的多模型识别模块接收多模型识别模块训练集中的训练文本集合X,X={X1,X2,...,Xc,...,XC},对X进行识别,得到判别模块训练集输入Z(X)和实体识别结果F(X);多级融合模块接收实体识别结果F(X),对F(X)进行多级融合,得到X对应的预测序列集合Y′,Y′={Y1′,Y2′,...,Yc′,...,YC′},其中
Figure BDA0003298477990000211
Figure BDA0003298477990000212
Figure BDA0003298477990000213
表示文本Xc的第n个字符最终预测的预测标签;判别模块接收Y′和多模型识别模块训练集实际标签序列Y,Y={Y1,Y2,...,Yc,...,YC}(其中Yc为Xc对应的实际标签序列,
Figure BDA0003298477990000214
Figure BDA0003298477990000215
表示文本Xc的第n个字符的实际标签),得到判别模块训练集标签S,将Z(X)与S结合得到判别模块训练集Q={Q1,Q2,...,Qc,...,QC},其中Qc=(Z(Xc),Sc),表示Q中第c个样本,Z(Xc)表示Qc的输入,Sc表示Qc的实际输出。具体方法为:
6.1初始化变量c=1;
6.2构建判别模块训练集样本Qc的输入Z(Xc)。使用训练好的多模型识别模块对文本Xc进行预编码、下游编码和全连接层转化(解码器中的首个全连接层),得到6M个全连接层输出
Figure BDA0003298477990000216
Z(Xc)m表示文本Xc输入到netm后得到的全连接层输出,对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出集合ZZ(Xc),ZZ(Xc)={Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6},Z(Xc)netr表示netr对Xc的M个全连接层输出平均后的结果,1≤r≤6,令Z(Xc)=Concat(Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6),Concat()表示拼接操作,将Z(Xc)作为训练集样本Qc的输入送入判别模块。
6.3使用训练好的多模型识别模块对文本Xc进行预编码、下游编码和解码,得到6M个实体识别结果集合F(Xc),F(Xc)={F(Xc)1,F(Xc)2,...,F(Xc)m,...,F(Xc)6M},其中F(Xc)m表示netm网络对Xc的分类结果,
Figure BDA0003298477990000217
Figure BDA0003298477990000218
表示文本Xc输入到netm后第n个字符
Figure BDA0003298477990000219
得到的对应标签,将F(Xc)送入多级融合模块。
6.4多级融合模块对F(Xc)进行多级融合。多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步对第一步投票得到的6个投票结果进行二级投票,得到文本Xc多级融合后的预测标签序列
Figure BDA0003298477990000221
Figure BDA0003298477990000222
Figure BDA0003298477990000223
表示文本Xc的第n个字符最终预测的预测标签。
6.5判别模块从多级融合模块接收、Yc和Z(Xc),生成判别模块训练集。具体方法为:
6.5.1判别模块根据Yc′和Yc,生成Qc的实际输出Sc。其中
Figure BDA0003298477990000224
Figure BDA0003298477990000225
即当实体的预测标签与实体真实标签相同时
Figure BDA0003298477990000226
为0,表示接受实体的预测标签作为实体的实际标签,否则
Figure BDA0003298477990000227
为1,表示不接受实体的预测标签作为实体的实际标签。
6.5.2判别模块将Qc加入到判别模块训练集Q中。
6.6如果c≤C,令c=c+1,转6.2;否则,说明已经通过多模型识别训练集生成了判别模块训练集Q,转第七步。
第七步:使用第六步得到的判别模块训练集Q,采用libsvm工具包对判别模块进行有监督的训练,得到训练后的判别模块,即SVM判别器。具体方法如下:
7.1调用libsvm工具包中的grid.py自动搜素得到SVM核函数径向基内核(RBF核)的两个超参数:惩罚因子和影响因子。
7.2调用libsvm工具包中的svm-train.exe训练判别模块,其中超参数设置为7.1得到的惩罚因子和影响因子,得到训练后的判别模块,即SVM判别器。
第八步:使用训练后的多模型识别模块、多级融合模块和训练后的判别模块生成伪标签数据集R。多模型识别模块接收未标记数据库D中的文本,进行多模型识别,得到全连接层输出集合Z(D)和实体识别结果F(D),Z(D)={Z(D1),Z(D2),...,Z(De),...,Z(DE)},F(D)={F(D1),F(D2),...,F(De),...,F(DE)};多级融合模块从多模型识别模块接收F(D)并进行多级融合,得到D对应的预测标签
Figure BDA0003298477990000228
Figure BDA0003298477990000229
其中
Figure BDA00032984779900002210
训练后的判别模块从多模型识别模块接收全连接层输出Z(D)、从多级融合模块接收
Figure BDA00032984779900002211
从未标记数据库接收文本集合D,对Z(D1),Z(D2),...,Z(De),...,Z(DE)逐项进行判断,令
Figure BDA00032984779900002212
Figure BDA00032984779900002213
Re表示候补的伪标签样本,包含一个未标记数据文本De和De对应的预测标签序列
Figure BDA0003298477990000231
判断集合{R1,R2,...,Re,...,RE}中各项能否作为新的训练样本加入伪标签数据集R中。具体方法为:
8.1初始化e=1;
8.2多模型识别模块对未标记数据库D中的第e个文本De进行识别。使用训练好的多模型识别模块对文本De进行预编码、下游编码和全连接层转化(解码器中的首个全连接层),得到6M个全连接层输出
Figure BDA0003298477990000232
对6组各M个全连接层输出进行平均,得到输出ZZ(De),ZZ(De)={Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6},对ZZ(De)进行拼接,得到Z(De)=Concat(Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6),其中Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6表示De对应的6种不同的模型框架的输出,将Z(De)输出到判别模块;使用训练好的多模型识别模块对文本De进行预编码、下游编码和解码,得到6M个实体识别结果F(De)={F(De)1,F(De)2,...,F(De)m,...,F(De)6M},其中F(De)m表示netm网络对De的分类结果,
Figure BDA0003298477990000233
Figure BDA0003298477990000234
Figure BDA0003298477990000235
表示文本De输入到netm后第n个字符
Figure BDA0003298477990000236
得到的对应标签,并将F(De)送入多级融合模块。
8.3多级融合模块对实体识别结果F(De)进行多级融合。与4.3步一样,多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,最终得到文本De的预测标签序列
Figure BDA0003298477990000237
Figure BDA0003298477990000238
送入判别模块。
8.4判别模块从多模型识别模块接收Z(De),对Z(De)进行判别分类,如果结果为0,则说明样本Re可以作为训练数据加入到R中,
Figure BDA0003298477990000239
(De作为训练文本,
Figure BDA00032984779900002310
作为训练文本的实际标签序列),将样本Re加入伪标签数据集R中,转8.4;如果结果为1,则说明样本Re质量不高,不能作为训练数据加入到R中,直接转8.4。
8.5如果e≤E,令e=e+1,转8.2;否则,说明已经对全部未标记数据进行了判别,并且筛选得到了伪标签数据集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长度为N说明T包含N个字符),T={t1,t2,...,tn,...,tN},tn表示文本T的第n个字符。具体方法为:
10.1多模型识别模块对文本T进行识别。使用多模型识别模块对文本T进行预编码、下游编码和解码,得到6M个实体识别结果集合F(T)={F(T)1,F(T)2,...,F(T)m,...,F(T)6M},其中F(T)m表示netm网络对T的分类结果,F(T)m={F(T)m(t1),F(T)m(t2),...,F(T)m(tn),...,F(T)m(tN)},其中F(T)m(tn)表示文本T输入到netm后第n个字符tn得到的对应标签,将F(T)送入多级融合模块。
10.2多级融合模块对F(T)进行多级融合。多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,最终得到文本T的预测标签序列
Figure BDA0003298477990000241
Figure BDA0003298477990000242
10.3使用实体标签对齐器将文本T的预测标签序列YT与用户接收文本T对应,得到每个实体类别的实体列表。具体方法如下:
10.3.1初始化4个空列表集合,用{list1,list2,list3,list4}表示,分别对应4个实体类别;初始化n=1;初始化预测实体字符序列entity为空字符,entity用来暂时存储预测的实体字符序列。
10.3.2如果n≤N,令n=n+1,转10.3.3;如果n>N,说明已经对全部标签进行了判别,得到了A个实体类别对应的实体列表,即对T的识别结果,每个实体列表对应一个类别,实体列表中为同一类别的实体,转第十一步。
10.3.3根据文本T的预测标签序列YT的第n个标签
Figure BDA0003298477990000243
执行不同的操作。如果
Figure BDA0003298477990000244
表示非实体标签,令n=n+1,转10.3.2;如果
Figure BDA0003298477990000245
表示第a(1≤a≤A)类实体的实体头部标签或第a类实体的实体中部标签,将
Figure BDA0003298477990000251
对应的T中字符tn插入到entity尾部,令=+1,转10.3.2;如果
Figure BDA0003298477990000252
表示第a类实体的实体尾部标签或第a类实体的单实体标签,将
Figure BDA0003298477990000253
对应的T中字符tn插入到entity尾部,并将entity加入第a类实体对应的实体列表lista中,之后令entity为空字符,n=n+1,转10.3.2。其中1≤a≤4。
第十一步,结束。
图4为本发明中多级融合模块对实体识别精确率(Precision)、召回率(Recall)和F1值影响的示意图。
选择MilNER数据集中剩余80条数据作为命名实体识别测试集,实验的软件系统环境为乌班图18.04版本(即Ubuntu 18.04,Linux系统的一个版本),搭载英特尔Xeon Gold系列6154中央处理器,处理频率为3.0Hz,另外配有四块英伟达Tesla V100显卡,每块显卡CUDA核心数为5120个,显存容量为32GB。在本实验环境下,图4比较了本发明使用的多级融合模块与单独使用6种不同模型结构(即RoBERTa+BiLSTM+CRF、RoBERTa+BiLSTM+Sotfmax、RoBERTa+BiLSTM+Span、RoBERTa+TENER+CRF、RoBERTa+TENER+Softmax、RoBERTa+TENER+Span)的精确率(Precision)、召回率(Recall)和F1值三种命名实体识别任务常用的评价指标。其中精确率,即查准率,表示真正正确的占所有预测为正的比例;召回率,即查全率,表示真正正确的占所有实际为正的比例;F1值=精确率×召回率×2/(精确率+召回率),是对Precision和Recall进行的整体评价。这三种评价指标越大,说明命名实体识别系统的性能越好。通过图4可以看出,仅使用单模型进行实体识别时最好的f1值(RoBERTa+BiLSTM+Span)为69.64,使用多级融合模块后f1值提升至70.18。说明本发明采用的多模型融合的方法是确实有效的。
采用图4的实验环境,探究本发明实体标签挑选系统生成的样本数量对命名实体识别系统F1值的影响。图5为本发明实体标签挑选系统生成的样本数量对命名实体识别F1值影响的示意图。
图5中横坐标是实体标签挑选系统生成的样本数量,纵坐标是F1值,从图5中可以看出,随着生成样本数量的增多,模型看到的信息越多,学到的知识就越多,F1值也越来越好。所以得出结论,本发明能够将大量的未标记数据很好的利用起来,通过实体标签挑选系统,将蕴含丰富实体信息的高质量样本挑选出来,让模型获得更多实体信息,达到提升模型效果的作用,缓解了标记样本少的问题。
以上对本发明所提供的一种基于预训练语言模型的命名实体识别方法进行了详细介绍。本文对本发明的原理及实施方式进行了阐述,以上说明用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通研究人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (12)

1.一种基于预训练语言模型的命名实体识别方法,其特征在于包括以下步骤:
第一步:构建命名实体识别系统;命名实体识别系统由多模型识别模块、多级融合模块、判别模块、实体标签对齐器、未标记数据库D构成;
未标记数据库D存储E条文本,E为正整数,与多模型识别模块、判别模块相连,供多模型识别模块和判别模块读取,D={D1,D2,...,De,...,DE},De表示未标记数据库中第e个文本;其中
Figure FDA0003555339520000011
1≤n≤N,N为正整数,De表示长度为N即De包含N个字符;
多模型识别模块与用户、多级融合模块和判别模块相连,当从多模型识别模块训练集接收到训练集文本集合X时,X={X1,X2,...,Xc,...,XC},其中Xc表示训练集中第c个文本,1≤c≤C,C为正整数,
Figure FDA0003555339520000012
1≤n≤N,N为正整数,Xc长度为N即Xc包含N个字符;多模型识别模块对X中每个文本分别进行多模型识别,得到多模型识别结果集合F(X)和全连接层输出集合Z(X);当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块;当对多模型识别模块进行训练时,多模型识别模块更新参数;当从多模型识别模块测试集接收到测试集文本集合V时,V={V1,V2,...,Vu,...,VU},其中Vu表示测试集中第u个文本,
Figure FDA0003555339520000013
Vu表示长度为N即Vu包含N个字符,
Figure FDA0003555339520000014
为Vu的第n个字符,1≤u≤U;多模型识别模块对V中每个文本分别进行多模型识别,得到多模型识别结果集合F(V),F(V)={F(V1),F(V2),...,F(Vu),...,F(VU)},其中F(Vu)表示多模型识别模块对文本Vu的分类结果;将F(V)输出到多级融合模块;当从未标记数据库D中读取数据时,多模型识别模块对D中每个文本分别进行多模型识别,得到多模型识别结果集合F(D)和全连接层输出集合Z(D),F(D)={F(D1),F(D2),...,F(De),...,F(DE)},其中F(De)表示多模型识别模块对文本De的分类结果,Z(D)={Z(D1),Z(D2),...,Z(De),...,Z(DE)},其中Z(De)表示多模型识别模块对文本De的全连接层输出,将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,...,netm,...,net6M,1≤m≤6M,其中net1~netM为net1,netM+1~net2M为net2,net2M+1~net3M为net3,net3M+1~net4M为net4,net4M+1~net5M为net5,net5M+1~net6M为net6;
当多模型识别模块接收到训练集文本集合X时,net1,...,netm,...,net6M分别对X中每个文本进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(X),F(X)={F(X1),F(X2),...,F(Xc),...,F(XC)};F(Xc)表示Xc的分类结果集合,F(Xc)={F(Xc)1,F(Xc)2,...,F(Xc)m,...,F(Xc)6M},其中F(Xc)m表示netm网络对Xc的分类结果,
Figure FDA0003555339520000021
其中
Figure FDA0003555339520000022
表示文本Xc输入到netm后第n个字符
Figure FDA0003555339520000023
得到的对应标签;同时得到Xc在每个解码器中第一个全连接层的输出结果集合
Figure FDA0003555339520000024
Z(Xc)m表示文本Xc输入到netm后得到的全连接层输出;对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出集合ZZ(Xc),ZZ(Xc)={Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6},Z(Xc)netr表示netr对Xc的M个全连接层输出平均后的结果,1≤r≤6,对ZZ(Xc)中的6个元素进行拼接后,得到拼接后的全连接层输即多模型识别模块对文本Xc的全连接层输出Z(Xc),Z(Xc)=Concat(Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6),Concat()表示拼接操作,令全连接层输出集合Z(X)={Z(X1),Z(X2),...,Z(Xc),...,Z(XC)};当构建判别模块训练集时,将F(X)送入多级融合模块,将Z(X)送入判别模块;
当生成伪标签数据集时,多模型识别模块从未标记数据库D读取文本,net1,...,netm,...,net6M分别对D中E个文本进行预训练编码、下游编码和解码,得到E个文本的分类结果集合F(D),F(D)={F(D1),F(D2),...,F(De),...,F(DE)};F(De)表示De的分类结果集合,F(De)={F(De)1,F(De)2,...,F(De)m,...,F(De)6M},其中F(De)m表示netm网络对De的分类结果,
Figure FDA0003555339520000025
其中
Figure FDA0003555339520000026
表示文本De输入到netm后第n个字符
Figure FDA0003555339520000027
得到的对应标签;同时得到De在每个解码器中第一个全连接层的输出结果集合
Figure FDA0003555339520000028
Z(De)m表示文本De输入到netm后得到的全连接层输出;对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出ZZ(De),ZZ(De)={Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6},Z(De)netr表示netr对De的M个全连接层输出平均后的结果,对ZZ(De)中的6个元素进行拼接后,得到拼接后的全连接层输出Z(De),Z(De)=Concat(Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6);令全连接层输出Z(D),Z(D)={Z(D1),Z(D2),...,Z(De),...,Z(DE)},将F(D)送入多级融合模块,将Z(D)送入判别模块;
当多模型识别模块接收到测试集文本集合V时,net1,...,netm,...,net6M分别对V中每个文本分别进行预训练编码、下游编码和解码,得到每个文本的分类结果集合F(V),F(V)={F(V1),F(V2),...,F(Vu),...,F(VU)};F(Vu)表示Vu的分类结果集合,F(Vu)={F(Vu)1,F(Vu)2,...,F(Vu)m,...,F(Vu)6M},其中F(Vu)m表示netm网络对Vu的分类结果,
Figure FDA0003555339520000031
其中
Figure FDA0003555339520000032
表示文本Vu输入到netm后第n个字符
Figure FDA0003555339520000033
得到的对应标签;将F(V)送入多级融合模块;
当多模型识别模块接收到用户输入的文本T=(t1,t2,...,tn,...,tN)时,T表示长度为N的文本即T包含N个字符,net1,...,netm,...,net6M分别对T进行预训练编码、下游编码和解码,得到分类结果集合F(T),F(T)={F(T)1,F(T)2,...,F(T)m,...,F(T)6M},其中F(T)m表示netm网络对T的分类结果,F(T)m={F(T)m(t1),F(T)m(t2),...,F(T)m(tn),...,F(T)m(tN)},其中F(T)m(tn)表示文本T输入到netm后第n个字符tn得到的对应标签;将F(T)送入多级融合模块;
多级融合模块与多模型识别模块、判别模块和实体标签对齐器相连,当从多模型识别模块接收到F(X)时,采用多级融合策略对F(X)进行投票,得出X对应的预测标签序列集合Y′,将Y′送入判别模块;当从多模型识别模块接收到F(D)时,采用多级融合策略对F(D)进行投票,得出D对应的预测标签序列集合
Figure FDA0003555339520000034
Figure FDA0003555339520000035
送入判别模块;当从多模型识别模块接收到F(V)并从多模型识别模块测试集接收到测试集实际标签序列集合Y#时,采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合Y*,并根据Y*和Y#计算精确率、召回率和F1值供用户查看;当从多模型识别模块接收F(T)时,采用多级融合策略对F(T)进行投票,得出T对应的标签序列YT,将YT送入实体标签对齐器;
判别模块与多模型识别模块、多级融合模块、未标记数据库相连,采用支持向量机SVM模型作为标签分类器,当从多模型识别模块接收到Z(X),从多级融合模块接收到Y′,从多模型识别模块训练集接收训练集实际标签序列集合Y时,判别模块根据Y′和Y生成判别模块训练集标签S,并根据Z(X)和S构建判别模块训练集Q,之后对判别模块进行训练;当从未标记数据库读取到文本集合D,从多模型识别模块接收到Z(D),从多级融合模块接收到
Figure FDA0003555339520000041
时,判别模块对Z(D)进行判断,判断是否将
Figure FDA0003555339520000042
加入伪标签数据集R;最后将R发送给多模型识别模块;
实体标签对齐器与多级融合模块和用户相连,从多级融合模块接收YT,将用户输入的文本T和YT对应起来,得到T中各实体类别的实体列表;
第二步:准备训练多模型识别模块的数据集;选用标注样本个数L小于1000、来自同一垂直领域的数据集作为原始数据集,令数据集中标注样本数为L,按4∶1的比例将原始样本划分为训练集和测试集,每条标注样本包含一条文本和其对应的实际标签;训练集中的文本集合构成训练集文本集合X,训练集中的实际标签序列集合构成训练集实际标签序列集合Y,令训练集中的数据条数为L(X);测试集中的文本集合构成测试集文本集合V,测试集样本中的实际标签序列集合构成测试集实际标签序列集合Y#,令测试集中的数据条数为L(V);L=L(X)+L(V);
第三步:使用多模型识别模块训练集采用多模型识别模块训练方法训练多模型识别模块;采用有监督的方式对多模型识别模块中的6M个模型同时进行训练,得到6M组不同的模型参数权重;方法如下:
3.1初始化权重参数,包括RoBERTa网络权重参数集合WR中的所有元素值、BiLSTM网络权重参数集合WB中所有元素值、TENER网络权重参数集合WT中所有元素值、CRF网络权重参数集合WC中所有元素值、Span网络权重参数集合WS中所有元素值、Softmax网络权重参数集合WSo中所有元素值;
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;否则说明训练满足迭代次数要求,训练结束,将训练后的WR作为RoBERTa网络的权重参数集合,将训练后的WB作为BiLSTM网络的权重参数集合,将训练后的WT作为TENER网络的权重参数集合,将训练后的WS作为Span网络的权重参数集合,将训练后的WC作为CRF的权重参数集合,将训练后的WSo作为Softmax的权重参数集合,得到训练好的6M个模型,也即得到训练好的多模型识别模块,转第四步;
第四步:采用测试方法测试当前命名实体识别系统性能指标;训练好的多模型识别模块接收测试集文本集合V,V={V1,V2,...,Vu,...,VU},1≤U≤L(V)且U为正整数,得到实体识别结果F(V);多级融合模块采用多级融合策略对F(V)进行投票,得出V对应的预测标签序列集合Y*={Y1*,Y2*,...,Yu*,...,YU*},其中
Figure FDA0003555339520000051
表示文本Vu的第n个字符最终预测得到的伪标签,并根据Y*和多模型识别模块测试集实际标签序列集合Y#计算精确率、召回率和F1值,Y#={Y1#,Y2#,...,Yu#,...,YU#},具体方法为:
4.1初始化变量u=1、tp=0、fp=0、fn=0,其中tp表示正确预测的数目,fp表示误判的数目,fn表示漏判的数目;
4.2训练好的多模型识别模块接收测试集文本集合V,对V中的第u个文本Vu进行识别;多模型识别模块对Vu进行预编码、下游编码和解码,得到6M个实体识别结果集合F(Vu),F(Vu)={F(Vu)1,F(Vu)2,...,F(Vu)m,...,F(Vu)6M},其中F(Vu)m表示netm网络对Vu的分类结果,
Figure FDA0003555339520000052
其中
Figure FDA0003555339520000053
表示文本Vu输入到netm后第n个字符
Figure FDA0003555339520000054
得到的对应标签,将F(Vu)送入多级融合模块;
4.3多级融合模块对F(Vu)进行多级融合;多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,得到Vu的预测标签序列
Figure FDA0003555339520000055
Figure FDA0003555339520000056
表示Vu的第n个字符预测的伪标签;
4.4多级融合模块根据预测标签序列Yu*和Vu的实际标签序列Yu#对Yu*和Yu#中的所有实体进行判断:当一实体在Yu*和Yu#中同时出现时,令tp=tp+1;当一实体仅在Yu#出现时,令fn=fn+1;当一实体仅在Yu*出现时,令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′={Y1′,Y2′,...,Yc′,...,YC′},其中
Figure FDA0003555339520000061
表示文本Xc的第n个字符最终预测的预测标签;判别模块接收Y′和多模型识别模块训练集实际标签序列Y,Y={Y1,Y2,...,Yc,...,YC},其中Yc为Xc对应的实际标签序列,
Figure FDA0003555339520000062
Figure FDA0003555339520000063
表示文本Xc的第n个字符的实际标签,得到判别模块训练集标签S,将Z(X)与S结合得到判别模块训练集Q={Q1,Q2,...,Qc,...,QC},其中Qc=(Z(Xc),Sc),表示Q中第c个样本,Z(Xc)表示Z(X)的第c个元素,Sc表示S的第c个元素;
第七步:使用第六步得到的判别模块训练集Q,采用libsvm工具包对判别模块进行有监督的训练,得到训练后的判别模块,即SVM判别器;
第八步:使用训练后的多模型识别模块、多级融合模块和训练后的判别模块生成伪标签数据集R,方法是:多模型识别模块接收未标记数据库D中的文本,进行多模型识别,得到全连接层输出集合Z(D)和实体识别结果F(D);多级融合模块从多模型识别模块接收F(D)并进行多级融合,得到D对应的预测标签
Figure FDA0003555339520000064
其中
Figure FDA0003555339520000065
训练后的判别模块从多模型识别模块接收全连接层输出Z(D)、从多级融合模块接收
Figure FDA0003555339520000066
从未标记数据库接收文本集合D,对Z(D1),Z(D2),...,Z(De),...,Z(DE)逐项进行判断,令
Figure FDA0003555339520000067
Figure FDA0003555339520000068
Re表示第e个候补的伪标签样本,包含未标记数据文本De和De对应的预测标签序列
Figure FDA0003555339520000069
判断集合{R1,R2,...,Re,...,RE}中各项能否作为新的训练样本加入伪标签数据集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={t1,t2,...,tn,...,tN},tn表示文本T的第n个字符,方法为:
10.1多模型识别模块对文本T进行识别;使用多模型识别模块对文本T进行预编码、下游编码和解码,得到6M个实体识别结果集合F(T)={F(T)1,F(T)2,...,F(T)m,...,F(T)6M},其中F(T)m表示netm网络对T的分类结果,F(T)m={F(T)m(t1),F(T)m(t2),…,F(T)m(tn),…,F(T)m(tN)},其中F(T)m(tn)表示文本T输入到netm后第n个字符tn得到的对应标签,将F(T)送入多级融合模块;
10.2多级融合模块对F(T)进行多级融合;多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,最终得到文本T的预测标签序列
Figure FDA0003555339520000071
Figure FDA0003555339520000072
10.3使用实体标签对齐器将文本T的预测标签序列YT与用户接收文本T对应,得到每个实体类别的实体列表,方法是:
10.3.1初始化A个空列表集合,用{list1,list2,...,lista,...,listA}表示,分别对应A个实体类别,初始化n=1,初始化预测实体字符序列entity为空字符,entity用来暂时存储预测的实体字符序列;
10.3.2如果n≤N,令n=n+1,转10.3.3;如果n>N,说明已经对全部标签进行了判别,得到了A个实体类别对应的实体列表,即对T的识别结果,每个实体列表对应一个类别,实体列表中为同一类别的实体,转第十一步;
10.3.3根据文本T的预测标签序列YT的第n个标签
Figure FDA0003555339520000073
执行不同的操作;如果
Figure FDA0003555339520000074
表示非实体标签,令n=n+1,转10.3.2;如果
Figure FDA0003555339520000075
表示第a类实体的实体头部标签或第a类实体的实体中部标签,将
Figure FDA0003555339520000076
对应的T中字符tn插入到entity尾部,令n=n+1,转10.3.2;如果
Figure FDA0003555339520000077
表示第a类实体的实体尾部标签或第a类实体的单实体标签,将
Figure FDA0003555339520000078
对应的T中字符tn插入到entity尾部,并将entity加入第a类实体对应的实体列表lista中,之后令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网络权重参数集合WR中的所有元素值;将BiLSTM网络权重参数集合WB中所有元素值都初始化为[0,1]之间的随机数;将TENER网络权重参数集合WT中所有元素值都初始化为[0,1]之间的随机数;将CRF网络权重参数集合WC中所有元素值都初始化为[0,1]之间的随机数;将Span网络权重参数集合WS中所有元素值都初始化为[0,1]之间的随机数;将Softmax网络权重参数集合WSo中所有元素值都初始化为[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构建判别模块训练集样本Qc的输入Z(Xc);使用训练好的多模型识别模块对文本Xc进行预编码、下游编码和全连接层转化,得到6M个全连接层输出
Figure FDA0003555339520000091
Figure FDA0003555339520000092
Z(Xc)m表示文本Xc输入到netm后得到的全连接层输出,对6组相同模型结构、不同Seed的网络模型得到的全连接层输出结果分别进行平均,得到6种不同模型结构的全连接层输出集合ZZ(Xc),ZZ(Xc)={Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6},Z(Xc)netr表示netr对Xc的M个全连接层输出平均后的结果,1≤r≤6,令Z(Xc)=Concat(Z(Xc)net1,Z(Xc)net2,Z(Xc)net3,Z(Xc)net4,Z(Xc)net5,Z(Xc)net6),Concat()表示拼接操作,将Z(Xc)作为训练集样本Qc的输入送入判别模块;
6.3使用训练好的多模型识别模块对文本Xc进行预编码、下游编码和解码,得到6M个实体识别结果集合F(Xc),F(Xc)={F(Xc)1,F(Xc)2,...,F(Xc)m,...,F(Xc)6M},其中F(Xc)m表示netm网络对Xc的分类结果,
Figure FDA0003555339520000093
Figure FDA0003555339520000094
表示文本Xc输入到netm后第n个字符
Figure FDA0003555339520000095
得到的对应标签,将F(Xc)送入多级融合模块;
6.4多级融合模块对F(Xc)进行多级融合;多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步对第一步投票得到的6个投票结果进行二级投票,得到文本Xc多级融合后的预测标签序列
Figure FDA0003555339520000096
Figure FDA0003555339520000101
表示文本Xc的第n个字符最终预测的预测标签;
6.5判别模块从多级融合模块接收Yc′、Yc和Z(Xc),生成判别模块训练集;具体方法为:
6.5.1判别模块根据Yc′和Yc,生成Qc的实际输出Sc;其中
Figure FDA0003555339520000102
Figure FDA0003555339520000103
即当实体的预测标签与实体真实标签相同时
Figure FDA0003555339520000104
为0,表示接受实体的预测标签作为实体的实际标签,否则
Figure FDA0003555339520000105
为1,表示不接受实体的预测标签作为实体的实际标签;
6.5.2判别模块将Qc加入到判别模块训练集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个文本De进行识别;使用训练好的多模型识别模块对文本De进行预编码、下游编码和全连接层转化,得到6M个全连接层输出
Figure FDA0003555339520000106
Figure FDA0003555339520000107
对6组各M个全连接层输出进行平均,得到输出ZZ(De),ZZ(De)={Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6},对ZZ(De)进行拼接,得到Z(De)=Concat(Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6),其中Z(De)net1,Z(De)net2,Z(De)net3,Z(De)net4,Z(De)net5,Z(De)net6表示De对应的6种不同的模型框架的输出,将Z(De)输出到判别模块;使用训练好的多模型识别模块对文本De进行预编码、下游编码和解码,得到6M个实体识别结果F(De)={F(De)1,F(De)2,...,F(De)m,...,F(De)6M},其中F(De)m表示netm网络对De的分类结果,
Figure FDA0003555339520000108
Figure FDA0003555339520000109
表示文本De输入到netm后第n个字符
Figure FDA0003555339520000111
得到的对应标签,并将F(De)送入多级融合模块;
8.3多级融合模块对实体识别结果F(De)进行多级融合;多级融合分两步进行,第一步是对6组各M个网络模型得到的分类结果分别进行一级投票,得到6个投票结果,第二步是对第一步每个文本投票得到的6个投票结果进行二级投票,最终得到文本De的预测标签序列
Figure FDA0003555339520000112
Figure FDA0003555339520000113
送入判别模块;
8.4判别模块从多模型识别模块接收Z(De),对Z(De)进行判别分类,如果结果为0,则说明样本Re可以作为训练数据加入到R中,
Figure FDA0003555339520000114
De作为训练文本,
Figure FDA0003555339520000115
作为训练文本的实际标签序列,将样本Re加入伪标签数据集R中,转8.4;如果结果为1,则说明样本Re质量不高,不能作为训练数据加入到R中,直接转8.4;
8.5如果e≤E,令e=e+1,转8.2;否则,说明已经对全部未标记数据进行了判别,并且筛选得到了伪标签数据集R,结束。
CN202111184101.5A 2021-10-11 2021-10-11 一种基于预训练语言模型的命名实体识别方法 Active CN113806494B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111184101.5A CN113806494B (zh) 2021-10-11 2021-10-11 一种基于预训练语言模型的命名实体识别方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111184101.5A CN113806494B (zh) 2021-10-11 2021-10-11 一种基于预训练语言模型的命名实体识别方法

Publications (2)

Publication Number Publication Date
CN113806494A CN113806494A (zh) 2021-12-17
CN113806494B true CN113806494B (zh) 2022-05-27

Family

ID=78939418

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111184101.5A Active CN113806494B (zh) 2021-10-11 2021-10-11 一种基于预训练语言模型的命名实体识别方法

Country Status (1)

Country Link
CN (1) CN113806494B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114266253B (zh) * 2021-12-21 2024-01-23 武汉百智诚远科技有限公司 一种未标注数据的半监督命名实体识别的方法
CN114548109B (zh) * 2022-04-24 2022-09-23 阿里巴巴达摩院(杭州)科技有限公司 命名实体识别模型训练方法及命名实体识别方法
CN115329766B (zh) * 2022-08-23 2023-04-18 中国人民解放军国防科技大学 一种基于动态词信息融合的命名实体识别方法
CN116050418B (zh) * 2023-03-02 2023-10-31 浙江工业大学 基于融合多层语义特征的命名实体识别方法、设备和介质
CN116204610B (zh) * 2023-04-28 2023-07-07 深圳市前海数据服务有限公司 一种基于可研报告命名实体识别的数据挖掘方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112735597A (zh) * 2020-12-31 2021-04-30 荆门汇易佳信息科技有限公司 半监督自学习驱动的医学文本病症辨识方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108364016A (zh) * 2018-01-12 2018-08-03 华南理工大学 基于多分类器的渐进式半监督分类方法
US11227120B2 (en) * 2019-05-02 2022-01-18 King Fahd University Of Petroleum And Minerals Open domain targeted sentiment classification using semisupervised dynamic generation of feature attributes
CN110781897B (zh) * 2019-10-22 2023-05-02 北京工业大学 一种基于深度学习的语义边缘检测方法
CN111444342B (zh) * 2020-03-24 2021-12-10 湖南董因信息技术有限公司 一种基于多重弱监督集成的短文本分类方法
US11694042B2 (en) * 2020-06-16 2023-07-04 Baidu Usa Llc Cross-lingual unsupervised classification with multi-view transfer learning
CN112989830B (zh) * 2021-03-08 2023-08-18 武汉大学 一种基于多元特征和机器学习的命名实体识别方法
CN113361278B (zh) * 2021-06-21 2022-02-15 中国人民解放军国防科技大学 一种基于数据增强与主动学习的小样本命名实体识别方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112735597A (zh) * 2020-12-31 2021-04-30 荆门汇易佳信息科技有限公司 半监督自学习驱动的医学文本病症辨识方法

Also Published As

Publication number Publication date
CN113806494A (zh) 2021-12-17

Similar Documents

Publication Publication Date Title
CN113806494B (zh) 一种基于预训练语言模型的命名实体识别方法
CN110298037B (zh) 基于增强注意力机制的卷积神经网络匹配的文本识别方法
CN108960073B (zh) 面向生物医学文献的跨模态图像模式识别方法
CN109766277B (zh) 一种基于迁移学习与dnn的软件故障诊断方法
CN112732916B (zh) 一种基于bert的多特征融合模糊文本分类系统
CN110334354A (zh) 一种中文关系抽取方法
CN114169330A (zh) 融合时序卷积与Transformer编码器的中文命名实体识别方法
CN111159485B (zh) 尾实体链接方法、装置、服务器及存储介质
CN111506732B (zh) 一种文本多层次标签分类方法
CN110188195B (zh) 一种基于深度学习的文本意图识别方法、装置及设备
CN114691864A (zh) 文本分类模型训练方法及装置、文本分类方法及装置
CN112749274A (zh) 基于注意力机制和干扰词删除的中文文本分类方法
CN116775872A (zh) 一种文本处理方法、装置、电子设备及存储介质
CN115130591A (zh) 一种基于交叉监督的多模态数据分类方法及装置
Aziguli et al. A robust text classifier based on denoising deep neural network in the analysis of big data
CN113836896A (zh) 一种基于深度学习的专利文本摘要生成方法和装置
CN113032601A (zh) 一种基于判别性提升的零样本草图检索方法
CN113886562A (zh) 一种ai简历筛选方法、系统、设备和存储介质
CN117371523A (zh) 基于人机混合增强的教育知识图谱构建方法与系统
CN116975776A (zh) 一种基于张量和互信息的多模态数据融合方法和设备
CN117494051A (zh) 一种分类处理的方法、模型训练的方法以及相关装置
CN112416358A (zh) 一种基于结构化词嵌入网络的智能合约代码缺陷检测方法
CN114841151A (zh) 基于分解-重组策略的医学文本实体关系联合抽取方法
CN115827954A (zh) 动态加权的跨模态融合网络检索方法、系统、电子设备
CN111563378A (zh) 一种联合学习的多文档阅读理解实现方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant