显然,信息抽取任务与命名实体识别任务类似,但相对来说更为复杂。有时,信息抽取也被称为事件抽取(eventextraction)。
与自动摘要相比,信息抽取更有目的性,并能将找到的信息以一定的框架展示。自动摘要输出的则是完整的自然语言句子,需要考虑语言的连贯和语法,甚至是逻辑。有时信息抽取也被用来完成自动摘要。
由于能从自然语言中抽取出信息框架和用户感兴趣的事实信息,无论是在知识图谱、信息检索、问答系统还是在情感分析、文本挖掘中,信息抽取都有广泛应用。
信息抽取主要包括三个子任务:
关系抽取通常再实体抽取与实体链指之后。在识别出句子中的关键实体后,还需要抽取两个实体或多个实体之间的语义关系。语义关系通常用于连接两个实体,并与实体一起表达文本的主要含义。常见的关系抽取结果可以用SPO结构的三元组来表示,即(Subject,Predication,Object),如
中国的首都是北京==>(中国,首都,北京)
关系抽取的分类:
随着深度学习以及词向量的发展,近年来大多的关系抽取模型都采用词向量作为关系抽取的主要特征,且均取得了非常好的效果。限于篇幅,本文仅对有监督学习下的Pipline经典模型进行介绍
在深度学习兴起之前,关系抽取的传统方法依赖于特征工程,而这些特征通常由预先准备的NLP系统得到,这容易在构造特征的过程中造成误差累积,阻碍系统性能。
模型的输入主要包括两个部分,即词汇级别特征以及句子级别特征:
小结:该模型将关系抽取任务利用神经网络进行建模,利用无监督的词向量以及位置向量作为模型的主要输入特征,一定程度上避免了传统方法中的误差累积。但仍然有lexicallevelfeature这个人工构造的特征,且CNN中的卷积核大小是固定的,抽取到的特征十分单一
该论文首先提出关系分类和关系抽取两个主要任务:
小结:该论文的模型输入完全没有人工特征,且使用多宽度大小的卷积核进行特征抽取,相对于Zeng的效果来说仅提升了\(0.1\%\),个人认为提升的主要关键点在于多粒度大小的卷积核上,而lexicalfeature在这种简单的深度学习模型上还是能够起到一定的效果的,这在之后的工作中也得到了证实
这篇论文同样是在Model1基础上的改进,模型的基本架构与之前基本一致,最大的改变损失函数。模型结构如上图所示,主要有以下几个部分:
这个损失函数主要有以下几个特点:
在这篇论文之前有过利用简单的RNN和BiRNN作为模型编码模块的处理关系抽取任务的,但是效果较CNN来说差的就不是一点两点了,这里就不提了。该论文用经典的BiLSTM作为模型主要模块,此外,重新考虑了lexicalfeature,实验证明lexicalfeature对模型性能确实有十分明显的提升效果。
模型的主要架构是BiLSTM,这个结构大家再熟悉不过了,论文也没有贴模型整体图,这里我也偷下懒...接下来分段阐述一下模型的主要工作。
小结:论文最后测试了不加人工特征,只用wordembedding,结果下降了\(1.5\)个点,说明人工特征还是有一定效果的。此外,论文还测试了移除某个特征对模型的影响,发现位置特征和NER特征的移除对模型的影响非常小,这也是十分好理解的,这里就不多说了。
模型的主要架构如上图所示。其实模型的主要架构还是比较常规的,下面简单介绍一下:
其中,\(H\)为BiLSTM的所有时刻的输出,\(w\)为随机初始化的参数向量,同时也参与到模型训练,\(\alpha\)为注意力分数的计算结果,\(r\)为对\(H\)注意力分数加权的结果,最后还对注意力加权结果通过一个\(tanh\)激活函数,即\(h^*=tanh(r)\)得到注意力层的输出
小结:从论文的结果来看,不进行特征工程,仅仅将整个句子作为模型输入,并加入注意力机制,模型效果得到了非常大的提高,一方面说明必要的特征工程还是有效的,另一方面表明注意力机制也起到了十分明显的作用
模型的主要结构如上图所示,下面分别阐述下模型的各个模块:
在求得每个词针对两个实体的注意力分数之后,对之前的词表征进行处理,文中给出的处理方法有三种:
最后的\(w^O\)即为整个模型的输出向量
其中,\(\hat{y}^-\)为所有标签中与\(w^O\)距离最大的负标签(个人在这里存在疑惑,认为这个应该是与\(w^O\)距离最小的负标签才更为合适,因为我们期望将最易分错的类别与\(w^O\)应该尽量远)
小结:可以看到这篇论文的两次Attention以及损失函数的设计都是十分巧妙的,且论文中提到效果非常好,许多技巧还是可以借鉴的。
论文的主要思想是对两个实体间的词法句法的最短依赖路径SDP(shortestdependencypath)进行建模,这也是常见的一种关系抽取任务的建模方法,并与之前的建模方式存在一些区别,下面相对详细地阐述一下。
由于受到卷积神经网络和循环神经网络特性的限制,之前的工作将句法依赖关系看作是词或者某些句法特征,如词性标签(POS)。该论文的第一个贡献就是提出了一种RCNN的网络结构:
模型细节如上图所示,下面简单讲解一下整个模型结构:
其中,\(W_{con}\)和\(b_{con}\)为卷积神经网络参数。在这之后,使用一个MaxPooling层局部特征进行池化操作。由于模型是双向分别处理的,两个方向的模型分别得到一个池化结果\(\overrightarrow{G}\)和\(\overleftarrow{G}\)。-Classifier:输出层由3个分类器组成-coarse-grainedsoftmaxclassifier:将双向的池化信息拼接作为分类器输入,为一个\((K+1)\)类的分类器,即$$y=softmax(W_c[\overrightarrow{G};\overleftarrow{G}]+b_c)$$-fine-grainedsoftmaxclassifiers:两个分类器共享参数,分别对两个方向的池化信息单独进行分类,为一个\((2K+1)\)类的分类器,作者认为同时对两个方向的信息进行分类有助于加强模型判断关系方向性的能力$$\overrightarrow{y}=softmax(W_f\cdot\overrightarrow{G}+b_f)\\overleftarrow{y}=softmax(W_f\cdot\overleftarrow{G}+b_f)$$
而对于解码过程,两个实体之间只存在一个单向的关系,因此仅需要两个fine-grainedsoftmaxclassifiers的输出结果即可
其中,\(\alpha\)为一个超参数,论文中将其设置为0.65。另外由于两个预测结果的方向是相反的,因此需要用一个函数\(z(·)\)来将\(\overleftarrow{y}\)转化为与\(\overrightarrow{y}\)对应的格式
小结:将词法句法的SDP作为输入特征来实现关系抽取也是常见的一种建模方法,且效果也非常不错。这篇论文通过对文本以及依赖关系分别建模,利用LSTM和CNN进行不同层次的特征编码,并分两个方向进行信息融合,确实是一大亮点。如果词向量只用WordEmbeddings,分数可以达到85.4,如果加上NER、POS以及WordNet等特征可以达到86.3。
将关系抽取看作单独任务的模型总结就做到这里了,或许之后看见更优秀的论文还会进行一些更新,这里将每个模型在SemEval-2010Task-8上的分数都记载一下:
总的来说,人工特征、句法特征、注意力机制、特殊的损失函数都是关系抽取模型性能提升的关键点,其余的就需要在模型架构上进行合理的设计了,下一篇准备介绍实体与关系联合抽取模型,争取早点写出来...