1.本发明属于自然语言处理领域,具体涉及多关系词对标签空间的实体关系联合抽取方法。
背景技术:2.实体关系联合抽取是自然语言处理的一项基本的任务,现有的实体关系联合抽取方法存在一定的局限性。实体关系联合抽取旨在从一个非结构化文本的句子中抽取出所有正确的包含头实体,关系和尾实体的三元组。但是在真实的场景中,句子的上下文信息是非常复杂的,涉及到了不同类型的三元组重叠的问题。
3.如图1所示,给出了四种三元组的重叠情况:epo为实体对重叠、seo为单一实体重叠、soo为头实体尾实体重叠、normal为正常的三元组。当前的大多数模型对这种复杂语境下的实体关系抽取存在一些缺陷。而那些比较完善的模型却不能很好的应对这种三元组重叠的情况。总体来看,现有的实体关系抽取模型存在如下缺陷:
4.目前在实体关系联合抽取任务上表现最好的模型多数为只能应对简单非重叠三元组的情况,该模型框架却不能应用在复杂语境下处理重叠三元组。
5.对于重叠三元组情况,目前也有很多实体关系抽取研究涌现了出来。主要可以分为两大类,分别是流水线方式和联合抽取方式。其中,流水线方式就是按照先后顺序分别完成,首先先对句子进行命名实体识别,然后再对这些候选实体两两进行关系的分类。这种流水线方式具有很低的耦合性,任务之间的关联度不高。这就会导致任务之间的信息交互性差,存在误差传递和暴露偏差的问题。
6.对于联合抽取方式,又可以细分为多任务学习和单步单模块抽取。多任务学习指的是把实体关系联合抽取任务划分为多个具有相关联系的子模块协同工作完成。目前存在先预测关系再对具体关系进行头实体尾实体识别,先识别头实体再预测关系最后识别尾实体等相关方法。这种多任务学习相比流水线方式有所改进,可以使各模块之间进行一定的信息交互,比如在实体识别模块中具有关系信息,在关系预测模块中带有实体信息。但是这种信息的交互在各模块间并不是完全共享的,其次,和流水线方式一样,各模块间由于低耦合的问题,仍然会存在模块间的误差传递和暴露偏差的问题。
7.目前公众认为最优的模型框架就属单步单模块的形式。它是通过一个单独的模块进行语义编码,通过一步的方式抽取出句子中所有的三元组。该方法在同一个模块中完全共享了实体和关系信息,也不会存在模块间的误差传递和暴露偏差的影响。现有的单步单模块的模型研究不多,并且存在模型训练和推理效率不高,共享的实体信息相对不完整的问题。
技术实现要素:8.本发明所要解决的技术问题是针对上述现有技术的不足,提供多关系词对标签空间的实体关系联合抽取方法。
9.为实现上述技术目的,本发明采取的技术方案为:
10.多关系词对标签空间的实体关系联合抽取方法,基于实体关系联合抽取模型实现,所述实体关系联合抽取模型包括输入层、tokenize层、max pooling层和联合抽取层,所述方法包括:
11.步骤1、输入层接收英文训练样本或预测阶段的样本;
12.步骤2、tokenize层将输入层接收到的样本句子根据词表进行token化,经过bert编码后,得到token语义表示向量以及得到记录单词在token序列起始位置的字典;
13.步骤3、max pooling层,基于所述字典,将token语义表示向量进行最大池化,得到句子中每个单词的语义向量表示。
14.步骤4、联合抽取层枚举句子中所有的词对,并为其在所有预定义关系空间下进行标签打分,最后根据标签特征进行联合抽取。
15.为优化上述技术方案,采取的具体措施还包括:
16.上述的步骤2所述tokenize层使用到的是pytorch keras bert包中的tokenizer将输入层接收到的样本句子根据词表进行token化。
17.上述的步骤2对于句子w={w1,w2,...,w
x
},wi表示句子中的第i个单词,经过token化和bert编码后,得到token语义表示向量其中n表示token个数,ti表示第i个token,w
enc
表示句子中所有token编码后的语义向量,d是语义向量维度大小,以及得到记录单词在token序列起始位置的字典index。
18.上述的步骤3利用max pooling操作把token语义表示向量融合为词向量表示,公式为:
19.index=[(1,n1)1,(n1+1,n2)2,...,(ni,n)
x
],
[0020][0021]
index指的是在tokenize层得到的记录单词在token序列起始位置的字典;
[0022]
:是序列的切片操作;
[0023]
embi表示得到的第i个单词的向量表示。
[0024]
上述的步骤4采用的标签策略具体如下:
[0025]
对于一个输入的句子样本w={w1,w2,...,w
x
}和一组预定义的关系集合r={r1,r2,...,rq},生成一个q维的标签矩阵tmq×
x
×
x
,其中x表示句子的长度,ri表示关系集合中的第i种关系,q为关系的总数;
[0026]
矩阵tm的每一个维度都与r中一种关系相对应,每一个方格中会有一个模型生成的具有特定含义的标签;
[0027]
矩阵中的行和列分别表示头实体和尾实体;
[0028]
所述解码就是根据特定的标签含义,在矩阵中一次性抽取出所有预测的三元组。
[0029]
上述的所述标签策略根据实体长度的特征和头实体尾实体对齐的方式设置八种标签:ss,smh,smt,msh,mst,mmh,mmt,a;
[0030]
其中,ss表示头实体和尾实体都是由单个单词组成;
[0031]
smh表示头实体是由单个单词组成,尾实体是由多个单词组成,当前对齐是头实体和尾实体的首单词;
[0032]
smt表示头实体是由单个单词组成,尾实体是由多个单词组成,当前对齐是头实体的首单词和尾实体的尾单词;
[0033]
msh表示头实体是由多个单词组成,尾实体是由单个单词组成,当前对齐是头实体和尾实体的首单词;
[0034]
mst表示头实体是由多个单词组成,尾实体是由单个单词组成,当前对齐是头实体的尾单词和尾实体的首单词;
[0035]
mmh表示头实体和尾实体都是由多个单词组成,当前对齐是头实体和尾实体的首单词;
[0036]
mmt表示头实体是由多个单词组成,尾实体是由单个单词组成,当前对齐是头实体的首单词和尾实体的尾单词或头实体的尾单词和尾实体的尾单词;
[0037]
a表示空标签。
[0038]
上述的步骤4所述联合抽取层在所有预定义关系下枚举所有的词对(embi,embj)为其分配高置信度标签实现解码。
[0039]
上述的步骤4所述联合抽取层应用两个低维度的多层感知器mlps把高维单词语义向量映射到低维实体表示向量:
[0040]hi
=mlp
head
(embi),
[0041]
tj=mlp
tail
(embj)
[0042]
其中,mlp表示多层感知机;
[0043]
为多层感知机维度;
[0044]de
为实体表示的维度;
[0045]
head,tail分别表示头实体和尾实体。
[0046]
上述的步骤4所述联合抽取层经过一次计算为每个单词对在所有预定义关系下进行打分,公式为:
[0047][0048]
其中,y(hi,rq,tj)是训练集中标注的标签;
[0049][0050]
relu表示激活函数;
[0051]
drop表示dropout策略;
[0052]
是一个可训练的关系投影参数矩阵;
[0053]
8表示分类的标签个数。
[0054]
本发明具有以下有益效果:
[0055]
本发明结合实体本身特点,以及实体到多关系空间的映射,制定了实体与关系交融的标签策略,以及多关系下一次建模的计算方法,最终使得模型在复杂关系下进行实体关系联合抽取的效果和效率得到了进一步的提升,为自然语言处理的底层提供了更好的保障。
附图说明
[0056]
图1为现有的实体关系联合抽取方法三元组的重叠情况;
[0057]
图2为本发明多关系词对标签空间的实体关系联合抽取方法原理图;
[0058]
图3为标签生成结果案例分析。
具体实施方式
[0059]
以下结合附图对本发明的实施例作进一步详细描述。
[0060]
如图2所示,本发明多关系词对标签空间的实体关系联合抽取方法,基于实体关系联合抽取模型实现,所述实体关系联合抽取模型包括输入层、tokenize层、max pooling层和联合抽取层,所述方法包括:
[0061]
步骤1、输入层接收英文训练样本句子或预测阶段的样本语句子;
[0062]
步骤2、tokenize层将输入层接收到的样本句子根据词表进行token化,经过bert编码后,得到token语义表示向量以及得到记录单词在token序列起始位置的字典;
[0063]
tokenize层使用到的是pytorch keras bert包中的tokenizer,其作用是将输入层接收到的样本句子根据词表进行token化。同时会有一个字典,用于记录句子被tokenize后,每个单词在token序列中的起始位置。以便后续的bert预训练模型进行语义上下文的编码和单词语义表示的形成。为了实验对比公平,本文在语义编码层也是使用的bert预训练模型。
[0064]
步骤3、max pooling层,基于所述字典,将token语义表示向量进行最大池化,得到句子中每个单词的语义向量表示。
[0065]
这一层对于提高整个模型的训练和推理速度以及增强联合抽取模块中信息的交互起着十分重要的作用。
[0066]
步骤4、联合抽取层枚举句子中所有的词对,并为其在所有预定义关系空间下进行标签打分,最后根据标签特征进行联合抽取。
[0067]
联合抽取层是任务最关键的一步,相关技术如下
[0068]
标签策略和解码过程
[0069]
对于一个输入的句子样本w={w1,w2,...,w
x
}和一组预定义的关系集合r={r1,r2,...,rq},实体关系联合抽取模型会生成一个q维的标签矩阵tmq×
x
×
x
,其中x表示句子的长度,ri表示关系集合中的第i种关系,q为关系的总数。
[0070]
矩阵tm的每一个维度都与r中一种关系相对应,每一个方格中会有一个模型生成的具有特定含义的标签。
[0071]
矩阵中的行和列分别表示头实体和尾实体。
[0072]
解码就是根据特定的标签含义,在矩阵中一次性抽取出所有预测的三元组。
[0073]
本发明根据实体长度的特征和头实体尾实体对齐的方式设置了八种标签:ss,smh,smt,msh,mst,mmh,mmt,a。
[0074]
标签中的s和m分别表示当前实体是由单个单词组成和由多个单词组成。
[0075]
ss表示头实体和尾实体都是由单个单词组成;
[0076]
smh表示头实体是由单个单词组成,尾实体是由多个单词组成,当前对齐是头实体和尾实体的首单词;
[0077]
smt表示头实体是由单个单词组成,尾实体是由多个单词组成,当前对齐是头实体的首单词和尾实体的尾单词;
[0078]
msh表示头实体是由多个单词组成,尾实体是由单个单词组成,当前对齐是头实体和尾实体的首单词;
[0079]
mst表示头实体是由多个单词组成,尾实体是由单个单词组成,当前对齐是头实体的尾单词和尾实体的首单词;
[0080]
mmh表示头实体和尾实体都是由多个单词组成,当前对齐是头实体和尾实体的首单词;
[0081]
mmt表示头实体是由多个单词组成,尾实体是由单个单词组成,当前对齐是头实体的首单词和尾实体的尾单词或头实体的尾单词和尾实体的尾单词;
[0082]
a表示空标签。
[0083]
使用这种标签体系,能够充分利用实体本身的特征并且便于解码。
[0084]
在解码过程中,只需要在q维矩阵tm中分别找出合法的词对对齐位置即可。详细的解码示例如图2。
[0085]
在“capital”关系这个维度,发现词对(shijiazhuang,hebei)属于标签smh,那么头实体即是“shijiazhuang”。
[0086]
尾实体的首单词是“hebei”,需要沿着当前行向后寻找,当找到标签smt终止,尾实体即是“hebei province”。
[0087]
三元组(shijiazhuang,capital,hebei province)被抽取出来。
[0088]
在“contains”关系这个维度,发现msh标签,尾实体即是“shijiazhuang”。
[0089]
头实体首单词是“hebei”,沿着当前列向下寻找,发现标签mst,头实体即是“hebei province”。
[0090]
三元组(hebei province,contains,shijiazhuang)。
[0091]
本发明的多关系空间建模方法为:
[0092]
步骤2中,对于句子w={w1,w2,...,w
x
},wi表示句子中的第i个单词,经过token化和bert编码后,得到token语义表示向量其中n表示token个数,ti表示第i个token,w
enc
表示句子中所有token编码后的语义向量,d是语义向量维度大小,以及得到记录单词在token序列起始位置的字典index。
[0093]
步骤3中,利用max pooling操作把token语义表示向量融合为词向量表示,如公式(1):
[0094]
index=[(1,n1)1,(n1+1,n2)2,...,(ni,n)
x
],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
[0095][0096]
index指的是在tokenize层得到的记录单词在token序列起始位置的字典;
[0097]
:是序列的切片操作;
[0098]
embi表示得到的第i个单词的向量表示。
[0099]
对于输入的句子,经过以上处理得到了词向量表示。
[0100]
在联合抽取层的联合抽取模块中,在所有预定义关系下枚举所有的词对(embi,embj)为其分配高置信度标签。
[0101]
受依存句法分析和知识图谱表示的启发,本发明结合了双仿射注意力和hole的思想来实现预想的目标,如公式(2)和(3)所示:
[0102]hi
=mlp
head
(embi),
[0103]
tj=mlp
tail
(embj)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
[0104]
其中mlp表示多层感知机。
[0105]
维度为de为实体表示的维度:
[0106]
head,tail分别表示头实体和尾实体。
[0107]
应用两个低维度的多层感知器mlps把高维单词语义向量映射到低维实体表示向量有两个优势:
[0108]
首先,低维度mlps映射能够把高维度单词语义向量中干扰的信息去除掉。
[0109]
其次,这种低维度实体表示向量能够加快后续的计算。
[0110][0111]
其中,relu表示激活函数;
[0112]
drop表示dropout策略;
[0113]
是一个可训练的关系投影参数矩阵;
[0114]
8表示分类的标签个数。
[0115]
模型会经过一次计算为每个单词对在所有预定义关系下进行打分。
[0116]
用公式(4)优化目标函数:
[0117][0118]
其中,y(hi,rq,tj)是训练集中标注的标签。
[0119]
公式(4)是打分公式,通过该损失函数在模型训练过程中梯度下降来优化模型参数,进而使模型对词对打标签更加准确。
[0120]
实施验证如下:
[0121]
在两个基准数据集nyt和webnlg上评估本发明实体关系联合抽取模型的性能。
[0122]
根据基准数据集的标注策略,二者又可以分为两个版本,本文用nyt,nyt*,webnlg和webnlg*区分。
[0123]
其中,nyt和webnlg这两个版本标注了实体的所有组成部分,nyt*和webnlg*仅仅标注了实体的最后一个单词。
[0124]
此外,根据三元组的不同重叠方式,本发明又把测试集划分成了几个不同的子集。数据集的详细统计如表1。
[0125]
表1数据集统计
[0126][0127]
为了公平对比,和常规方法一样,采用precision(prec.),recall(rec.),和f1-score指标评价模型性能。
[0128]
模型实现使用的是pytorch,模型训练部署在一台显存32g tesla v100-pcie gpu的服务器上;
[0129]
预训练模型使用的是bert base cased english model,使用adam作为优化器训练参数,学习率设置为0.00001;
[0130]
和以往工作相同,句子的最大token长度控制为100;
[0131]
bert的输出维度d是768;
[0132]
设置mlps的映射维度是50。
[0133]
为了防止过拟合,dropout率设置为0.1。
[0134]
本次实验对比了几个很有可比性的基线模型,总体实验结果如表2所示。-表示空数据。
[0135]
表2实验结果(%)
[0136][0137]
实验结果表明,本发明实体关系联合抽取模型在上述基准数据集上取得了很好的f1指标表现,在prec.和rec.两个指标上绝大部分也表现突出。
[0138]
由于nyt(nyt*)相比webnlg(webnlg*)而言有更多的训练样本,更少的关系种数,所以模型的性能提升不是非常明显,这也说明训练集样本的大小对模型的性能提升非常重要。
[0139]
同时,还在不同三元组重叠情况下验证了模型的性能,如表3所示。
[0140]
表3实验结果(%)
[0141][0142]
从实验结果可以看出,本发明实体关系联合抽取模型在几乎所有三元组重叠类型上的性能都有所提升。在nyt*和webnlg*中,重叠的三元组数量超过了总数的四分之一,在如此复杂的语境下,模型性能很出众关键在于本发明多关系空间建模方法和标签策略。
[0143]
首先使用词对而不是token对来丰富实体的上下文信息,这对模型生成标签的正确性十分重要。这里进行了一个案例分析,如图3所示。
[0144]
句子1中的单词"ampara","hospital","sri"和"lanka"经过tokenize层后形成了token序列’am’,’##par’,’##a’,’hospital’,’sri’和’lanka’。
[0145]
假如是使用token对建模,模型会分别给token对(
‘
am’,
‘
sri’),(
‘
am’,
‘
lanka’)和(
‘
hospital’,
‘
lanka’)打上mmh,mmt,和mmt标签。
[0146]
通过解码,三元组(ampara hospital,country,sri lanka)被抽取了出来。
[0147]
句子2是故意对句子1做的改动,经过tokenize层后,单词"am","hospital","sri"和"lanka"被分成token序列’am’,’hospital’,’sri’和’lanka’。
[0148]
模型依然会给token对(
‘
am’,
‘
sri’),(
‘
am’,
‘
lanka’)和(
‘
hospital’,
‘
lanka’)打上mmh,mmt,mmt标签,这就导致抽取出了错误的三元组。可见token对上下文的语义信息包含并不是很完整。
[0149]
表4分析了本发明实体关系联合抽取模型(ours)与其它基线模型在效率上的对比。
[0150]
表4
[0151][0152]
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。