1.本发明涉及自然语言处理技术领域,具体地,本发明涉及一种术语识别方法。
背景技术:2.在行业术语识别技术中,并没有很好的可以完全实现自动化的术语识别方法,大部分内容需要人工参与,难以得到推广与应用,并且一些自动识别方法存在效率低、准确性较差和新术语识别能力有限等缺点。
3.例如,(1)通过模版方法和模型方法进行术语识别,即通过构造人工模版和统计模版;模版方法是一种规则方法,通常由领域专家基于知识和经验人工构造,需要耗费大量精力和成本,且模版容易存在覆盖范围不足的问题;(2)模型方法一般由无监督的方法和有监督方法两种,无监督方法如:左右互信息、信息熵等方法,有监督方法主要为一些序列标注方法如:条件随机场(crf),bilstm+crf、bert等模型、ner模型。其中,无监督模型方法不需要人工标注数据,但是通过语料进行无监督学习的方式,非常依赖数据质量和技术方法的先进性,如果数据质控不高,噪声过多,识别错误率将大大增加;有监督模型方法则需要大量人工标注样本,人力成本很高,且人工标注受标注人员知识程度影响,容易造成标注质量不一致,同时受主观因素影响。
4.比如,在医疗行业,医院及企业积累了海量的计算机形成存储的电子病历,电子病历中记录了专业医生大量的临床经验、诊断知识,并且包含了非常多的专业术语。然而大部分电子病历都是由专业医生按照一定标准采用自然语言形式书写,并非结构化信息,如何在实际生产应用中充分利用和识别病历数据的内在价值,大数据分析技术与自然语言处理技术变得至关重要,其中,实体识别或术语识别是一项比较常见的任务。
5.例如,在中国专利cn113392633b中,提出一种医疗命名实体识别的方法、装置及存储介质,包括:利用基于字典的标注方法进行标注,作为第一标注结果;利用基于人工的标注方法进行标注,作为第二标注结果;利用ner机器学习模型的标注方法进行标注,作为第三标注结果;将第一标注结果、第二标注结果和第三标注结果进行融合,作为第四标注结果;根据第四标注结果更新ner机器学习模型的参数,并进行迭代,获得训练后的ner机器学习模型;将待识别的医疗文本输入训练后的ner机器学习模型获得输出的医疗命名实体。在此专利中,实体识别方法ner识别训练数据是仍然人工标注数据,而且通过人工标注+字典匹配+ner模型三种方法的结果进行融合后对ner模型参数重新训练修正,然后将修正的ner模型进行实体识别,作为最终对识别结果,其迭代每次均需要人工参与,且其最终迭代的目标将是人工标注结果和字典结果,很难产生新术语。
技术实现要素:6.为克服现有技术的上述缺陷,本发明从信息抽取技术角度出发,充分利用已有的专家字典、知识词表,并结合模版识别准确性高与机器学习方法召回率高的特点,采用相互融合校验的策略,对输入的行业语料进行深度的自动化迭代识别,可以极大减少人工成本,
同时设计了多重更新策略来提高术语的准确性。
7.本发明提供的一种术语识别方法,包括:
8.s10、构建术语集合,包括初始术语模式集合和动态术语模式集合;
9.s20、为输入的语料文本进行标注;
10.s30、将获得的术语序列和标签序列输入ner模型进行训练,调整ner模型的参数,输出候选术语;
11.s40、通过统计模版匹配获取模板识别的术语;
12.s50、对所述候选术语进行融合校验,生成术语候选集:
13.s60、更新动态术语模式集合,重复步骤s20-s60,直至所述动态术语模式集合收敛。
14.进一步地,所述步骤s20包括:
15.s201、根据所述初始术语集合和动态术语集合为所述语料文本中的词进行标注;
16.s202、通过动态规划算法对步骤s201输出的结果进行过滤,得到术语序列和标签序列。
17.进一步地,所述步骤s30包括:
18.s301、利用所述术语序列和标签序列数据构造训练样本数据对所述ner模型进行训练,按最小化损失函数的方向求导反向传递并修正模型参数,修正的参数为bi-lstm神经网络权重值;
19.s302、ner模型预测输出候选术语,激活函数输出的概率大于p1的为正样本,第一动态阈值p1取值范围为0.2~0.5;
20.s303、将正样本与初始术语集和动态术语集进行对比去重,从而获得候选术语。
21.进一步地,所述步骤s30中,ner模型为bi-lstm神经网络,损失函数公式如下:
[0022][0023]
其中,n是训练样本数,yi表示样本i的标签概率值,若为正确类别的标签则yi=1,否则为0,a为第一调节因子,范围为0~1,li表示单条样本的交叉熵,n表示模型每次输入的样本数量;pi为模型激活函数预测输出的概率值。
[0024]
进一步地,所述第一动态阈值p1的计算公式为:其中k为迭代次数。
[0025]
进一步地,在步骤s40包括:
[0026]
s401、对所述术语序列和标签序列进行切分,并构建正则表达式序列;
[0027]
s402、将切分后的序列和正则表达式序列按照在语料文本中出现的频率进行统计排序,分别得到高频术语序列、高频标签序列、高频正则表达式序列,然后将出现频率大于预定阈值的序列分别加入术语序列模板集合、标签序列模板集合、正则表达模板集合;
[0028]
s403、根据上述三种模板集合对语料文本进行遍历匹配,获取模版识别的术语,其中,所述模版识别的术语未在所述术语集合中出现过。
[0029]
进一步地,所述步骤s50包括:
[0030]
s501、如果ner模型识别的候选术语的概率大于第二动态阈值p2,且是标签序列高频集合中的术语,则将所述候选术语保存到术语候选集;否则执行步骤s502;
[0031]
s502、如果ner模型识别的候选术语的概率大于第三动态阈值p3,且是术语序列高频集合或正则表达式序列高频集合中的术语,则将所述候选术语保存到术语候选集;否则将所述候选术语存入删除术语集合。
[0032]
进一步地,第二动态阈值p2和第三动态阈值p3的计算公式为:
[0033][0034][0035]
其中k为迭代次数,b为第二调节因子,范围为0~0.5。
[0036]
进一步地,所述步骤s60还包括:将所述术语候选集去重的结果保存到所述动态术语集合中。
[0037]
进一步地,所述步骤60还包括:通过统计候选术语在候选术语集合中出现的次数,将次数超过预定阈值的术语保存到所述动态术语集合。
[0038]
本发明的有益之处:
[0039]
(1)由专家制定业务术语集合,以保证后续逻辑可行性;
[0040]
(2)对模型损失函数进行调整,提高了ner模型泛化能力和术语召回率;
[0041]
(3)引入动态阈值参数并按照一定规则步骤进行相互校验,提高了新术语的可靠性。
[0042]
(4)ner模型训练无需人工标注数据,而采用术语匹配后的结果构造标注数据,并采用一定方法策略规避掉数据“假阴性”问题。
[0043]
(5)本方法在融合校验的基础上,增加了高频再召回机制和删除机制保证识别的术语准确可靠。
附图说明
[0044]
图1为根据本发明一个实施例的术语识别方法的流程示意图图;
[0045]
图2为根据本发明一个实施例的医疗术语识别方法的流程示意图;
[0046]
图3为bi-lstm网络的结构示意图。
[0047]
如图所示,为了能明确实现本发明的实施例的结构或者方法,在图中标注了特定的标记符号,但这仅为示意需要,并非意图将本发明限定在该特定设备和环境中,根据具体需要,本领域的普通技术人员可以将这些元件、标号、环境进行调整、修改,所进行的调整和修改仍然包括在后附的权利要求的范围中。
具体实施方式
[0048]
下面结合附图和具体实施例对本发明提供的一种术语识别方法进行详细描述。
[0049]
在以下的描述中,将描述本发明的多个不同的方面,然而,对于本领域内的普通技术人员而言,可以仅仅利用本发明的一些或者全部结构来实施本发明。为了解释的明确性而言,阐述了特定的数目、配置和顺序,但是很明显,在没有这些特定细节的情况下也可以实施本发明。在其他情况下,为了不混淆本发明,对于一些众所周知的特征将不再进行详细
阐述。
[0050]
根据本发明提出的术语识别方法,如图1、2所示,包括:
[0051]
s10、构建术语集合,包括初始术语模式集合和动态术语模式集合;
[0052]
s20、为输入的语料文本进行标注;
[0053]
s30、将获得的术语序列和标签序列输入ner模型进行训练,调整ner模型的参数,输出候选术语;
[0054]
s40、通过统计模版匹配获取模板识别的术语;
[0055]
s50、对候选术语进行融合校验,生成术语候选集:
[0056]
s60、更新动态术语模式集合,重复步骤s20-s60,直至动态术语模式集合收敛。
[0057]
初始术语模式集合的制定可以由行业专家根据领域知识、经验和应用需求进行设置,制定一套专业术语类型来囊括该领域或独立应用场景的术语集,能够保证后续术语识别的准确、可靠。例如医疗专家建立医疗领域的初始术语模式集合,建筑领域可以由建筑专家建立初始术语模式集合,等等。
[0058]
术语模式集合的结构为术语类型、对应的标签类型和术语,如表1所示,制定的模式类型包括:疾病、症状、部位、时间词、程度词、否定词等,对应的标签tag类型分别是:[dis]、[sym]、[pos]、[time]、[deg]、[not]等。
[0059]
表1
[0060][0061][0062]
在步骤s10中,术语模式集合分为初始术语模式集合和动态术语模式集合。初始术语模式集合是通过人工整理词表和业务系统获取,动态术语模式集合在初始时为空,通过后续步骤动态更新获得,能够动态增加和删除,并作为最终新识别的术语集。
[0063]
在步骤s20中,将输入的语料文本与初始术语集合和动态术语集合进行对比,以为语料文本中的词进行标注。其中,第一次运行时,只有初始化术语集,第一次运行后会产生一批动态术语集;后续每次迭代均由初始化术语集+动态术语集共同匹配语料产生标注序列,流程走完会更新动态术语集。
[0064]
标注的内容包括术语、标签类型、位置。例如,集合中有“膝盖肿胀”和“膝盖”两个术语,则文本“膝盖肿胀三天”可以匹配出“膝盖肿胀”+标签[sym]+位置[0,4],同时也会匹配出“膝盖”+标签[pos]+位置[0,2]),对医疗文本中未匹配的字符片段用标签“其它
”‑“
[-]”替代。
[0065]
(1)根据术语模式集合的结构为语料文本进行标注。标注或匹配的方法有多种,本
发明采用ac自动机进行匹配,这样可以有效降低时间复杂度。ac自动机方法为现有技术,在此不再赘述。
[0066]
在匹配所有的术语模式后,输出匹配到的术语及其在文本中的位置信息,如上例,结果中会出现重叠与交叉情况,如:“膝盖肿胀三天”能匹配出“膝盖肿胀
”‑“
[sym]”,同时又匹配出“膝盖
”‑“
[pos]”,两者在位置上重叠了,因此需要下一步进行过滤。
[0067]
(2)通过动态规划算法对步骤(1)输出的结果进行过滤,得到最优的术语序列和对应的标签序列。
[0068]
动态规划算法是一种常用的方法,动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,这种多阶段最优化决策解决问题的过程就称为动态规划。
[0069]
在一个实施例中,将匹配模式最大覆盖长度和术语词最长作为优化顺序目标,最终匹配出最优的术语序列组合,同时按照模式类型标注标签序列。下面举例说明:
[0070]
原文本:“膝盖肿胀三天”[0071]
最优序列组合:
[0072]
术语序列:“膝盖肿胀”/“三天”;
[0073]
标签序列:“[sym]”/“[time]”;
[0074]
而过滤掉
[0075]
术语序列:“膝盖”/“肿胀”/“三天”;
[0076]
标签列:“[pos]”/“[sym]”/“[time]”。
[0077]
原文本:“三天前出现咳嗽、发热症状。”[0078]
术语序列:“三天前”/“出现”/“咳嗽”/“、”/“发热”/“症状”/“。”[0079]
标签序列:“[time]”/“[has]”/“[sym]”/“[and]”/“[sym]”/“[suf]”/“[pun]”[0080]
在步骤s30中,将获得的术语序列和标签序列数据构造为ner模型的训练数据,训练过程即优化调整ner模型参数。训练好的ner模型再对电子病历进行预测识别,输出新的术语及标签。
[0081]
s301、利用所述术语序列和标签序列数据构造训练样本数据对所述ner模型进行训练,按最小化损失函数的方向求导反向传递并修正模型参数,修正的参数为bi-lstm神经网络权重值。
[0082]
ner模型(命名实体识别模型)是自然语言处理技术中一种常见的任务,本发明采用相对成熟的bi-lstm深度神经网络模型作为ner训练模型,并采用起点和终点的指针试的标注方式,如图3所示。
[0083]
模型的训练方法如下:首先利用术语序列和标签序列数据构造ner模型需要的训练样本数据,训练ner模型。由于初始术语集为冷启动数据,范围和数量比较有限,模型前期阴性训练样本中会包含较多的假阴性样本,为此,对模型的训练损失函数进行改造,使得模型对负(阴性)样本不敏感。损失函数公式如下:
[0084][0085]
其中,n是训练样本数,yi表示样本i的标签概率值,若为正确类别的标签则yi=1,否则为0,a为第一调节因子,范围(0~1),li表示单条样本的交叉熵,n表示模型每次输入的
样本数量;pi为模型激活函数预测输出的概率值。
[0086]
训练时,每批次训练样本经过ner模型网络后计算出损失函数值,按最小化损失函数的方向求导反向传递并修正模型参数,修正的参数为bi-lstm神经网络权重值。
[0087]
训练样本中负样本存在一些“假阴性”情况,为缓解训练样本漏标问题,通过调节因子a控制减弱对负样本的惩罚,有利于使得模型更接近真实情况。
[0088]
a基于实际经验调整,a越小,模型对负样本越不敏感,本发明中优选a=0.7。
[0089]
s302、ner模型预测输出候选术语,激活函数输出的概率大于p1的为正样本,第一动态阈值p1取值范围为0.2~0.5;
[0090]
通常预测时sigmoid激活函数输出的概率》0.5即为正样本,但本发明通过设定第一动态阈值p1来调节输出正样本,p1取值范围为0.2~0.5,这样进一步解决假阴性问题,弥补训练数据中正负样本不平衡性问题,以提高新术语识别能力。
[0091]
模型预测时,通过上一步训练好的模型进行候选术语识别,sigmoid输出概率值》第一动态阈值p1的则为正样本(即候选术语),方法运行初期因术语集量少,模型训练识别能力会比较弱,因此通过降低p1值提高模型识别新术语能力,到运行后期,因术语集量越来越多,模型训练出来的识别能力也逐渐变强,p1值应该随之增大,防止过多召回错误术语。因此,p1在每次迭代时的计算公式为:其中k为迭代次数。
[0092]
s303、将正样本与初始术语集和动态术语集进行对比去重,从而获得候选术语。
[0093]
对于ner模型识别出的术语与初始化术语集和动态术语集进行对比去重,过滤掉术语集中已知部分,剩余的识别词当作ner模型识别的候选术语。
[0094]
在步骤s40中,对s20步骤获取到的术语序列和标签序列,按照一定规则进行切分,比如基于“。”和“;”等特殊字符进行切分,并构建正则表达式,将切分后的序列和正则表达式按照在语料文本中出现的频率进行统计排序,分别得到高频术语序列、高频标签序列,然后将频率大于一定阈值的序列加入相应的模版集合:术语序列模板集合、标签序列模板集合、正则规则模版集合。如下样例所示为其中一个“症状”类型模版的构造:
[0095]
术语序列模版构造:
[0096]
[三天前][出现][咳嗽][、][高热][症状]-》[三天前][出现][xx][、][xx][症状]
[0097]
标签序列模版构造:
[0098]
[time][has][sym][and][sym][suf]-》[time][has][xx][and][xx][suf]
[0099]
正则模版构造:
[0100]“.[天|前]出现(.{2,5})、(.{2,5})症状”[0101]
其中[xx]和正则模版中“()”内容为待匹配的症状词槽位置,然后根据三类模版集合对医疗文本进行遍历匹配,获取到对应词槽位置的片段且未在术语集合中出现的词当作模版识别的术语词。
[0102]
在步骤s50中,由于前期初始术语集合和动态术语集合并非语料中所有术语词,通过匹配标注后构造的训练数据存在正负样本不平衡性和会引入不同程度的噪声,ner模型的预测结果也会存在一定偏差;另一方面,前期统计模版由于已知术语不足,覆盖的范围也会有限,同样也会存在准确性偏差。因此本发明将两者结合起来,进行双重限定来提高术语抽取的准确性,具体融合校验方法如下:
[0103]
s501、在ner模型输出的候选术语基础上进行进一步概率阈值判断校验,通过该阈值校验结合标签模版校验来增加新术语准确性。具体来说,如果ner模型识别的候选术语,其预测输出时sigmoid函数的输出概率阈值》第二动态阈值p2,且同时是标签模版集合中的术语,则将其保存到术语候选集。
[0104]
举例来说,比如“三天前出现咳嗽、高热症状”中,ner模型预测获取了候选术语“高热”,同时构造的标签模版集中存在“[time][has][sym][and][xx][suf]”,则认为“高热”被模版覆盖,即“高热”是标签模板识别的术语,则将该术语增加到术语候选集;
[0105]
s502、如果ner模型识别的术语词预测输出时sigmoid函数的输出概率阈值》第三动态阈值p3,且是术语序列模版集合或正则模版集合中的词,例如,术语序列模版“[三天前][出现][咳嗽][、][xx][症状]”认为“高热”被该模版覆盖,则将该术语增加到术语候选集;否则将术语放入删除术语集合。
[0106]
第二动态阈值p2和第三动态阈值p3是动态更新的,更新公式如下:
[0107][0108][0109]
其中k为迭代次数,b为第二调节因子,范围是0~0.5,优选为0.3。
[0110]
在步骤s60中,对术语候选集与初始术语集合和动态术语集合进行对比去重,然后将结果保存到动态术语集合中。还可以对动态术语集合进行删减,存在于删除术语集合中的术语,需要从动态术语集合中删除,已保证新术语动态变化和准确,然后重新迭代,即重复步骤s20-s60,直到动态术语集合不变化时(即不增加也不删除),则达到收敛,终止迭代,此时的动态术语集合则为本次识别的新术语集。
[0111]
另外,为了进一步增加候选术语召回率,还可以通过统计候选术语存在候选术语集合中出现的次数,将次数超过预定阈值的候选术语添加到动态术语集合。
[0112]
本发明提供的方法能够自动化抽取文本的术语,ner模型方法无需人工标注训练数据,直接采用术语匹配获取监督样本;减少了大量人力成本。同时,本发明通过引入调节因子,改造ner模型损失函数方式,提高了模型泛化能力,增强模型对新术语的识别能力。在融合校验过程中引入动态阈值方式,提高了方法动态自适应能力,减少大量无效噪声影响。而且,本发明增加了术语删除机制,每次迭代不理想的术语将会被删除,提高了方法的鲁棒性。本发明同时还能获得三种类型模版,无需人工整理。
[0113]
最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其他的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。
技术特征:1.一种术语识别方法,其特征在于,包括:s10、构建术语集合,包括初始术语模式集合和动态术语模式集合;s20、为输入的语料文本进行标注;s30、将获得的术语序列和标签序列输入ner模型进行训练,调整ner模型的参数,输出候选术语;s40、通过统计模版匹配获取模板识别的术语;s50、对所述候选术语进行融合校验,生成术语候选集:s60、更新动态术语模式集合,重复步骤s20-s60,直至所述动态术语模式集合收敛。2.根据权利要求1所述的术语识别方法,其特征在于,所述步骤s20包括:s201、根据所述初始术语集合和动态术语集合为所述语料文本中的词进行标注;s202、通过动态规划算法对步骤s201输出的结果进行过滤,得到术语序列和标签序列。3.根据权利要求1所述的术语识别方法,其特征在于,所述步骤s30包括:s301、利用所述术语序列和标签序列数据构造训练样本数据对所述ner模型进行训练,按最小化损失函数的方向求导反向传递并修正模型参数,修正的参数为bi-lstm神经网络权重值;s302、ner模型预测输出候选术语,激活函数输出的概率大于p1的为正样本,第一动态阈值p1取值范围为0.2~0.5;s303、将正样本与初始术语集和动态术语集进行对比去重,从而获得候选术语。4.根据权利要求3所述的术语识别方法,其特征在于,所述步骤s30中,ner模型为bi-lstm神经网络,损失函数公式如下:其中,n是训练样本数,yi表示样本i的标签概率值,若为正确类别的标签则yi=1,否则为0,a为第一调节因子,范围为0~1,li表示单条样本的交叉熵,n表示模型每次输入的样本数量;pi为模型激活函数预测输出的概率值。5.根据权利要求3所述的术语识别方法,其特征在于,所述第一动态阈值p1的计算公式为:其中k为迭代次数。6.根据权利要求1所述的术语识别方法,其特征在于,在步骤s40包括:s401、对所述术语序列和标签序列进行切分,并构建正则表达式序列;s402、将切分后的序列和正则表达式序列按照在语料文本中出现的频率进行统计排序,分别得到高频术语序列、高频标签序列、高频正则表达式序列,然后将出现频率大于预定阈值的序列分别加入术语序列模板集合、标签序列模板集合、正则表达模板集合;s403、根据上述三种模板集合对语料文本进行遍历匹配,获取模版识别的术语,其中,所述模版识别的术语未在所述术语集合中出现过。7.根据权利要求1所述的术语识别方法,其特征在于,所述步骤s50包括:s501、如果ner模型识别的候选术语的概率大于第二动态阈值p2,且是标签序列高频集合中的术语,则将所述候选术语保存到术语候选集;否则执行步骤s502;s502、如果ner模型识别的候选术语的概率大于第三动态阈值p3,且是术语序列高频集
合或正则表达式序列高频集合中的术语,则将所述候选术语保存到术语候选集;否则将所述候选术语存入删除术语集合。8.根据权利要求7所述的术语识别方法,其特征在于,第二动态阈值p2和第三动态阈值p3的计算公式为:p3的计算公式为:其中k为迭代次数,b为第二调节因子,范围为0~0.5。9.根据权利要求1所述的术语识别方法,其特征在于,所述步骤s60还包括:将所述术语候选集去重的结果保存到所述动态术语集合中。10.根据权利要求9所述的术语识别方法,其特征在于,所述步骤s60还包括:通过统计候选术语在候选术语集合中出现的次数,将次数超过预定阈值的术语保存到所述动态术语集合。
技术总结本申请提出一种术语识别方法,包括:构建初始术语模式集合和动态术语模式集合;为输入的语料文本进行标注;将获得的术语序列和标签序列输入NER模型进行训练,调整NER模型的参数,输出候选术语;将获得的术语序列和标签序列构建统计模版;通过统计模版匹配获取模板识别的术语;对所述候选术语进行融合校验,生成术语候选集,更新动态术语模式集合;重复上述步骤,直至所述动态术语模式集合收敛。通过本发明,无需人工标注训练样本,仅由少量术语即可通过不断迭代自动识别新术语,自动化程度较高,模型收敛速度快,训练时间少。训练时间少。训练时间少。
技术研发人员:潘泽华 屈高超
受保护的技术使用者:北京新纽科技有限公司
技术研发日:2022.07.20
技术公布日:2022/11/1