点击上方,选择星标或置顶,每天给你送干货!
阅读大概需要10分钟
跟随小博主,每天进步一丢丢
作者:Chevalier
原文链接:https://zhuanlan.zhihu.com/p/75745899
编辑:zenRRan (深度学习自然语言处理公众号)
已获作者授权,禁止二次转载
一、Introduction
抽取实体关系三元组(BarackObama, PresidentOf, UnitedStates)在信息抽取中扮演着重要角色,尽管有很多关于这方面的研究,但是目前还没有一个统一的框架完全解决以下三个问题:
端到端的联合抽取实体及其关系;
重叠关系的预测;
考虑到关系之间的交互,特别是重叠关系之间的交互。
传统的方法是基于流水线的,先进行NER,然后再RE。该方法忽略了两个任务之间的相关性。考虑到上述方法的局限性,紧接着就提出了实体关系联合抽取的模型。刚开始的联合模型大多数严重依赖于特征工程,费时费力。
随着深度学习的兴起,基于NN的自动构建特征模型广泛用于关系抽取中。比如CNN、LSTM、tree-LSTM等。但是这些方法并不是端到端地联合抽取实体及关系,他们假定实体已经给定。
关系抽取的另一个挑战是如何考虑关系之间交互的问题,特别是重叠关系之间的交互。比如,(BarackObama, PresidentOf, UnitedStates) 可以被 (BarackObama, Governance, UnitedStates)推断得到,这是关系重叠的其中一种情形,作者称之为EntityPairOverlap。另外一种情况是(BarackObama, PresidentOf, UnitedStates)可以被(BarackObama, LiveIn, WhiteHouse)和(WhiteHouse, PresidentialPalace, UnitedStates)推断得到,这是关系重叠的另外一种情形,称之为SingleEntityOverlap。关系重叠是联合抽取任务的一大难点,事实上,17年ACL基于新颖的标志机制就完全放弃了关系重叠的问题。
二、Motivation
17年ACL那篇没有考虑关系重叠的问题
目前大多数方法都没有考虑关系之间的交互性。
三、GCN回顾
GCN抽取邻居节点的特征,并且将一个节点的信息传播到该节点最近的邻居节点,如图1所示,通过堆叠GCN层,GCN就可以捕捉到每个节点的区域特征。
GCN层通过如下公式计算新节点的特征,其实就是对邻居节点做一次线性变换然后求和,将求和的结果再过一次非线性变换得到目标节点的特征。其中u是目标节点,N(u)表示u的邻居节点,包括u本身, 表示节点v第l层的特征:
四、Methodology
包含两阶段预测的GraphRel整体结构图如图2所示。在第一阶段,我们通过Bi-RNN和GCN抽取顺序和区域依赖特征。然后我们就可以预测实体和每个单词对之间的关系。在第二阶段,基于第一阶段的预测,我们对每种关系构建了完整的关系图,然后我们使用GCN融合每种关系的信息,并且考虑到了实体和关系之间的交互信息。
4.1 1st-phase Prediction
为了考虑到顺序和区域的依赖信息,我们首先通过Bi-RNN抽取顺序依赖特征,然后使用Bi-GCN进一步抽取区域依赖特征,最后我们就可以预测实体和每个单词对之间的关系。
4.1.1 Bi-LSTM
以词向量和对应的词性标签向量作为原始的输入,然后经过Bi-LSTM抽取顺序依赖特征。
4.1.2 Bi-GCN
考虑到原始的句子是一个序列,没有显示的图结构,我们使用依存解析器为输入句子构造一颗依存树。我们使用依存树作为输入句子的邻接矩阵,接着通过GCN抽取区域依赖特征。
原始的GCN是无方向的,为了考虑到出入的词特征,这里使用了Bi-GCN:
4.1.3 Extraction of Entities and Relations
通过Bi-LSTM和Bi-GCN,我们得到了每个词的特征,接下来就分别预测实体和关系。对于实体的预测,我们再经过一层LSTM,然后输出每个词的类别,具体的loss为 。对于关系的预测,我们会预测每个单词对之间的关系。对于单词对(w1,w2),我们计算给定关系r的得分,然后对所有关系(包括non关系)做一个softmax,得到每种关系的概率,关系预测的loss为
:
4.2 2nd-phase Prediction
第一阶段抽取的实体和关系是没有考虑到实体和关系之间的交互信息的。因此,为了考虑到实体和关系之间的交互信息以及所有单词对的隐式特征,我们提出了一个新颖的2阶段的关系加权的GCN用于关系预测。
4.2.1 Relation-weighted Graph
经过第一阶段的预测,我们构建了每种关系的关系加权图,图的节点是每个单词,边表示单词之间的关系概率。如图3所示。
在第二阶段中,我们在每个关系图上采用bi-GCN,考虑不同关系的不同影响程度并聚合做为一个单词的综合特征。计算公式如下:
其中, 表示单词对(u,r)之间关系为r的概率。V表示所有单词,R表示所有关系。首先遍历所有单词,然后对每个单词v,u和v之间在每种关系下都存在一个概率,然后通过这个概率进行加权求和。这样的话,对于每一个单词,它都考虑到了所有单词在关系加权下的信息。第二阶段的GCN不同关系下的权重信息,对每个单词抽取了更丰富的特征。
得到新的单词特征后,接下来就是实体和关系的预测,与第一阶段是一样的,这里不再赘述,具体的loss分别为 和
。
4.3 Training Detail
对于实体的预测,这里是做5分类(Begin,Inside,End,Single,Out),没有考虑实体类型。对于关系的预测,因为这里是对每个单词对去预测它们之间的关系,所以对于由多个单词组成的实体,其中的每个单词与另一个实体的所有单词都存在关系。比如,(United, Barack)、(United, Obama)、(States, Barack)、(States, Obama)都存在HasPresident关系。最终,总的loss计算公式如下,其中 是超参,用来调整两个阶段loss的权重:
4.4 Inference
因为关系抽取是对每个单词对都进行一个关系分类,所以对于由多个单词组成的实体对之间的关系预测就可能存在冲突,这里作者提出了三个方法:
head prediction:对于由多个单词组成的实体对,只取每个实体最后一个单词之间的关系作为这两个实体对之间的关系。比如,实体关系三元组(Barack Obama, PresidentOf, United States)被正确识别出当且仅当Barack Obama和United States是实体,并且P(Obama,States)最大概率的关系为PresidentOf。其实这里称为tail prediction比较好,因为取的是实体的最后一个单词。
average prediction:拿上个例子来说,存在四个单词对(United, Barack)、(United, Obama)、(States, Barack)、(States, Obama),那么就有四个关系概率向量,对这四个关系概率向量求平均然后取概率最大的作为三元组的关系。
threshold prediction:与average不同,这里是对四个关系概率向量分别求概率最大的关系,然后统计每种关系的概率,比如PresidentOf出现两次,LocatedIn、LivedIn分别出现一次,那么对应的概率为50%、25%、25%,然后取最大的概率50%是否大于θ来调整关系的输出。
五、Experiments
Dataset
NYT
WebNLG
这里将三元组分为了三个类型:Normal, EntityPairOverlap(EPO), SingleEntityOverlap (SEO)。具体的统计信息如下表。
2. Baseline and Evaluation Metrics
NovelTagging
MultiDecoder
precision、recall、f1:预测的三元组是正确的当且仅当关系和两个实体都是正确的
3. Quantitative Results
实验结果如表1所示。 表示只训练第一阶段,
表示同时训练两阶段。可以看到
在两个数据集上的F1都比之前的方法要高,这是因为该模型同时捕捉到了词的顺序和区域依赖特征。
考虑到了实体和关系之间的交互信息,在两个数据集上的F1都比
高。
4. Case Study
表3是具体的case。首先第一个case两个模型都能正确抽取出来。对于第二个case,作者的解释是:尽管there不是一个实体,但是它包含了Italy的隐含语义信息。因此 可以正确识别出来。我个人认为这个解释不是很严谨,为什么there就包含了Italy的语义信息,我们人是知道的。对于第三个case,
发现Asam pedas和Asam padeh是一样的,因此Asam padeh和Malay Peninsula、Malaysia存在关系。
六、Conclusion
作者提出了一个新颖的模型结构,结合RNN和GCN同时抽取顺序和区域依赖特征;
提出了新颖的二阶段预测方法,考虑了实体和关系之间的交互信息。
实际上只解决了关系重叠的一种情况,对于同一实体对具有多种关系没有解决;
关系和实体是分开输出的,可能存在关系预测对,但是实体预测错的情况;
构建了单词的关系图,而不是实体的关系图,后果就是预测多个单词的实体之间的关系时存在问题
说个正事哈
由于微信平台算法改版,公号内容将不再以时间排序展示,如果大家想第一时间看到我们的推送,强烈建议星标我们和给我们多点点【在看】。星标具体步骤为:
(1)点击页面最上方“深度学习自然语言处理”,进入公众号主页。
(2)点击右上角的小点点,在弹出页面点击“设为星标”,就可以啦。
感谢支持,比心。
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
推荐两个专辑给大家:
专辑 | 李宏毅人类语言处理2020笔记
整理不易,还望给个在看!