


关系抽取目前有两种可行的方案,即流水线式的关系抽取和实体关系联合抽取。流水线式的关系抽取需要识别出实体对之后,才能进行关系抽取,因此通常由两个不同的抽取框架组成。由于两个模型彼此相互独立,因此,在训练时会出现以下问题:
(1)误差传递:关系抽取任务是建立在实体对已知的情况下才能进行,因此实体抽取的效果将直接影响到关系抽取任务。虽然目前NER任务引入了各种先进的设计思想,但是仍然会出现将非实体单词标记为实体单词、实体单词标注不完整和遗漏标注等问题。错误的实体识别结果对于后续的关系分类任务影响巨大,甚至会影响领域知识库的整体质量。
(2)参数无法共享:实体和关系在文本中具有很强的语义关系,流水线式的方法在训练的过程中只关注其中一项任务,无法将两个任务训练的参数进行融合,因此会损失大量有用的信息。联合抽取框架可以将两个子任务相结合组成一个框架,训练的时候只需要输入一个序列文本,就可以同时预测出所有的实体和关系。理想情况下,一个句子中只包含了两个实体和一条关系,但是现实生活中的文本结构通常较为复杂,句子中可能包含多个三元组,并且这些三元组之间会形成重叠关系。三元组重叠问题是联合抽取模型需要面临的最大问题,复杂文本结构如图3-1所示。

文本中的三元组具有三种不同的类型,即正常三元组(Normal)、单实体重叠(SEO)和双实体重叠(EPO)。Normal类型三元组的元素之间彼此互斥,SEO类型的三元组占用同一个实体,EPO类型的三元组占用同一实体对。
重叠关系的存在导致现有的很多模型直接失效,例如传统序列标注的联合抽取方案每次只会为每个单词打上一个标签,这导致其无法处理重叠三元组的问题。重叠三元组的出现使得联合抽取任务出现以下问题:
(1)偏差分布:虽然联合抽取任务能够同时抽取实体和关系,但是大部分的模型都是基于序列到序列的机制。该类方法仍然是先识别实体然后再进行关系分类。在训练的时候需要使用绝对标准的数据进行训练,因此会产生预测和训练之间的特征偏差分布。
(2)三元组交互问题:文本中的三元组存在不同形式的交互,即三元组内部交互和外部交互。内部交互主要是一个三元组内实体和关系之间的交互,形成相互依赖的语义关系,外部交互是不同三元组之间产生的交互。充分利用这些交互信息可以提升模型的性能,因此,如何在模型中增强三元组的交互一直以来都是研究热点。
(3)嵌套实体问题:嵌套实体是命名实体识别任务中最难解决的问题,同一个单词会被不同的实体包含,例如“南京市”和“南京长江大桥”中的“南京”一词具有两种截然不同的语义表达,如何准确的识别嵌套实体以及相关的关系仍是一大挑战。
(4)语义推理问题:不同的抽取顺序将会对抽取结果产生影响,现有的几种抽取方案包括实体对优先、头实体优先、关系优先和尾实体优先四种策略,可以通过融入已知三元组成分的特征信息来对其余部分进行推理,进而提升模型的性能。因此,许多研究围绕不同抽取策略展开研究。
(5)图结构构建问题:将序列文本建模为图结构可以增加三元组之间的交互信息。高质量的文本图不能仅仅依赖于工具生成的句法依赖信息,在真实的语境下,随着文本复杂性的增加,单词之间的依赖链会更长。因此,如何构建语义信息丰富的图结构也是本章重点研究内容之一。
基于以上问题,本文设计了一种联合抽取方案。该模型的核心在于三元组交互图的构建,在预定义的关系空间下将输入的文本映射为二维的矩阵图,进而解决重叠三元组中单实体重叠的问题。


2、自注意力机制


3、多头注意力机制

图卷积神经网络(GCN)是图神经网络的改进模型,GCN的计算方式类似于CNN。不同的是,GCN运行在构建好的图结构之上,通过图中节点信息的传播和汇聚来提取特征,GCN的特征传递方式如图3-5所示。

GCN同其他神经网络模型一样具备层级特征、非线性变换和端到端的训练的能力。可以通过叠加GCN来进行层次化的抽取,越深的层所表达的特征也越抽象。此外,GCN在训练时不需要定义网络的规则,只需将节点进行标记。GCN就能够自动的融合结构化的信息。GCN旨在将图结构中的节点信息进行传播和汇聚,从而捕获节点之间的依赖信息。堆叠GCN的层数可以改变节点域的传播范围,最终聚合图中每个节点的信息。使用一个n×n的矩阵A来表示具有𝑛个节点的图,如果节点i和节点j之间存在连接,那么Aij=1。在GCN中,当前层的节点特征信息受到上一层的影响,节点在不同层之间的信息传递方式如下:



输入一个文本序列{x1,x2,x3,x4…xn},上下文特征提取层的任务是提取句子的语义特征信息。本章使用预训练的BERT语言模型作为词嵌入,并通过关系抽取数据集对词向量进行微调。BERT编码器通过堆叠Transformer框架动态的捕获每个单词的上下文信息,并在训练时随机掩盖一部分词语,通过句子中其他的单词来对被掩盖的单词进行预测,使每个单词都能得到对应的上下文信息。BERT编码器拥有多个双向Transformer编码器,每一个Transformer编码器被表示为Trans(X),BERT编码器使用如下方式提取上下文特征Hs:

通常情况下,一个单词由多个字符组合而成,引入字符嵌入能够很大程度的提升单词的语义特征。首先,遍历所有的数据集生成字符集合。然后,随机初始化每个字符的嵌入矩阵,并使用CNN提取每个单词的字符特征信息。CNN具有较强的局部特征提取能力,通过CNN来提取每个单词的字符特征表示xc,具体公式如下:


BiLSTM可以在当前时间步上汇聚来自前后时间步的特征信息,将CNN的输出作为BiLSTM的输入,进一步提取字符的嵌入信息𝐻𝑐:句子根据不同的词性呈现有规律的排列方式,因此引入单词的词性特征能够为单词提额外的特征信息。使用Spacy句法工具对输入语句进行预处理,遍历全部的数据建立词性表,并随机初始化字符嵌入P={P1,p2,p3,p4…}。使用BiLSTM对词性嵌入Hc进行提取:

将词嵌入、字符嵌入和词性嵌入信息进行拼接,然后使用BiLSTM将三种特征信息进行融合以生成多粒度的词语表示H,具体方式如下:



输入语句中的每个单词在不同关系空间下所产生的依赖程度有所不同。静态的依赖树无法根据关系提取单词的依赖信息,这会导致遗漏很多有用的特征信息。为了捕获特定关系下单词之间的依赖交互信息,本文使用节点感知注意力机制为每种关系构建动态的单词关联矩阵,并以端到端的方式更新和调整矩阵参数。其中,每一个单词关联矩阵代表着该关系空间下所产生的单词交互图。将第一阶段产生的节点特征输出进行全连接线性变换,从而得到初始的节点感知注意力隐藏状态表示s,具体方式如下:





其中,wa和ba是可训练的模型参数。通过共享句子的特征表示信息,节点感知注意机制可以捕获不同关系类型中单词之间的交互信息。
由于不同关系类型下单词之间的交互有所不同,因此,为每种关系设计独立的子空间进行语义关联度计算。将初始节点感知注意力隐藏状态表示s映射到不同的关系空间,并计算对应的键值对向量矩阵Q和K,具体方式如下:








