《A Hierarchical Framework for Relation Extraction with Reinforcement Learning》论文阅读笔记
代码
原文地址
摘要
现有的大多数方法在确定关系类型之前,需要先识别出所有的实体,这样就忽略了实体提及和关系类型之间的交互。本文提出了一种新颖的联合抽取范式,把相关实体看作是关系的参数( 首先检测一个关系,然后提取相应的实体作为关系的参数)。本文在这个范式下采用了一个分层强化学习框架,以强化实体提及和关系类型之间的交互。整个抽取过程被拆分为两个层次的RL策略,分别负责关系检测和实体抽取,从而更有效和自然地处理重叠关系。本文的模型在利用远程监督方法收集的公开数据集上进行了评估,结果显示,它不仅优于现有的方法,而且在抽取重叠关系方面更具优势。
Introduction

本文的模型利用高层次的强化学习(RL)过程,在句子中寻找关系指示符,并用低层次的RL过程,确定关系的参与实体。如图1所示,抽取过程从句首到句尾进行顺序扫描(I)。高层次的过程在某个位置发现一个关系指示符后,就启动低层次的过程,来找出该关系的相应实体(II)。低层次的实体抽取子任务完成之后(III),高层次的RL过程继续扫描,寻找句子中的其他关系(IV)。
先前Doc RE的两个问题:
-
首先,传统模型大多数都是先识别出所有实体,然后再确定关系类型,而没有充分捕捉两个任务之间的交互。这些方法相当于把关系对齐到实体对上,但是这样做可能会引入噪声,因为有些句子并没有真正提及关系,或者有些句子描述了多个关系。例如,Zhang et al. (2013)和Takamatsu, Sato, and Nakagawa (2012)就指出了这些问题。
-
其次,目前还没有一种优雅的联合抽取方法来处理一对多的问题,也就是重叠关系的问题。这种问题是指一个实体可能在同一个句子中参与多个关系,或者同一个实体对在同一个句子中有不同的关系。图1中的Steve Blichick就是一个例子。据本文所知,CopyR (Zeng et al. 2018)是唯一讨论了这个问题的方法,它把关系抽取看作是一个三元组生成的过程。然而,本文的实验表明,这种方法强烈依赖于训练数据,而且不能抽取多词实体。
本文的范式解决了这两个问题:
-
第一个问题是如何处理实体和关系之间的依赖性。本文的方法是把实体作为关系的参数,然后通过高层和低层强化学习过程中的状态表示和奖励来建立它们之间的联系。这样,主任务(高层强化学习过程,用于检测关系类型)和子任务(低层强化学习过程,用于抽取实体)之间的交互就能很好地捕捉到。主任务在启动子任务时传递信息,子任务在完成后返回低层奖励,反映子任务的效果。这种方式使得模型能够更好地建模关系类型和实体之间的交互。
-
第二个问题是如何处理句子中的多个重叠关系。本文的方法是通过层次结构来分解关系抽取任务。本文把关系抽取任务分为高层任务和低层任务,分别用于检测关系类型和抽取实体。这样,句子中的每个关系都可以单独和顺序地处理。如图1所示,当主任务检测到第一个关系类型(父母-子女)时,就会抽取出第一个关系,当检测到第二个关系类型(死亡地点)时,就会抽取出第二个关系,即使这两个关系有共同的实体(Steve Blichick)。
综上所述,本文的工作有两个贡献:
-
本文设计了一种新颖的端到端的层次范式,用于联合识别实体和关系类型,它把关系抽取任务分解为高层任务和低层任务。
-
本文将强化学习引入这个范式,使得本文的方法在建模主任务和子任务之间的交互和抽取重叠关系方面优于基线方法。
Related Work
传统的流水线方法将实体抽取和关系分类分开处理。它们先从文本中识别出实体提及的范围,再根据实体提及之间的关系构建关系结构。这种方法虽然灵活,但也容易产生错误传播的问题,即下游模块的效果会受到上游模块错误的影响。
为了解决这个问题,有多种联合学习的方法被提出。Kate and Mooney (2010) 提出了一种卡片金字塔图结构,用于同时进行实体抽取和关系分类,Hoffmann et al. (2011) 开发了一种基于图的多实例学习算法,也是一种联合学习的方法。但是,这两种方法都使用了贪婪的搜索策略,过度地削减了搜索空间,限制了性能。还有一些研究采用了结构化学习的方法(Li and Ji 2014; Miwa and Sasaki 2014)。这些方法都需要大量的特征工程,耗费了很多人力和专业知识。
另一方面,Bjorne et al. (2011) 提出了一种先抽取关系触发词再确定其论元的方法,关系触发词是指在句子中明确表示一种关系存在的短语,这样可以降低任务的难度。开放式信息抽取系统ReVerb (Fader, Soderland, and Etzioni 2011) 也是采用了这种方法,它使用词汇约束来识别关系短语。但是,这种方法无法捕获那些没有关系触发词的关系,这些关系在句子中也是存在的。
最近的研究探讨了用神经模型进行联合关系抽取的方法(Katiyar and Cardie 2016; Zhang, Zhang, and Fu 2017)。Miwa and Bansal (2016) 提出了一种神经模型,它在实体抽取和关系分类两个任务上共享参数,但是两个任务是分开处理的。它通过穷举检测到的实体提及和关系类型之间的所有组合,来得到最终的决策。与之不同的是,前述的方法都是先识别出所有的实体,然后再进行关系抽取。Zheng et al. (2017) 使用了一种标注方案,它将每个词的关系类型标签和实体提及标签进行笛卡尔积,从而生成一个唯一的标签,同时编码了实体提及和关系类型。然而,这种方法无法处理句子中存在的重叠关系:如果一个实体是多个关系的论元,那么这个实体的标签就不应该是唯一的。最近的一项研究(Zeng et al. 2018)与本文的目标非常相关,它旨在处理重叠关系。它采用了基于序列到序列(Seq2Seq)学习的多个解码器,其中每个解码器从源句子中复制一个实体词,每个句子中的三元组由不同的解码器生成。但是这种方法强烈依赖于训练数据的标注,它无法抽取出由多个词组成的实体。
强化学习最近也被应用到信息抽取领域。RL被用来获取和整合事件抽取中的外部证据(Narasimhan, Yala, and Barzilay 2016)。Feng et al. (2018) 使用 RL 来训练一个实例选择器,用来去除通过远程监督得到的关系分类的训练数据中的噪声。通过利用 RL 将假阳性样本分配到负例中,远程监督的关系类型抽取得到了改进(Qin, Xu, and Wang 2018)。
Hierarchical Extraction Framework
Definition 1.

关系指示符是指句子中能够表明语义关系的位置,它可以是一个动词(如 die of)、一个名词(如 his father)、一个介词(如 from/by)或者一个标点符号(如逗号或句号)。例如,在图 1 中,逗号就是关系类型 place-of-death 的关系指示符。关系指示符对于本文的模型来说非常重要,因为该模型是通过先检测关系指示符,再抽取实体提及来完成关系抽取任务的。
整个抽取过程如下。一个agent在顺序扫描一个句子时,预测一个特定位置的关系类型。注意,这个关系检测过程不需要实体的标注,因此与关系分类不同,关系分类是识别实体对之间的关系。当在一个时间步没有足够的证据表明一个语义关系时,agent可以选择NR,它是一种特殊的关系类型,表示没有关系。否则,一个关系指示符被触发,agent启动一个实体抽取的子任务,来识别关系的参数,即两个实体。当实体提及被识别时,子任务完成,agent继续扫描句子的其余部分,寻找其他关系。
这样的过程可以自然地被表述为一个半马尔可夫决策过程(Sutton, Precup, and Singh 1999):
-
一个高层次的强化学习过程,检测一个句子中的关系指示符;
-
一个低层次的强化学习过程,识别相应关系的相关实体。
通过将任务分解为两个层次的强化学习过程,模型在处理具有多个关系类型的同一实体对,或者一个实体是多个关系的参数的句子时具有优势。
Relation Detection with High-level RL
高层RL策略
的目标是检测句子
中的关系,这可以被视为一个传统的基于选项的RL策略。一个选项指的是一个高层动作,当一个选项被agent执行时,一个低层RL过程就会被启动。


Option:
选项
是从
中选择的,其中
表示没有关系,
是关系类型的集合。当一个低层RL过程进入终止状态时,agent的控制权将被交给高层RL过程来执行下一个选项。




State:
高层RL过程在时间步
的状态
,由以下三部分表示:


1) 当前的隐藏状态
,

2) 关系类型向量
(最近的选项
的嵌入,其中
,这是一个可学习的参数),



3) 上一时间步的状态

形式上表示为:

其中
是一个由MLP实现的非线性函数。

为了得到隐藏状态
,这里引入了一个序列Bi-LSTM,它作用于当前的输入词嵌入
:



Policy:
用于关系检测的随机策略
,它指定了选项上的概率分布:



Reward:
然后,环境提供了中间奖励
来估计执行选项
时的未来回报。奖励的计算如下:



如果在某个时间步
,则agent在下一个时间步转移到一个新的高层次的选项间状态。否则,低层次的策略将执行实体抽取过程。选项间状态不会转移,直到当前选项
的子任务完成,这可能需要多个时间步。这样的半马尔可夫过程持续到最后一个关于句子
中最后一个词
的选项被采样。最后,得到一个最终奖励
来衡量
检测的句子级别的抽取性能:







其中,
是关于句子
中的关系的精确度和召回率的加权调和平均。
分别表示精确度/召回率,根据一个句子计算。



Entity Extraction with Low-level RL
当高层策略预测出一个非
的关系类型时,低层策略
将抽取出参与该关系的实体。低层策略对动作(原始动作)的制定与高层策略对选项的制定非常相似。为了使预测的关系类型在低层过程中可访问,高层强化学习中的选项
被作为额外的输入,在低层抽取过程中贯穿始终。



Action:
每个时间步的动作是为当前的词分配一个实体标签。动作空间,即实体标签空间
,其中
表示参与的源实体,
表示目标实体,
表示与预测的关系类型
无关的实体,
表示非实体词。注意,根据当前关注的不同关系类型,同一个实体提及可能被分配不同的
标签。这样,模型可以处理重叠的关系。另外,使用
符号来表示实体的开始词和内部词,分别参见图4的例子。








State:
与关系检测的策略类似,低层选项内状态
由以下四部分表示:

1)当前词嵌入
的隐藏状态
,


2)实体标签向量
,它是
的可学习嵌入,


3)前一时间步的状态
,

4)使用在公式(1)中分配给最新选项
的关系状态表示的上下文向量
,如下所示:



其中,
是从公式(2)中的Bi-LSTM模块得到的隐藏状态,
是由MLP实现的非线性函数。注意,
可能是来自高层强化学习过程或低层过程的状态。



Policy:
实体抽取的随机策略
在给定选项内状态
和启动当前子任务的高层选项
的情况下,输出一个动作分布。





其中
是一个
个矩阵的数组。


Reward:
给定关系类型
,每个词的实体标签可以通过从策略中采样动作来轻松获得。因此,当采样动作
时,提供一个即时奖励
,通过简单地测量预测误差和金标注之间的差异:




其中
是符号函数,
是在预测的关系类型
的条件下的金标准实体标签。这里
是一个偏置权重,用于降低非实体标签的权重,定义如下:





较小的
导致非实体词的奖励较少。这样,模型避免学习一个平凡的策略,即将所有词都预测为
(非实体词)。当所有的动作都被采样后,计算一个额外的最终奖励
。如果所有的实体标签都被正确地预测,那么智能体获得+1的奖励,否则-1。



Hierarchical Policy Learning
为了优化高层策略,本文的目标是最大化每个时间步
的主任务的期望累积奖励,当agent按照高层策略
采样轨迹时,可以按照如下公式计算:



其中
由
参数化,
是强化学习中的折扣因子,整个采样过程
在终止前需要
个时间步。





类似地,本文通过最大化子任务中选项
下的期望累积内部选项奖励来学习低层策略,当agent在时间步
沿着低层策略
采样时:




如果子任务在时间步
结束。

通过将累积奖励分解为贝尔曼方程,可以得到:

其中
是子任务持续的时间步数,当实体抽取策略在选项
上运行时,所以agent的下一个选项是
. 特别地,如果
,那么
.





然后,使用策略梯度方法 (Sutton et al. 2000) 和 REINFORCE 算法 (Williams 1992) 来优化高层和低层策略。利用似然比技巧,高层策略的梯度为:

低层策略的梯度为:

整个训练过程在算法 1 中描述。

Experiments
Experimental Setting
Datasets
本文在 New York Times 语料库上评估了本文的模型,该语料库是由远程监督开发的,包含有噪声的关系。该语料库有两个版本:
1)原始版本,由将原始数据与 Freebase 关系对齐而生成(Riedel, Yao, and McCallum 2010);
2)一个较小的版本,其测试集是手动标注的(Hoffmann et al. 2011)。
本文将原始版本命名为 NYT10,较小的版本命名为 NYT11。从 NYT11 的训练数据中分割出一部分,构建了 NYT11-plus。
本文通过移除以下内容来过滤数据集:
1)训练集中的关系,其关系类型在测试集中不存在;
2)不包含任何关系的句子。这样的预处理也与文献中的设置一致(例如,Tagging)。
所有的基线都在这个设置下进行评估,以进行公平的比较。两个过滤后的数据集的统计信息如表 1 所示。

对于每个数据集,从训练集中随机选择0.5%的数据进行验证。
Parameter Settings
所有的超参数都在验证集上调整。方程(1)、(2)和(6)中的所有向量的维度都是 300。词向量使用 Glove 向量(Pennington, Socher, and Manning 2014)初始化,并在训练过程中更新。关系类型向量和实体标签向量都是随机初始化的。学习率是 4e − 5,小批量大小是 16,方程(9)中的 α = 0.1,方程(5)中的 β = 0.9,折扣因子 γ = 0.95。
Evaluation Metrics
本文采用了标准的 micro-F1 来评估性能。本文比较了提取的实体提及是否能与关系中的实体完全匹配。如果关系类型和两个对应的实体都正确,那么一个三元组就被认为是正确的。
Baselines
本文选择了两种类型的基线方法:一种是流水线方法(FCM),另一种是联合学习方法,包括基于特征的方法(MultiR 和 CoType)和神经方法(SPTree,Tagging 和 CopyR)。本文使用了开源代码,并自己进行了实验。
-
FCM (Gormley, Yu, and Dredze 2015):一个组合模型,结合了词汇化的语言环境和词嵌入,来学习句子中子结构的表示,用于关系抽取。
-
MultiR (Hoffmann et al. 2011):一个典型的远程监督方法,执行句子级别和语料级别的抽取,使用多实例加权来处理训练数据中的噪声标签。
-
CoType (Ren et al. 2017):一个与领域无关的框架,通过将实体提及、关系提及、文本特征和类型标签共同嵌入到表示中,将抽取问题建模为一个全局嵌入问题。
-
SPTree (Miwa and Bansal 2016):一个端到端的关系抽取模型,使用双向顺序和树结构的 LSTM-RNNs 来表示单词序列和依赖树结构。
-
Tagging (Zheng et al. 2017):一个将联合抽取视为一个顺序标注问题的方法,使用一个标注方案,其中每个标签同时编码实体提及和关系类型。
-
CopyR (Zeng et al. 2018):一个带有复制机制的 Seq2Seq 学习框架,用于联合抽取,其中使用多个解码器来生成三元组,以处理重叠的关系。
Main Results

关系抽取的结果在表 2 中展示。显然,所有模型都是在噪声数据(NYT10)上训练的,因此在噪声数据和干净数据(NYT11)上的性能存在显著差距。可以看到,本文的方法(HRL)在两个数据集上都优于基线方法。在 NYT10 上可以观察到显著的改进,这表明本文的方法对噪声数据更加鲁棒。NYT11 上的结果显示,神经模型(SPTree,Tagging 和 CopyR)比流水线(FCM)或基于特征(MultiR 和 CoType)的方法更有效。CopyR 是为了抽取重叠的关系而引入的,但是它在 NYT11 测试集上表现不佳,因为在一个句子中几乎没有重叠的关系(369 个句子中有 370 个关系)。而本文的模型仍然可以与 SPTree 相媲美,并且比其他基线方法表现得更好。注意,SPTree 利用了更多的语言资源(例如,词性标签,块,句法分析树)。这意味着本文的模型也对关系的数据分布具有鲁棒性。
Overlapping Relation Extraction

本文准备了另外两个测试集来验证本文的模型在抽取重叠关系方面的有效性。注意,重叠关系可以分为两种类型。
-
类型 I:一个句子中的两个三元组只共享一个实体
-
类型 II:一个句子中的两个三元组共享两个实体(头实体和尾实体)
第一个集合,NYT11-plus,是手动标注的,由原始 NYT11 训练数据中分割出的 149 个句子组成。该集合分别包含 210/97 个类型 I/II 的重叠关系。第二个集合,NYT10-sub,是 NYT10 测试集的一个子集,有 715 个句子,但没有手动标注。该集合分别包含 90/2,082 个类型 I/II 的重叠关系。总之,NYT11-plus 中的大部分重叠关系是类型 I;而 NYT10-sub 中的大部分是类型 II。表 3 显示了不同方法在抽取重叠关系方面的性能。
NYT10-sub 上的结果表明,基线方法在噪声数据上抽取类型 II 的重叠关系非常弱,这与本文的陈述一致,即现有的联合抽取方法在本质上无法有效地处理重叠关系。相比之下,本文的方法在表 2 中的性能没有太大的下降,甚至在精度上获得了更大的提升。
NYT11-plus 上的结果表明,本文的方法在抽取类型 I 的重叠关系方面,相对于所有的基线方法,在干净数据上有了显著的 F1 提升,表明本文的方法可以更准确地抽取重叠关系。SPTree 有很高的精度,但是召回率很低,因为它只是简单地将一个关系类型匹配到一个实体对,忽略了重叠关系的情况。Tagging 在抽取重叠关系方面表现不佳,因为它给一个实体分配一个唯一的标签,即使该实体参与了重叠关系。虽然 CopyR 声称它可以抽取两种类型的重叠关系,但它无法有效地从干净数据中抽取关系,因为它强烈依赖于噪声训练数据的标注。
总之,通过比较表 2 和表 3 中的结果,可以看到,抽取重叠关系是更具挑战性的,而本文的模型无论数据是噪声还是干净,都能更好地抽取两种类型的重叠关系。
Interaction between the Two Policies


为了证明将实体与关系集成在一起的有效性以及两个策略之间的交互是如何建立的,本文研究了关系检测(分类)的性能。在这种设置下,只要关系类型被正确预测,预测就被视为正确。预测是由高层策略得出的。
表 5 中的结果表明,本文的方法在两个数据集上都表现出更好的关系检测能力。在 NYT11-plus 上的改进更为显著,因为本文的范式更有能力从一个句子中抽取多个关系。结果表明,本文的抽取范式将实体视为关系的参数,可以更好地捕捉文本中的关系信息。
当从本文的模型中移除低层的实体抽取策略(HRL-Ent)时,NYT11 上的性能稍有变化,因为这个测试集中的每个句子几乎只包含一个关系(369 个句子中有 370 个关系)。在这种情况下,两个策略之间的交互几乎对关系检测没有影响。然而,在 NYT11-plus 上观察到了显著的下降,在 149 个句子中有 327 个关系,这意味着本文的方法(HRL)捕捉了多个抽取任务之间的依赖性,高层策略从这种交互中受益。因此,本文的分层抽取框架确实增强了关系检测和实体抽取之间的交互。
Case Study
表 4 展示了本文的模型的一些抽取示例,以证明其抽取重叠关系的能力。第一句话展示了一个实体对有多个关系(类型 II)的情况。两个关系(Rupert Murdoch, person-company, News Corporation)和(News Corporation, company-founder, Rupert Murdoch)共享同一个实体对,但有不同的关系类型。模型首先在“Murdoch”处检测到关系类型 person-company,然后在逗号位置检测到另一个关系类型 company-founder,紧邻“Murdoch”一词。这表明关系检测是在某个特定位置收集到足够证据时触发的。并且,模型可以根据不同的关系类型,将相同的实体分类为源实体或目标实体(例如,Rupert Murdoch 是 person-company 的源实体,而是 company-founder 的目标实体),这证明了本文的分层框架的优势,它可以根据不同的关系类型为单词分配动态标签。此外,Rupert Murdoch 还与 Australia 有关系,其中两个实体相距很远。尽管这更难检测,但本文的模型仍然可以正确地抽取出关系。
第二句话给出了另一个实体涉及多个关系(类型 I)的例子。在这个句子中,(Steven A. Ballmer, person-company, Microsoft)和(Bill Gates, person-company, Microsoft)共享相同的关系类型和目标实体,但有不同的源实体。当代理扫描到“Microsoft”这个词时,模型检测到第一个关系。然后,当代理扫描到“Gates”这个词时,检测到第二个关系。这进一步证明了本文的分层框架的好处,它通过首先检测关系,然后找到实体参数,具有抽取重叠关系的优势。此外,本文的模型还预测了另一个关系(Bill Gates, founder-of, Microsoft),这对于这个句子来说是错误的,因为没有明确提及这个关系。这可能是由远程监督产生的噪声导致的,其中有许多噪声句子与该关系对齐。
Conclusion and Future Work
本文提出了一种分层抽取范式,它通过分层强化学习来处理关系抽取。该范式将实体视为关系的参数,并将关系抽取任务分解为两个子任务:高层的关系指示器检测和低层的实体提及抽取。高层策略用于在句子中识别多个关系,低层策略用于启动一个子任务,进一步抽取每个关系的相关实体。由于这种分层方法的特性,它能够很好地建模两个子任务之间的交互,特别是在抽取重叠关系方面表现出色。实验表明,本文的方法优于现有的基准方法。
作为未来的工作,这种分层抽取框架可以推广到许多其他的成对或三元的抽取任务,如方面-观点挖掘或本体归纳。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战