目录
通常,早期的信息抽取将实体抽取和关系抽取看作串联的任务,这样的串联模型在建模上相对更简单,但这样将实体识别和关系抽取当作两个独立的任务明显会存在一系列的问题:
因此,近年来有许多工作都考虑将实体识别与关系抽取任务进行联合建模,这种 end-to-end 的模型直觉上会有更优的效果。
原文链接:https://www.aclweb.org/anthology/P16-1105/
该论文是经典的 end-to-end 实体关系联合抽取模型,在此之前,联合抽取模型通常都是基于人工构造特征的结构化学习方法,而该论文采用了端到端的神经网络结构来进行建模,该模型基于词序信息以及依存树结构信息来抽取实体以及实体关系,其主要模型结构如下图所示:
正在上传…重新上传取消正在上传…重新上传取消
该模型主要分为如下三个部分:
、词性(POS)嵌入v(p)、依存关系嵌入 v(d) 以及实体标签嵌入 v(e)
将实体识别任务看作是一个序列标注任务,实体标签采用 BILOU(Begin, Inside, Last, Outside, Unit) 的标注方式,而实体类别接续在实体标签之后 (标准方法可以参考我关于序列标注的第一篇文章)。利用两个全连接层来实现实体识别
h(e)tyt=tanh(W(eh)[st;v(e)t−1]+b(eh))=softmax(W(ey)h(e)t+b(ey))
显然,在每个词的标签预测时,将考虑到上一个词的预测结果,从而考虑到标签上的依赖性。
Dependency layer:该层主要关注两个实体在依存树的最短路径(shortest path),最短路径在做个关系分类研究中已被证明是十分有效的。作者采用了双向树结构的 BiLSTM 来捕捉两个实体之间的关系。从论文中的表达式来看,树结构的 LSTM 与传统 LSTM 的区别在于,其接受多个子节点的隐藏信息,而不仅仅是上一个时刻的隐藏信息。作者提出一种新的基于树结构的 LSTM,其相同类型的子节点共享参数矩阵,同时允许可变数量的子节点(感兴趣的读者可以去原文看看模型细节,公式较多这里就不做详细介绍了)。该层以对应 Sequence Layer 对应时刻的隐藏状态、依存关系嵌入和实体标签嵌入的拼接作为模型输入,即
xt=[st;v(d)t;v(e)t]
作者将 Dependency layer 堆叠在 Sequence layer 上,因此 Dependency layer 可以依赖 Sequence layer 的输出,或者说实体识别的结果间接地对关系分类的结果加以影响。
对于构造的树结构的 BiLSTM,存在两个传输方向,即从子节点到根节点方向 "↑
",和从根节点到子节点方向 "↓",最终用于关系分类的输入,为根节点位置 ↑ 方向上的隐藏状态,和两个实体的 ↓ 方向上的隐藏状态的拼接,即
dp=[↑hpa;↓hp1;↓hp2]
此外,考虑到每个输出都是只考虑到单词之间的关系,而无法利用整个实体的信息,为了缓解这个问题,作者将 Sequence layer 上对应实体的隐藏层求平均拼接到 dp
上,即
d′p=[dp;1|Ip1|∑i∈Ip1si;1|Ip2|∑i∈Ip2si]
其中,Ip1
和 Ip2 分别表示实体 1 和实体 2 的单词集合,将该向量直接输入与 Sequence layer 中类似的分类器进行分类,即
h(r)pyp=tanh(W(rh)d′p+b(rh))=softmax(W(ry)h(r)t+b(ry))
小结:总的来说,该任务通过在实体识别和关系抽取任务中共享 Embedding layer 和 Sequence layer 参数的方法,加强两个任务之间的相关性,确实存在一定的创新,且设计了树结构的 LSTM 模型用于关系分类任务中。但是其模型设计上还存在很大的缺陷,如实体抽取任务上忽略了标签之间的长依赖关系,此外实体与关系的抽取还是存在先后性,两个任务并不是完全同步进行的。这篇论文首次将神经网络模型用于解决实体关系联合抽取任务,属于这块领域的开山之作,之后很多工作都在此基础上进行改进,或与该工作的结果进行对比
原文链接:https://arxiv.org/abs/1706.05075
该篇论文被评为 ACL2017 杰出论文,其主要做法是将实体关系联合抽取任务看作一个序列标注任务来处理,取得了非常好的效果。
作者认为,之前的做法多数都需要大量复杂的特征工程,并且十分依赖其他的 NLP 工具,这将导致误差传播问题。虽然 Model 1 通过共享参数的方法将两个任务整合到同一个模型当中,但是实体抽取与关系识别任务仍然是两个分离的过程,这将造成产生大量的冗余信息。
作者认为,实体关系联合抽取的关键就是要得到实体对以及它们之间关系组成的三元组。因此作者的做法是直接对三元组进行建模,而不是分别提取实体和关系。为了解决这个问题,作者设计了一种新颖的标注方案,它包含实体信息和它们所持有的关系,对于系列标注问题,很容易使用神经网络来建模,而不需要复杂的特征工程。
论文的主要贡献有如下几点:
下面简单介绍一下论文如何将提取问题转换为基于本文标注方法的标注问题,简单的标注实例如上图所示
,其中 |R|
端到端模型的基本架构如上图所示,主要包括如下几个部分:
LSTM Decoding Layer: 从图中可以清楚的看到差别,LSTM Decoding Cell 与经典的 LSTM 的区别在于,其当前时刻的输入除了上一时刻的隐藏状态 h(2)t−1
h(2)t=LSTM(ht,[h(2)t−1,Tt−1])
对于时刻 t
的隐藏状态,通过一个全连接层得到标签表示:Tt=Wtsh(2)t+bts
最终将标签表示输入经典的全连接层分类器进行分类:
ytpit=WyTt+by=exp(yit)∑Ntj=1exp(yjt)
The Bias Objective Function: 定义了一个标签偏置函数
L=max ∑j=1|D|∑t=1Lj(log(p(j)t=y(j)t|xj,Θ)⋅I(O)+α⋅log(p(j)t=y(j)t|xj,Θ)⋅(1−I(O)))
上式中,|D|
是训练集的大小,Lj 是句子 xj 的长度,y(j)t 是单词 xj 中词 t 的标注,p(j)t 是模型输出的归一化标注概率。此外,I(O) 是一个开关函数,以区分标注 ‘O’ 与 其他标注。他被定义如下:I(O)={1, if tag=′O′0, if tag≠′O′
简单来说,就是使得模型对于实体标签与其他标签的关注程度不一样,而参数 α
就是偏置权重,α越大,模型对于实体的相关标注的偏向性就越大。
小结:这篇论文通过巧妙的设计将实体与关系联合抽取任务当作一个序列标注任务来处理,大大简化了工作的复杂性,且其模型性能优于之前的工作。此外,模型的缺陷也是比较明显的,其无法考虑到实体关系重叠的问题,也就是说一个实体在上下文中可能与多个实体有不同的关系。
原文链接:https://arxiv.org/abs/1804.07847
论文指出了目前的实体关系抽取任务存在的一些问题:
该论文创新点在于其将实体关系联合抽取问题看作是一个 multi-head selection 的问题,即任何一个实体都可能与其他实体存在关系,目的是解决关系重叠问题。
正在上传…重新上传取消转存失败重新上传取消
该论文提出的模型如上图所示,包括以下结构:embedding layer,BiLSTM layer,CRF layer,sigmoid scoring layer。
Label Embedding:构造一个 Label Embedding 层,用来获取标签相应的向量表征,也是可训练的,用 gi
个 token 的预测标签向量
multi-head selection problem:将关系抽取看作一个 multi-head selection problem,multi-head 的含义是每个 实体 与其他所有 实体 都存在关系,在判断关系的时候,为了避免造成信息冗余,只判断每个实体的最后一个 token 与其他实体的最后一个 token 的关系,而每个实体的最后一个 token 被称作 head。对于每个 head ,需要预测元组 (y^i,c^i)
s(r)(zj,zi,rk)=V(r)f(U(r)zj+W(r)zi+b(r))
其中,zi=[hi;gi]
,f(⋅) 为激活函数,U(r),W(r) 相当于先将向量进行降维,V(r) 是一个一维向量,最后输出的是一个分数值,之后再将分数映射为概率值Pr(head=wj,label=rk|wi)=σ(s(r)(zi,zj,rk))
关系抽取过程的损失函数定义为:
Lrel=∑i=0n∑j=0m−log Pr(head=yi,j,relation=ri,j|wi)
整个模型的损失函数即为 Lner+Lrel
在预测阶段,可以通过认为输出的预测概率超过某一个阈值就认为这个关系是有效的。注意,该模型对两个词之间过个关系的预测并不是采用的 softmax 函数,而是对每个关系采用了 sigmoid 函数,区别在于 softmax 是将所有类别看作是互斥关系,将所有分数归一化为和为 1 的形式,而 sigmoid 与 softmax 的区别在于,其独立的将每个类别的判断看作是独立二分类的问题,即各个类别不存在互斥关系,这样跟有利于判断出两个实体之间存在的多种关系的情况。
小结:这篇文章的关键创新点在于其将关系抽取任务当作一个 multi-head selection problem 的问题,从而使得每个实体能够与其他所有实体判断关系,此外,不再将关系抽取任务当作一个每个关系互斥的多分类任务,而是看作每个关系独立的多个二分类任务,从而能够判断每一对实体是否可能有多个关系存在。此外,该组在同一年还发布了一篇以该论文为 baseline,在训练过程中加入对抗扰动的论文,分数达到新高,有兴趣的同学可以关注一下
原文链接:https://kexue.fm/archives/6671
这个模型是苏神提出的 DGCNN 用于实体关系抽取的模型,一直感觉这个模型设计的挺巧妙的,这里也记录下。数据集是百度给出的中文信息抽取数据集(需要的话可以去苏神博客里找,有下载链接)。
首先,作者发现数据主要有以下几个特点:
由上可知,数据集的质量非常高,且情况也十分复杂。作者由此调研了当时主要的信息抽取模型,发现没有一个模型能很好地覆盖这5个特点。于是自行设计了一个基于概率图思想的抽取方案,然后从效率出发,利用 CNN+Attention 的架构完成了这个模型。
作者设计的抽取方案借鉴了 seq2seq 的概率图思路。在 seq2seq 解码器的解码过程是层次递归进行的的,其实际上是在建模
P(y1,y2,...,yn|x)=P(y1|x)P(y2|x,y1)...P(yn|x,y1,y2,…,yn−1)
而对于信息抽取任务,三元组的抽取过程也能够转化为上述层次递归的方式进行抽取,对于三元组 (s, o, p),其抽取过程可以建模为:
P(s,p,o)=P(s)P(o|s)P(p|s,o)
即首先预测 s
,然后根据 s 来预测该 s 所对应的 o 及 p。由于抽取 s 以及抽取 s 所对应的 o 及 p的过程均是非唯一性的,因此,作者采用了 MRC 中常用的指针网络的抽取方法,即仅抽取答案的开始和结束位置,且把预测开始和结束位置的任务转化为了预测每一个位置是否为开始位置或结束位置(将softmx换成sigmoid)。模型的整体结构如下图所示
正在上传…重新上传取消
我们这里只关注作者信息抽取的思路,更多的模型细节可以去作者的博客里了解。总的来说,整个模型包括如下几个部分:
作者的思路相比于之前的模型很好的解决了关系重叠问题,且主要架构是基于 CNN 和 Self-Attention,因此模型训练速度非常快。作者在博客结尾提到了下面要介绍的这篇论文,大致思想与作者的论文相类似,但是是通过将其转化为一个多轮问答的形式将信从而将抽取过程建模为层次递归的。
原文链接:https://www.aclweb.org/anthology/P19-1129/
过去大部分论文都将实体关系联合抽取的任务看作是一个三元组抽取任务,而这样的处理将存在如下几个问题
这个篇文章的创新点在于其将实体关系联合抽取的任务当作一个多轮问答类问题来处理,即每种实体和每种关系都用一个问答模板进行刻画,从而这些实体和关系可以通过回答这些模板化的问题来从上下文中进行抽取。下面简单给出一个问答模版:
正在上传…重新上传取消
可见,问题主要有如下几个特点:
这样的处理方法主要有如下几个优点:
将实体关系抽取任务转化为多轮问答任务的算法如上所示,整个算法分如下几个部分:
关于问题模版的生成方式可以参考原文中的方法,这里就不赘述了。
我们知道现阶段常见的 MRC 模型都是通过指针网络的方式,仅预测答案在 Context 中的开始和结束位置,仅适用于单答案的情况。但对于实体识别任务,在一段 Context 中可能有多个答案,所以这种方法并不合适。作者的做法是将其当作以问题为基础的序列标注问题,或者说将 2 个 N-class 分类任务转换成 N 个 5-class 分类任务,其中 N 为句子长度。
作者将 BERT 作为 baseline。训练时,损失函数为两个子任务的叠加,即:
L=(1−λ)L(headentity)+λL(tailentity,rel)
为了进一步优化模型性能,还采用了强化学习的方法来进一步优化,这一块暂时也不做研究了,感兴趣的同学可以去原文参考一下
原文链接:https://arxiv.org/abs/1909.03227
这篇文章在 WebNLG 和 NYT 数据集上取得了 SOTA 的效果,模型的整体思路与苏神的模型非常类似。该论文指出,当前处理关系重叠的模型仍然存在一系列问题,具体来说,它们都将关系视为要分配给实体对的离散标签。 这种表述使关系分类成为困难的机器学习问题。 例如,当在相同上下文中的同一实体参与多个(在某些情况下超过五个)有效关系(即重叠的三元组)时,分类器需要大量的监督学习才能确定上下文与关系的对应关系。
作者设计了一种 Hierarchical Binary Tagging 的框架来解决这个问题,这个框架将三元组的抽取任务建模为三个级别的问题,从而能够更好解决三元组重叠的问题。其核心观点就是不再将关系抽取的过程看作实体对的离散标签,而是将其看作两个实体的映射关系,即f(s,o)−>r
,整个三元组的过程可以概括为
实体抽取的方法与上一片论文以及苏神的做法差不多,即采用 Point Net 的指针形式进行抽取。这样的建模方式明显更容易学习。实验结果表明即便使用随机初始化的 BERT 作为编码层,仍然能够取得 SOTA 的效果。
正在上传…重新上传取消转存失败重新上传取消
模型的整体结构如上图所示,主要包括如下几个部分:
Subject Tagger:该部分用于识别所有可能的 subject 对象。其通过对每一个位置的编码结果用两个分类器进行分类,来判断其是否是实体的开始或结束位置,即
pstart_si=σ(Wstartxi+bstart)pend_si=σ(Wendxi+bend)
其中,xi
为第 i 个词通过 BERT 的编码输出,W,b为全连接层分类器的参数,激活函数为 sigmoid。对于句子中存在多个 subject 的情况,开始指针与结束指针通过就近匹配原则进行配对
pstart_oi=σ(Wrstart(xi+vksub)+brstart)pend_oi=σ(Wrend(xi+vksub)+brend)
早期联合抽取模型的架构主要可分为两个部分:
其将关系分类看作两个实体间的离散标签多分类问题,这样的问题学习起来是十分困难的,或者说无法很好的学习到两个标签之间的相关性。近年来的模型大多都将其建模为层次递归的模型,其直接为每个关系类别构建独立的模型,用于学习这种关系映射关系,主要可以分为下面两个部分
这种将实体关系当作一种函数映射来学习的方式显然能够得到更好的效果。
参考链接
https://zhuanlan.zhihu.com/p/74886839
https://mp.weixin.qq.com/s?__biz=MzI2NjkyNDQ3Mw==&mid=2247486614&idx=2&sn=46b8a011a29803fc59f14431e91b8fbd&chksm=ea87f440ddf07d564cb3ce680ea52277c12bce882419428c581b95abbf58d75265fd3fb01942&scene=21#wechat_redirect
https://blog.csdn.net/qq_32782771/article/details/86062586
https://zhuanlan.zhihu.com/p/6587046