一种基于反事实生成的命名实体识别增强方法与流程

文档序号:23711392发布日期:2021-01-23 20:35阅读:242来源:国知局
一种基于反事实生成的命名实体识别增强方法与流程

[0001]
本发明属于命名实体识别的技术领域,具体涉及一种基于已有训练样本生成反事实样本的命名实体识别增强方法。


背景技术:

[0002]
命名实体识别(named entity recognition,ner)技术是构建结构化知识的一种基本技术,它是指从文本中抽取命名式的提及并对其进行分类,比如人名、地名和机构名等。该技术在医疗、金融和法律等领域均有大量应用,比如在医疗领域,命名实体识别可以从医学文本中抽取有意义的诊断、手术和部位等实体,这可为下游的知识图谱构建、知识推理和问答系统提供重要的基础。
[0003]
现有主流的实体抽取主要是基于神经网络的方法,这类方法把实体抽取看作是一个学习问题,首先标注大量的训练文本,然后将训练文本送到实体识别模型中去学习。实体识别模型一般是将命名实体识别任务看作序列标注问题,将循环神经网络(lstm、gru等)或者是预训练语言模型(elmo、bert等)作为编码器来编码句子,然后再利用多层感知机针对句子中每个字符进行标签的分类,最后根据标签来确定实体的位置。这类方法有一个明显的缺点,需要大量的实体标注数据才能使得模型学习到比较好的效果。
[0004]
为了克服这个问题,有许多方案被发明出来用于解决少量标注数据的场景。比如,迁移学习可以将相似实体抽取领域数据集的先验知识迁移到当前领域,这使得当前领域只需要少部分标注数据就可以达到比较好的效果;自训练可以利用已有的标注数据对未标注的数据进行打标,这种方法可以自动的从未标注的数据中产生监督数据,有效地减轻了数据标注的工作量。然而,这些方案仍然存在一些问题。一方面,对于某些特殊领域,相似领域的数据集很难找到,如果没有相似领域的数据集,迁移学习就无法利用先验知识来增强现有领域的实体抽取模型。另一方面,同样地,在某些领域大量的无标注数据也很难找到。比如在医疗领域,由于隐私保护的原因,人们很难获取到大量的电子医疗文本,这使得自训练的方案也无法有效的展开。
[0005]
因此,在一些无法收集到大量文本数据以及无相似领域数据集的场景,命名实体识别任务只能在少量的标注数据中进行。少量标注数据场景下模型性能不高的原因之一是由于数据集的选择偏差而导致模型在学习输入数据与输出标签的映射关系时存在着统计学习中的伪相关(spurious correlations)。这种伪相关可以生动地被计算机视觉中的一个例子所解释:假如有一个包含牛和骆驼的图像数据集,如果这个数据集在收集图像数据的时候只考虑动物的栖息地,那么在该数据集训练的分类器将会建立起输入数据中的风景(绿色草地、沙漠)和输出标签(牛、骆驼)之间的映射关系。作为结果,如果将一只在沙滩上的牛的照片送入到这个分类器,那么这个分类器将会做出错误的分类。这是因为构建数据集时的选择偏差而导致分类器学到了风景部分特征和输出标签之间的伪相关,决定分类器输出标签的最本质和最稳定的特征应该是动物本身的特征。


技术实现要素:

[0006]
为了解决背景技术中小数据集导致的伪相关问题,本发明提供了一种与主流实体抽取模型无关的数据增强方法。该方法能够在一定程度上克服这种伪相关的问题,能够让模型学习到更本质、更稳定的特征,从而提高模型的稳定性和泛化性能。该方法能被运用于各种少量标注的命名实体识别的场景中。
[0007]
为了达到上述目的,本方法的具体步骤如下:
[0008]
一种基于反事实生成的命名实体识别增强方法,其包括如下步骤:
[0009]
s1:依次遍历已有标注数据的训练集中的所有数据样本x,抽取数据样本x中的所有实体e,并按照实体类别进行分类,实体类别为t的所有数据样本构成本地实体集合所有的本地实体集合为
[0010]
s2:以训练集中已有标注数据的数据样本(x,y)作为观测样本,按照s21~s24生成反事实样本:
[0011]
s21:逐一遍历训练集中的所有观测样本(x,y),针对每一个单独的观测样本(x,y),执行s22~s24:
[0012]
s22:随机从该观测样本的所有实体中选择一个实体类别为t的实体e,用于实体替换;
[0013]
s23:根据选中实体e对应的实体类型t,确定其对应的本地实体集合
[0014]
s24:遍历该本地实体集合针对本地实体集合中的每一个候选实体如果候选实体e

与用于替换的实体e不相同,则用候选实体e

替换掉观测样本(x,y)中的实体e,每一次替换都会产生一个新的反事实样本(x
c
,y
c
);针对每一个观测样本(x,y),一共产生n-1个新的反事实样本(x
c
,y
c
),其中n为本地实体集合中的候选实体数量;
[0015]
s3:使用判别器对s2中生成的反事实样本进行判别,如果一个反事实样本(x
c
,y
c
)中被替换后的实体e

能够被判别器准确的识别出来,则将该反事实样本判别为合理的;
[0016]
所述判别器是一个由编码器和序列标注器两部分组成的命名实体识别模型;所述编码器用于对观测样本的输入句子x和反事实样本的输入句子x
c
进行编码,编码后句子中的每个语义单元将会获得一个d维的表示向量;所述序列标注器由多层感知机组成,用于对每个输入的语义单元进行分类;所述判别器预先在已有标注数据的训练集上进行训练,从而获得反事实样本判别所需要的先验知识;
[0017]
s4:将s3中所有被判别为合理的反事实样本和训练集中的观测样本进行组合,形成一个增强的训练数据集用于最终的命名实体识别模型的训练。
[0018]
在上述方案的基础上,本发明的各步骤还可以进一步采用如下优选方式实现。
[0019]
作为优选,所述的编码器为预训练语言模型或者循环神经网络模型。
[0020]
进一步的,所述的编码器为循环神经网络模型时,需要额外的预训练静态词向量进行语义单元的嵌入才可输入到编码器中。
[0021]
作为优选,所述序列标注器中,序列标注的标注体系采用bio标注体系。
[0022]
进一步的,所述序列标注器的输入大小与所述语义单元的表示向量的维度d相同;所述序列标注器的输出层的大小为2m+1,其中m为数据集的实体类型个数。
[0023]
进一步的,所述的预训练语言模型包括elmo或bert。
[0024]
进一步的,所述的循环神经网络模型包括lstm或gru。
[0025]
作为优选,所述的语义单元是最小不可分割的输入符号,包括字符、词语或者短语。
[0026]
本发明可以看作是对已有观测样本的实体和上下文进行解耦合,并对它们进行重组。本发明通过对实体和上下文的重组,提高了训练数据的多样性,有效地打破了实体抽取模型流程中输入数据与输出标签中的部分伪相关,从而提高了模型的健壮性和泛化能力。
附图说明
[0027]
图1是本发明的整体流程示意图。
[0028]
图2是反事实样本生成示例。
[0029]
图3是结构因果图模型。
具体实施方式
[0030]
作为本发明的一种较佳实现形式,提供了一种基于反事实生成的命名实体识别增强方法,该方法能够自动增强命名实体识别数据集,具体包括如下步骤:
[0031]
1、获取本地实体集合
[0032]
本地实体是指实体全部来自于已有的标注数据,而非额外的实体字典等外部资源。获取本地实体集合ε主要有以下步骤:
[0033]
1)将已有的标注数据集按照一定地比例划分为三份:训练集开发集和测试集其中训练集用于实体抽取模型的训练,开发集用于调模型的超参数,测试集则用来测试模型的性能。本发明主要对训练集进行增强。
[0034]
2)依次遍历已有标注数据的训练集中的所有数据样本x,抽取数据样本x中的所有实体e,并按照实体类别进行分类,实体类别为t的所有数据样本构成本地实体集合值得注意的是,这里的实体类别t可以不止一种,因此对应地也有不同的本地实体集合所有的本地实体集合记为
[0035]
2、反事实样本生成
[0036]
训练集中已有标注的数据样本(x,y)是采集于真实世界的样本,本发明中称为观测样本。本方法的核心思想是基于在观测样本上的自动化修改,产生反事实样本来增加训练样本的多样性,从而打破背景技术中提到的伪相关问题。修改的主要手段是把句子中的实体和上下文进行解耦合,并用一个不同的实体去干预句子中的实体,即替换掉某一个实体。反事实样本的详细生成步骤如下:
[0037]
1)逐一遍历训练集中的所有观测样本(x,y),对每个观测样本执行后续步骤2)~4);
[0038]
2)针对每一个单独的观测样本(x,y),随机从该样本的所有实体中选择一个实体e,记该实体的类型为t,该实体用于后续步骤的实体替换;
[0039]
3)为了保持新产生的反事实样本的语义连贯性,本方法选择与选中实体e有着相
同实体类型t的实体e

来进行替换,因此可以确定对应的本地实体集合
[0040]
4)遍历该实体集合针对本地实体集合中的每一个候选实体如果候选实体e

与用于替换的实体e不相同,则用候选实体e

替换掉观测样本(x,y)中将被替换的实体e。每一次替换都会产生一个新的反事实样本(x
c
,y
c
)。如果本地实体集合中有n个候选实体,那么针对每一个观测样本(x,y),将会产生n-1个新的反事实样本(x
c
,y
c
)。
[0041]
3、反事实样本判别
[0042]
考虑到并不是所有的反事实样本(x
c
,y
c
)都是合理的,而且有部分可能会带来噪音,进而导致实体抽取模型的性能下降,因此设计了一个额外的判别器对上一步中生成的反事实样本进行判别。判别器是一个命名实体识别模型,判别器主要由编码器和序列标注器两部分组成,具体如下:
[0043]
1)编码器主要负责对观测样本的输入句子x和反事实样本的输入句子x
c
进行编码,编码后句子中的每个语义单元将会获得一个d维的表示向量。特别地,这里的语义单元可以为字符、词语或者短语,具体情况视分词器(tokenizer)而定。编码器既可以由上下文相关的预训练语言模型(如elmo、bert等)组成,也可以由循环神经网络(如lstm、gru等)构成。针对后者这种情况,还需要额外的预训练静态词向量(如word2vec、glove等)进行语义单元的嵌入才可输入到编码器中。
[0044]
2)序列标注器由多层感知机组成,用于对每个输入的语义单元进行分类。序列标注器的输入大小与上一步所述的语义单元表示向量的维度d相同,输出大小则与序列标注的标注体系有关。本发明的标注体系采用命名实体识别常见的bio标注体系,假设数据集的实体类型有m个,那么输出层的大小为2m+1。
[0045]
随机初始化的判别器没有较为完备的先验知识去指导反事实样本(x
c
,y
c
)的判别,因此判别器需要在原有观测样本的训练集进行训练,从而获得反事实样本判别所需要的先验知识,训练后的判别器可用于样本的判别。判别标准是:将每一个新的反事实样本(x
c
,y
c
)送入该训练好的判别器,如果判别器能够正确的预测出样本中被替换后的实体e

,那么这个反事实样本就被判别为是合理的。
[0046]
4、当所有的反事实样本都经过判别器判别后,即可将所有被判别为合理的反事实样本和训练集中的观测样本进行组合,形成一个增强的训练数据集一旦增强的训练数据集准备好,命名实体识别模型就可以在这个新的增强的数据集上进行训练。
[0047]
在实体识别任务上基于结构因果模型的伪关系测量方法,其特点包括如下步骤:
[0048]
1)将句子中的实体和上下文解耦合,分别表示为两个不同的变量e和c;
[0049]
2)为了描述命名实体识别任务的推理流程,用变量g表示影响变量e和c的因素,实体e和上下文c共同决定着输入句子x,同时,对于同一个已经训练好的实体抽取模型,不同的输入句子x决定着模型性能y,结构因果图模型建模为:
[0050]
g

e

x

y
[0051]
g

c

x

y
[0052]
3)设计特殊的语义单元[empty]去分别干预实体或者上下文中的语义单元,一旦某个语义单元被替换为[empty],那么这个语义单元的嵌入向量的所有维度将会置为0;
[0053]
4)利用平均因果效应(average causal effect,ace)来测量实体e和上下文c对模
型性能y的影响,表示如下:
[0054]
ace
c
=e(y|do(c
0
))-e(y|do(c))
[0055]
ace
e
=e(y|do(e
0
))-e(y|do(e))
[0056]
5)因果效应可以一定程度上反应实体识别中的伪关系,利用训练好的实体抽取模型在测试集分别测试实体和上下文的因果效应;
[0057]
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图与医疗领域的诊断抽取数据对技术方案进行描述。值得注意的是,所描述的实施例仅仅是本申请中的一部分实施例,而不是全部的实施例。该实施例中的具体步骤如前苏搜狐,不再赘述,下面主要展示其具体参数和技术效果。
[0058]
实施例
[0059]
本实施例的具体实施方法如图1所示,步骤如下:
[0060]
1.获取本地集合
[0061]
从电子医疗记录中收集医学文本,并利用文本打标工具(label studio)对医学文本中的诊断进行标注。如图1中步骤(1)所示,获取本地实体集合的详细步骤如下:
[0062]
1)将已标注的医学文本划分为三部分:训练集(80%)、开发集(10%)和测试集(10%)。
[0063]
2)依次遍历训练集中的所有样本,抽取所有实体并按照实体类型进行分类,形成本地实体集合。由于此处只有诊断类型的实体,因此只有一种本地实体集合,诊断集合。
[0064]
2.反事实样本生成
[0065]
反事实样本的生成如图1中步骤(2)所示,详细步骤如下:
[0066]
1)逐一遍历训练集中的所有医学文本。
[0067]
2)针对每一个医学文本,随机的从中选择一个诊断实体(乳头状腺癌),该实体将会用于后续的实体替换步骤。
[0068]
3)为了保持新产生的反事实样本的语义连贯性,采用同样是诊断类型的候选实体对上述步骤中被选中的实体进行替换,候选实体来自于诊断集合。
[0069]
4)遍历诊断集合,针对每一个候选实体,如果候选实体与被选中的实体相同则跳过,反之则利用该候选实体替换掉被选中的实体,进而产生一个新的反事实样本,此处候选实体为白内障。此处的诊断集合总共有10个候选实体,那么针对当前的医学文本,将会产生9个新的反事实样本。
[0070]
生成反事实样本的过程可以看作是对现有句子的实体和上下文进行重组,特别地,图2展示了训练集中只有两个观测样本的重组实例。
[0071]
3.反事实样本的判别
[0072]
图1中步骤(3)所示,反事实样本的判别需要一个带有先验知识的判别器对其进行判别,选用预训练语言模型作为编码器,多层感知机作为序列标注器。本实施例中,判别器配置如下:
[0073]
1)编码器为预训练模型bert-base,其中隐藏层数目为6,隐藏向量大小为512。
[0074]
2)感知机的层数为2,由于只有一种实体类型,故输出标签为{o,b-diagnosis,i-diagnosis},由此可得出感知机的输出维度为3。
[0075]
判别器会预先在已有的训练集中进行训练,针对每一个反事实样本,如果训练过
的判别器能够成功地预测出被替换的实体(白内障),那么这个反事实样本会被认为是合理的。
[0076]
4.所有合理的反事实样本和训练集中的样本会组成一个新的增强训练集,最终实体抽取模型的训练将会在增强训练集上进行。
[0077]
5.伪特征测量
[0078]
为了测量输入数据中伪特征存在的位置,本发明引入了结构因果模型对实体抽取过程进行了建模,并测量不同部分对模型性能的因果效应,具体的步骤如下:
[0079]
1)将输入句子中的实体和上下文进行解耦合,分别表示为两个不同的变量e和c;
[0080]
2)考虑到实体e和上下文c均可以为一个人或者某个生成句子的装置所产生,所以将此单独表示为变量g,即用变量g表示影响变量e和c的因素。实体e和上下文c又共同决定着输入句子x,同时,对于同一个已经训练好的实体抽取模型,不同的输入句子x决定着模型性能y。因此,结构因果图模型建模为:
[0081]
g

e

x

y
[0082]
g

c

x

y
[0083]
具体而言,该结构因果模型可建模为以下式子:
[0084]
g:=f
g
(u
g
)
[0085]
e:=f
e
(g,u
e
)
[0086]
c:=f
c
(g,u
c
)
[0087]
x:=f
x
(e,c,u
x
)
[0088]
y:=f
y
(x,u
y
)
[0089]
其中u
*
代表未观测的因素总和。
[0090]
3)本发明利用干预手段去测试实体e和上下文c在模型性能y上的因果效应,并设计了一个特殊的语义单元[empty]去分别替换实体e或者上下文c中的语义单元,一旦某个语义单元为[empty],那么这个语义单元的嵌入向量的所有维度将会被置0,对实体e或者上下文c的干预分别记为do(e
0
)和do(c
0
);
[0091]
4)本发明利用平均因果效应(average causal effect,ace)来测量实体e和上下文c对模型性能y的影响,表示如下:
[0092]
ace
c
=e(y|do(c
0
))-e(y|do(c))
[0093]
ace
e
=e(y|do(e
0
))-e(y|do(e))
[0094]
其中c和e分别代表未干预的上下文和实体。
[0095]
5)平均因果效应ace
c
和ace
e
分别代表着实体表征和上下文表征在实体抽取模型中的重要程度,值越高说明重要程度越高。实体抽取模型在训练集上训练好之后,就可以利用上一步所述的公式对测试集进行测量。重要程度越高,说明伪相关的特征越少。
[0096]
如图3(a)所示,伪特征测量主要是利用结构因果模型去测量输入句子中实体和上下文对模型性能的影响大小,即平均因果效应ace。测量方法中用特殊语义单元[empty]去替换上下文或者实体中的语义单元,如图3(b)和图3(c)所示。测试数据来自于测试集,测试的结果显示在实体抽取模型当中,实体表征的重要性要远大于上下文的表征。在利用本发明的反事实样本进行增强之后,实体表征的重要性增加了且泛化性能大大提升,这说明伪关系更多地存在于上下文的表征与输出标签当中。
[0097]
以上所述的实施例只是本发明的一种较佳的方案,然其并非用以限制本发明。有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型。因此凡采取等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1