1、 关系抽取综述 算法
2、 远程监督关系抽取算法的滥觞 网络
3、 多实例学习和分段最大池化 app
4、 句子级别的注意力机制 机器学习
信息抽取是天然语言处理中很是重要的一块内容,包括实体抽取(命名实体识别,Named Entity Recognition)、关系抽取(Relation Extraction)和事件抽取(Event Extraction)。函数
此次介绍的关系抽取属于天然语言理解(NLU)的范畴,也是构建和扩展知识图谱的一种方法。工具
关系抽取理解起来也比较简单,好比下面图片中的第一句话:学习
He was in Tennessee.测试
首先作命名实体识别,识别出He(PER)和Tennessee(GPE)两个实体,而后找出两个实体之间的关系为:Physical-Located,最后能够把抽取出来的关系表示为三元组的形式:(HePER, Physical-Located, TennesseeGPE),或者Physical-Located(HePER, TennesseeGPE)。编码
可见关系抽取包含命名实体识别在内,在技术实现上更复杂。spa
关系抽取从流程上,能够分为流水线式抽取(Pipline)和联合抽取(Joint Extraction)两种,流水线式抽取就是把关系抽取的任务分为两个步骤:首先作实体识别,再抽取出两个实体的关系;而联合抽取的方式就是一步到位,同时作好了实体和关系的抽取。流水线式抽取会致使偏差在各流程中传递和累加,而联合抽取的方式则实现难度更大。
关系抽取从实现的算法来看,主要分为四种:
一、手写规则(Hand-Written Patterns);
二、监督学习算法(Supervised Machine Learning);
三、半监督学习算法(Semi-Supervised Learning,好比Bootstrapping和Distant Supervision);
四、无监督算法。
本文的主人公是远程监督算法(Distant Supervision),这是一种半监督学习算法。其余的方法大体了解一下,有助于理解,为何相对而言,远程监督作关系抽取是一种比较可行的方法。
(一)手写规则模板的方法
一、例子:
有种关系叫作上下位关系,好比hyponym(France; European countries)。从下面两个句子中均可以抽取出这种关系:
European countries, especially France, England, and Spain...
European countries, such as France, England, and Spain...
两个实体之间的especially和such as能够看作这种关系的特征。观察更多表达这种关系的句子,咱们就能够构造以下的规则模板,来抽取构成上下位关系的实体,从而发现新的三元组。
二、优势和缺点:
优势是抽取的三元组查准率(Precision)高,尤为适合作特定领域的关系抽取;缺点是查全率(Recall)很低,也就是说查得准,可是查不全,并且针对每一种关系都须要手写大量的规则,比较惨。
(二)监督学习的方法
监督学习的方法也就是给训练语料中的实体和关系打上标签,构造训练集和测试集,再用传统机器学习的算法(LR,SVM和随机森林等)或神经网络训练分类器。
一、机器学习和深度学习方法
对于传统的机器学习方法,最重要的步骤是构造特征。可使用的特征有:
(1)词特征:实体1与实体2之间的词、先后的词,词向量能够用Bag-of-Words结合Bigrams等。
(2)实体标签特征:实体的标签。
(3)依存句法特征:分析句子的依存句法结构,构造特征。这个不懂怎么弄。
人工构造特征很是麻烦,并且某些特征好比依存句法分析,依赖于NLP工具库,好比HanLP,工具带来的偏差不可避免会影响特征的准确性。
用端到端的深度学习方法就没这么费劲了。好比使用CNN或BI-LSTM做为句子编码器,把一个句子的词嵌入(Word Embedding)做为输入,用CNN或LSTM作特征的抽取器,最后通过softmax层获得N种关系的几率。这样省略了特征构造这一步,天然不会在特征构造这里引入偏差。
二、监督学习的优缺点
监督学习的优势是,若是标注好的训练语料足够大,那么分类器的效果是比较好的,可问题是标注的成本太大了。
(三)半监督
鉴于监督学习的成本太大,因此用半监督学习作关系抽取是一个很值得研究的方向。
半监督学习的算法主要有两种:Bootstrapping和Distant Supervision。Bootstrapping不须要标注好实体和关系的句子做为训练集,不用训练分类器;而Distant Supervision能够看作是Bootstrapping和Supervise Learning的结合,须要训练分类器。
这里介绍Bootstrapping的思想,Distant Supervision做为主人公,在后面的部分详细介绍。
一、例子
Bootstrapping算法的输入是拥有某种关系的少许实体对,做为种子,输出是更多拥有这种关系的实体对。敲黑板!不是找到更多的关系,而是发现拥有某种关系的更多新实体对。
怎么作的呢?举个栗子,“创始人”是一种关系,若是咱们已经有了一个小型知识图谱,里面有3个表达这种关系的实体对:(严定贵,你我贷),(马云,阿里巴巴),(雷军,小米)。
第一步:在一个大型的语料集中去找包含某一实体对(3个中的任意1个)的句子,所有挑出来。好比:严定贵于2011年创立了你我贷;严定贵是你我贷的创始人;在严定贵董事长的带领下,嘉银金科赴美上市成功。
第二步:概括实体对的先后或中间的词语,构造特征模板。好比:A 创立了 B;A 是 B 的创始人;A 的带领下,B。
第三步:用特征模板去语料集中寻找更多的实体对,而后给全部找到的实体对打分排序,高于阈值的实体对就加入到知识图谱中,扩展示有的实体对。
第四步:回到第一步,进行迭代,获得更多模板,发现更多拥有该关系的实体对。
细心的小伙伴会发现,不是全部包含“严定贵”和“你我贷”的句子都表达了“创始人”这种关系啊,好比:“在严定贵董事长的带领下,嘉银金科赴美上市成功”——这句话就不是表达“创始人”这个关系的。某个实体对之间可能有不少种关系,哪能一口咬定就是知识图谱中已有的这种关系呢?这不是会获得错误的模板,而后在不断的迭代中放大错误吗?
没错,这个问题叫作语义漂移(Semantic Draft),通常有两种解决办法:
一是人工校验,在每一轮迭代中观察挑出来的句子,把不包含这种关系的句子剔除掉。
二是Bootstrapping算法自己有给新发现的模板和实体对打分,而后设定阈值,筛选出高质量的模板和实体对。具体的公式能够看《Speech and Language Processing》(第3版)第17章。
二、Bootstrapping的优缺点
Bootstrapping的缺点一是上面提到的语义漂移问题,二是查准率会不断下降并且查全率过低,由于这是一种迭代算法,每次迭代准确率都不可避免会下降,80%---->60%---->40%---->20%...。因此最后发现的新实体对,还须要人工校验。
(四)无监督
半监督的办法效果已经勉强,无监督的效果就更差强人意了,这里就不介绍了。
第一篇要介绍的论文是《Distant supervision for relation extraction without labeled data》,斯坦福大学出品,把远程监督的方法用于关系抽取。研究关系抽取的远程监督算法,不得不提这篇论文。
(一)远程监督的思想
这篇论文首先回顾了关系抽取的监督学习、无监督学习和Bootstrapping算法的优缺点,进而结合监督学习和Bootstrapping的优势,提出了用远程监督作关系抽取的算法。
远程监督算法有一个很是重要的假设:对于一个已有的知识图谱(论文用的Freebase)中的一个三元组(由一对实体和一个关系构成),假设外部文档库(论文用的Wikipedia)中任何包含这对实体的句子,在必定程度上都反映了这种关系。基于这个假设,远程监督算法能够基于一个标注好的小型知识图谱,给外部文档库中的句子标注关系标签,至关于作了样本的自动标注,所以是一种半监督的算法。
具体来讲,在训练阶段,用命名实体识别工具,把训练语料库中句子的实体识别出来。若是多个句子包含了两个特定实体,并且这两个实体是Freebase中的实体对(对应有一种关系),那么基于远程监督的假设,认为这些句子都表达了这种关系。因而从这几个句子中提取文本特征,拼接成一个向量,做为这种关系的一个样本的特征向量,用于训练分类器。
论文中把Freebase的数据进行了处理,筛选出了94万个实体、102种关系和180万实体对。下面是实体对数量最多的23种关系。
关系种类至关于分类的类别,那么有102类;每种关系对应的全部实体对就是样本;从Wikipedia中全部包含某实体对的句子中抽取特征,拼接成这个样本的特征向量。最后训练LR多分类器,用One-vs-Rest,而不是softmax,也就是训练102个LR二分类器——把某种关系视为正类,把其余全部的关系视为负类。
由于远程监督算法可使用大量无标签的数据,Freebase中的每一对实体在文档库中可能出如今多个句子中。从多个句子中抽出特征进行拼接,做为某个样本(实体对)的特征向量,有两个好处:
一是单独的某个句子可能仅仅包含了这个实体对,并无表达Freebase中的关系,那么综合多个句子的信息,就能够消除噪音数据的影响。
二是能够从海量无标签的数据中获取更丰富的信息,提升分类器的准确率。
可是问题也来了,这个假设一听就不靠谱!哪能说一个实体对在Freebase中,而后只要句子中出现了这个实体对,就假定关系为Freebase中的这种关系呢?一个实体对之间的关系可能有不少啊,好比马云和阿里巴巴的关系,就有“董事长”、“工做”等关系,哪能判定就是“创始人”的关系呢?
这确实是个大问题,在本篇论文中也没有提出解决办法。
(二)分类器的特征
论文中使用了三种特征:词法特征(Lexical features)、句法特征(Syntactic features)和实体标签特征(Named entity tag features)。
一、词法特征
词法特征描述的是实体对中间或两端的特定词汇相关的信息。好比有:
而后把这些特征表示成向量再拼接起来。好比用词袋模型,把词语和词性都表示为向量。
二、句法特征
论文中的句法特征就是对句子进行依存句法分析(分析词汇间的依存关系,如并列、从属、递进等),获得一条依存句法路径,再把依存句法路径中的各成分做为向量,拼接起来。
以下为一个句子的依存句法路径,我不太懂,很少说。
三、命名实体标签特征
论文中作命名实体识别用的是斯坦福的NER工具包。把两个实体的标签也做为特征,拼接起来。
总结一下,论文中使用的特征不是单个特征,而是多种特征拼接起来的。有多个句子包含某实体对,能够从每一个句子中抽取出词法特征、句法特征和实体特征,拼接起来,获得一个句子的特征向量,最后把多个句子的特征向量再拼接起来,获得某实体对(一个样本)的特征向量。
不过做者为了比较词法特征和句法特征的有效性,把特征向量分为了3种状况:只使用词法特征,只使用句法特征,词法特征与句法特征拼接。
(三)实验细节
一、数据集说明
知识图谱或者说标注数据为Freebase,非结构化文本库则是Wikipedia中的文章。
论文中把Freebase的三元组进行了筛选,筛选出了94万个实体、102种关系和相应的180万实体对。用留出法进行自动模型评估时,一半的实体对用于训练,一半的实体对用于模型评估。
一样对Wikipedia中的文章进行筛选,获得了180万篇文章,平均每篇文章包含约14.3个句子。从中选择80万条句子做为训练集,40万条做为测试集。
二、构造负样本
因为对于每种关系,都要训练一个LR二分类器,因此须要构造负样本。这里的负样本不是其余101种关系的训练样本,而是这样的句子:从训练集中的句子中抽取实体对,若是实体对不在Freebase中,那么就随机挑选这样的句子就做为负样本。
三、训练过程
LR分类器以实体对的特征向量为输入,输出关系名和几率值。每种关系训练一个二分类器,一共训练102个分类器。
训练好分类器后,对测试集中的全部实体对的关系进行预测,并获得几率值。而后对全部实体对按几率值进行降序排列,从中挑选出几率最高的N个实体对(几率值大于0.5),做为发现的新实体对。
四、测试方法和结论
测试的指标采用查准率,方法采用了留出法(自动评估)和人工评估两种方法。留出法的作法是,把Freebase中的180万实体对的一半做为测试集(另外一半用于训练)。新发现的N个实体对中,若是有n个实体对在Freebase的测试集中,那么查准率为n/N。人工评估则采用多数投票的方法。
模型评估的结果代表,远程监督是一种较好的关系抽取算法。在文本特征的比较上,词法特征和句法特征拼接而成的特征向量,优于单独使用其中一种特征的状况。此外,句法特征在远程监督中比词法特征更有效,尤为对于依存句法结构比较短而实体对之间的词语很是多的句子。
(四)评价
这篇论文把远程监督的思想引入了关系抽取中,充分利用未标注的非结构化文本,从词法、句法和实体三方面构造特征,最后用留出法和人工校验两种方法进行模型评估,是一种很是完整规范的关系抽取范式。
不足之处有两点:
第一个是前面所提到的问题,那就是远程监督所基于的假设是一个很是强的假设。哪能说一个实体对在Freebase中存在一种关系,那么只要外部语料库中的句子中出现了这个实体对,就假定关系为Freebase中的关系呢?还多是其余关系啊?
Bootstrapping中也有这个问题,称为语义漂移问题,但Bootstrapping自己经过给新发现的规则模板和实体对打分,在必定程度上缓解了这个问题,而这篇论文并无提到这个问题,更没有涉及到解决办法。我猜这是由于Freebase中的实体对和关系主要就是从Wikipedia中抽取出来的,并且关系属于比较典型的关系。
这点就成了后续远程监督关系抽取算法的一个改进方向,后面的研究人员提出了利用多实例学习和句子级别的注意力机制来解决这个问题。
第二个是论文中用到了三种特征,貌似一顿操做猛如虎,但实际上构造这些特征很是繁琐,并且词性标注和依存句法分析依赖于NLP工具库,所以工具库在标注和解析中所产生的偏差,天然会影响到文本特征的准确性。
这点也是后续研究的一个改进方向,后面的研究人员用神经网络做为特征提取器,代替人工提取的特征,并用词嵌入做为文本特征。
第二篇论文是《Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks》,是用神经网络结合远程监督作关系抽取的扛鼎之做。
(一)论文的贡献
一、用PCNNs的神经网络结构自动学习文本特征,代替复杂的人工构造特征和特征处理流程。
PCNNs全名为Piecewise Convolutional Neural Networks,包含两层含义:Piecewise max pooling layer和Convolutional Neural Networds,对应到最大池化层和卷积层。用卷积神经网络强大的特征提取功能,能自动抽取丰富的特征,而且减小人工设计特征和NLP工具库抽取特征带来的偏差。省时省力又能减小偏差,何乐不为。
二、设计了分段最大池化层(三段,Piecewise max pooling layer)代替通常的最大池化层,提取更丰富的文本结构特征。
通常的最大池化层直接从多个特征中选出一个最重要的特征,其实是对卷积层的输出进行降维,但问题是维度下降过快,没法获取实体对在句子中所拥有的结构信息。
以下图,把一个句子按两个实体切分为前、中、后三部分的词语,而后将通常的最大池化层相应地划分为三段最大池化层,从而获取句子的结构信息。
三、用多实例学习(Multi-Instances Learning)解决远程监督作自动标注的错误标注问题。
远程监督本质上是一种自动标注样本的方法,可是它的假设太强了,会致使错误标注样本的问题。
论文认为远程监督作关系抽取相似于多实例问题(Multi-Instances Problem)。知识图谱中一个实体对(论文中的Bag)的关系是已知的,而外部语料库中包含该实体对的多个句子(Instances of Bag),表达的关系是未知的(自动标注的结果未知真假),那么多实例学习的假设是:这些句子中至少有一个句子表达了已知的关系。因而从多个句子中只挑出最重要的一个句子,做为这个实体对的样本加入到训练中。
本篇论文设计了一个目标函数,在学习过程当中,把句子关系标签的不肯定性考虑进去,从而缓解错误标注的问题。
总结一下,本文的亮点在于把多实例学习、卷积神经网络和分段最大池化结合起来,用于缓解句子的错误标注问题和人工设计特征的偏差问题,提高关系抽取的效果。
(二)研究方法
本文把PCNNs的神经网络结构和多实例学习结合,完成关系抽取的任务。
一、PCNNs网络的处理流程
PCNNs网络结构处理一个句子的流程分为四步:特征表示、卷积、分段最大池化和softmax分类。具体以下图所示。
(1)文本特征表示
(1)文本特征表示
使用词嵌入(Word Embeddings)和位置特征嵌入(Position Embeddings),而后把句子中每一个词的这两种特征拼接起来。
词嵌入使用的是预训练的Word2Vec词向量,用Skip-Gram模型来训练。
位置特征是某个词与两个实体的相对距离,位置特征嵌入就是把两个相对距离转化为向量,再拼接起来。
好比下面这个句子中,单词son和实体Kojo Annan的相对距离为3,和实体Kofi Annan的相对距离为-2。
假设词嵌入的维度是dw,位置特征嵌入的维度是dp,那么每一个词的特征向量的维度就是:d=dw+2*dp。假设句子长度为s,那么神经网络的输入就是s×d维的矩阵。
(2)卷积
假设卷积核的宽为w(滑动窗口),长为d(词的特征向量维度),那么卷积核的大小为W=w * d。步长为1。
输入层为q = s×d维的矩阵,卷积操做就是每滑动一次,就用卷积核W与q的w-gram作点积,获得一个数值。
卷积完成后会获得(s+w-1)个数值,也就是长度为(s+w-1)的向量c。文本的卷积和图像的卷积不一样,只能沿着句子的长度方向滑动,因此获得的是一个向量而不是矩阵。
为了获得更丰富的特征,使用了n个卷积核W={W1, W2, ... Wn},第i个卷积核滑动一次获得的数值为:
最终,卷积操做完成后会输出一个矩阵C:
(3)分段最大池化
把每一个卷积核获得的向量ci按两个实体划分为三部分{ci1, ci2, ..., ci3},分段最大池化也就是分别取每一个部分的最大值:
那么对于每一个卷积核获得的向量ci,咱们都能获得一个3维的向量pi。为了便于下一步输入到softmax层,把n个卷积核通过池化后的向量pi拼接成一个向量p1:n,长度为3n。
最后用tanh激活函数进行非线性处理,获得最终的输出:
(4)softmax多分类
把池化层获得的g输入到softmax层,计算属于每种关系的几率值。论文中使用了Dropout正则化,把池化层的输出g以r的几率随机丢弃,获得的softmax层的输出为:
输出的向量是关系的几率分布,长度为关系的种类(n1)。几率值最大的关系就是句子中的实体对被预测的关系。
二、多实例学习的过程
咱们知道通常神经网络模型的套路是,batch-size个句子通过神经网络的sotfmax层后,获得batch-size个几率分布,而后与关系标签的one-hot向量相比较,计算交叉熵损失,最后进行反向传播。所以上述PCNNs网络结构的处理流程仅是一次正向传播的过程。
PCNNs结合多实例学习的作法则有些差异,目标函数仍然是交叉熵损失函数,可是基于实体对级别(论文中的bags)去计算损失,而不是基于句子级别(论文中的instances)。这是什么意思呢?
对照上面的图,计算交叉熵损失分为两步:
第一步,对于每一个实体对,会有不少包含该实体对的句子(qi个),每一个句子通过softmax层均可以获得一个几率分布,进而获得预测的关系标签和几率值。为了消除错误标注样本的影响,从这些句子中仅挑出一个几率值最大的句子和它的预测结果,做为这个实体对的预测结果,用于计算交叉熵损失。好比上面的例子中,挑出了第二个句子。公式为:
第二步,若是一个batch-size有T个实体对,那么用第一步挑选出来的T个句子,计算交叉熵损失:
最后用梯度降低法求出梯度,并进行偏差反向传播。
以下是算法的伪代码,θ是PCNNs的参数,Eq.(9)是第一步中的公式。
(四)实验细节
一、数据集和评估方法
知识图谱为Freebase,外部文档库为NYT。把NYT文档库中2005-2006年的句子做为训练集,2007年的句子做为测试集。
评估方法沿用第一篇论文中的方法,留出法和人工校验相结合。
二、词嵌入和调参
预训练的词向量方面,本文用Skip-Gram模型和NYT文档库训练了50维的词向量。
位置特征嵌入使用随机初始化的向量,维度为5。
调参方面,PCNNs网络结构中有两个参数比较重要:卷积核的滑动窗口大小和卷积核的个数。本文使用网格搜索,最终肯定滑动窗口为3,卷积核个数为230。
模型的其余参数以下:
三、模型评估结果
(1)对留出法和人工校验法的说明
使用留出法和人工校验法来评估模型的效果。这里对这两种评估方法进行补充说明:
留出法的作法是把Freebase中一半的实体对用于训练,一半的实体对用于测试。多分类模型训练好以后,对外部文档库NYT中的测试集进行预测,获得测试集中实体对的关系标签。若是新发现的实体对有N个,其中有n个出如今Freebase的测试集中,那么准确率为n/N,而不在Freebase测试集中的实体对就视为不存在关系。但是因为Freebase中的实体对太少了,新发现的、不在Freebase里的实体对并不是真的不存在关系,这就会出现假负例(False Negatives)的问题,低估了准确率。
因此人工校验的方法是对留出法的一个补充,对于那些新发现的、不在Freebase测试集中的实体对(一个实体不在或者两个实体都不在)进行检查,计算查准率。因此留出法和人工校验要评估的两个新实体对集合是没有交集的。具体作法是从这些新实体对中选择几率值最高的前N个,而后人工检查其中关系标签正确的实体对,若是有n个,那么查准率为n/N。
(2)卷积神经网络与人工构造特征的对比
首先把PCNNs结合多实例学习的远程监督模型(记为PCNNs+MIL),与人工构造特征的远程监督算法(记为Mintz)和多实例学习的算法(记为MultiR和MIML)进行比较。
从下面的实验结果中能够看到,不管是查准率仍是查全率,PCNNs+MIL模型都显著优于其余模型,这说明用卷积神经网络做为自动特征抽取器,能够有效下降人工构造特征和NLP工具提取特征带来的偏差。
(3)分段最大池化和多实例学习的有效性
将分段最大池化和普通的最大池化的效果进行对比(PCNNs VS CNNs),将结合多实例学习的卷积网络与单纯的卷积网络进行对比(PCNNs+MIL VS PCNNs)。
能够看到,分段最大池化比普通的最大池化效果更好,代表分段最大池化能够抽取更丰富的结构特征。把多实例学习加入到卷积网络中,效果也有必定的提高,代表多实例学习能够缓解样本标注错误的问题。
(四)评价
这篇论文中,分段最大池化的奇思妙想来自于传统人工构造特征的思想,而多实例学习的引入缓解了第一篇论文中的样本错误标注问题。这篇论文出来之后是当时的SOTA。
不足之处在于,多实例学习仅从包含某个实体对的多个句子中,挑出一个最可能的句子来训练,这必然会损失大量的信息。因此有学者提出用句子级别的注意力机制来解决这个问题。
第三篇论文是《Neural Relation Extraction with Selective Attention over Instances》,这篇论文首次把注意力机制引入到了关系抽取的远程监督算法中,刷新了当时的SOTA。论文做者中有知乎网红刘知远老师。
(一)论文的贡献
这篇论文要解决的问题,就是多实例学习会遗漏大量信息的问题。因此这篇论文用句子级别的注意力机制代替多实例学习,对于包含某实体对的全部句子,给每个句子计算一个注意力得分,动态地下降标注错误的样本的得分,再进行加权求和,从而充分利用全部句子的信息。
多实例学习至关于硬注意力机制(Hard Attention),而咱们耳熟能详的以及论文中用到的注意力机制是选择性注意力机制(Selective Attention)或者说软注意力机制(Soft Attention),因此多实例学习实际上是选择性注意力机制的特殊状况(只有一个句子的权重为1,其余全为0)。
(二)模型介绍
模型主要分为两个部分:句子编码器和注意力层。
一、句子编码器
句子编码器就是上一篇论文中的PCNN或CNN网络结构,由卷积神经网络的输入层、卷积层、池化层、非线性映射层(或者说激活函数)构成。
文本特征一样用词嵌入和位置特征嵌入,池化层用普通的最大池化或者分段最大池化。
所以,本文的句子编码器部分输出的是一个句子通过最大池化而且非线性激活后的特征向量,用于输入到注意力层。这部分和上一篇论文基本相同,无须赘述。
二、注意力层
句子编码器的做用是抽取一个句子的特征,获得一个特征向量。若是外部文档库中包含某实体对的句子有n条,那么通过句子编码器的处理后,能够获得n个特征向量:x1, x2, ..., xn。在句子编码器和softmax层之间加一个选择性注意力层,那么处理的步骤以下:
第一步:计算句子的特征向量xi和关系标签r的匹配度ei,并计算注意力得分αi。公式中的r是关系标签的向量表示。
第二步:计算该实体对的特征向量s。该实体对的特征向量是全部句子的特征向量xi的加权之和,权重为每一个句子的注意力得分αi。
第三步:通过softmax层获得该实体对关于全部关系的几率分布,几率值最大的关系为预测的关系标签。
三、偏差反向传播
若是一个batch-size有s个实体对,那么用s个实体对的几率分布,计算交叉熵损失:
最后用梯度降低法求出梯度,并进行偏差反向传播。
(三)实验细节
一、数据集和评估方法
数据集和上一篇论文同样,知识图谱是Freebase,外部的文档库是NYT(New York Times corpus)。划分数据集的作法也一致。
评估方法采用留出法,再也不赘述。
二、词嵌入和参数设置
用NYT数据集训练Word2Vec,用网格搜索(Grid Search)肯定参数。
三、选择性注意力机制的效果
句子编码器分别采用CNN和PCNN的网络结构,PCNN+ONE表示PCNN结合多实例学习的模型,PCNN+ATT表示论文中的选择性注意力模型,PCNN+AVE表示对各句子求算术平均的模型(每一个句子的注意力得分相同)。
实验结果代表,不管是CNN仍是PCNN,加入注意力机制的模型在查准率和查全率上,都显著优于其余模型。
论文还有其余更细致的实验,欲知详情,请自行翻看论文。
(四)评价
这篇论文把注意力机制和CNN句子编码器结合,用来解决多实例学习存在的遗漏信息问题,更好地缓解了远程监督算法中的样本错误标注问题。
注意力机制在NLP任务中的效果是有目共睹的,PCNN+ATT的模型看起来很是漂亮,那么有什么改进方向呢?
开头咱们说了,关系抽取能够分为流水线式抽取(Pipline)和联合抽取(Joint Extraction)两种,流水线式抽取就是把关系抽取的任务分为两个步骤:首先作实体识别,再抽取出两个实体的关系;而联合抽取的方式就是一步到位,同时抽取出实体和关系。
所以上面介绍的三篇论文中的模型都属于流水线式抽取的方法,实体识别和关系抽取的模型是分开的,那么实体识别中的偏差会影响到关系抽取的效果。而联合抽取用一个模型直接作到了实体识别和关系抽取,是一个值得研究的方向。
参考资料:
一、《Speech and Language Processing》(Third Edition draft)第17章
二、《cs224u: Relation extraction with distant supervision》
三、《Distant supervision for relation extraction without labeled data》
四、《Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks》
五、《Neural Relation Extraction with Selective Attention over Instances》
六、《Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme》