目录
前言
本文总结关系抽取中的远程监督方法,解读三篇重要论文。第一篇是开山之作,第二篇解决了第一篇中的数据标注错误问题,第三篇解决了第二篇中的特征遗失问题。但是从最终的测试结果来看,论文的效果离落地实用还相差太远。
1. 远程监督关系抽取开山之作
论文:Distant supervision for relation extraction without labeled data. ACL 2009.
地址:论文地址
1.1 介绍
关系抽取模型的目的是从关系集合中挑选一个关系分配给未知实体对,实际上就是分类任务。所以模型训练时需要学习每类关系所对应的特征(注意不是学习实体对的特征),满足这些特征的实体对就属于该类关系。训练监督学习模型需要标注数据,人工标注这些数据耗费大量时间,因此人们提出远程监督学习。
远程监督的假设:如果两个实体有关系,那么任何包含这两个实体的句子都可以表达这种关系。
假设实体e1和e2具有关系Ra,可表示为Ra{e1, e2}。若数据集中存在一个句子包含e1和e2,则说明该句子表达了关系Ra,将该句子标注为关系Ra的一个样本。使用这种方法,便可以从未标注数据集中得到标注的训练集。这就是远程监督的核心思想。
1.2 训练过程
1.2.1 数据标注方法
使用NER模型标记句子中的实体,例如标记人名、组织、位置等实体,关系抽取就是去抽取这类实体之间的关系。实体的类型依据自己需求而定。如果一个句子包含知识图谱中的两个实体,并且这两个实体在知识图谱中具有某种关系,那么就将该句子标注为该关系。
例如,在知识图谱中有 股东{马云,阿里巴巴}。句子“马云于今日卸任阿里巴巴董事职位。”,该句子中同时含有马云和阿里巴巴,那么就将该句子标注为具有股东关系,于是得到一条训练样本:
句子:马云于今日卸任阿里巴巴董事职位。 label:股东
使用这种方法可以为每个类别生成很多个标注样本,有了标注样本就可以训练分类模型。
1.2.2 训练方法
首先为每类关系创建一个特征向量。创建方法很简单,直接提取句子的特征,提取方法不限,可使用深度学习模型,或者传统的特征工程。若有10个句子包含该关系,每个句子能提取3个特征,那么该关系的特征向量中就包含30个特征。即使有些提取的特征并不能表达出该关系,但是特征向量中包含众多特征,也许大部分特征或者部分特征联合起来,还是能有效表达该关系的,这是远程监督有效性的保证。
得到关系的特征向量后,便可训练一个分类模型,分类模型有很多,可自行选择。
1.3 测试过程
首先使用NER标识句子中的实体。这一次,只要一对实体同时出现在一个句子中,都被认为这一对实体含有一个潜在的关系。
抽取句子中的特征,并添加到该实体对的特征向量中。例如,如果测试集中有10个句子出现了这对实体,从每个句子中提取3个特征,那么这对实体就会有30个相关特征。
分类模型根据该实体对的特征向量预测一个关系类别。
1.4 思考
为什么训练集中要用NER去识别词的类型呢?在训练过程中这个并没有用处。这是因为在测试集中没有标注好的实体,实体都不知道更无从判断关系。使用NER识别后即认为这两种实体之间可能存在关系,此时并不关心这些实体具体是什么,只需抽取这句话的特征,放入关系分类器中分类即可。
要注意训练过程和测试过程中,模型输入的特征向量不同。训练过程中是关系的特征向量,测试过程中是实体对的特征向量。训练时我们想让模型知道含有关系Ra的句子都有哪些特征,所以我们将所有含有关系Ra的句子的特征组合成一个特征向量,这便是关系Ra的特征向量。测试时我们想知道这对实体的关系类别,所以我们将所有含有这对实体的句子的特征组合成一个特征向量,这便是这对实体的特征向量。特征向量本质都是句子特征。
论文的特征提取过程不再讲述,因为不适用于深度学习模型中,没有借鉴意义。
1.5 总结
这篇论文提出的远程监督方法,无需人工标注数据也能训练监督模型,是关系抽取领域的重大突破。但是,该方法在提出之初显然也存在诸多问题。最大的问题就是标注的数据不一定蕴含对应的关系。例如,在1.2.1节举的例子,该句子就无法显示该类关系。因此,训练集中实际存在大量标注错误的句子。为解决这个问题,有学者就提出了PCNN模型。
2. PCNN
论文:《Distant Supervision for Relation Extraction via Piecewise Convolutional Neural Networks》
地址:论文地址
2.1 介绍
远程监督学习是关系抽取的重要方法,但是远程监督个重大缺点:标注错误问题。实体A和B在知识图谱中的关系为R,远程监督认为所有同时包含实体A和B的句子都具有R关系,显然会造成标注错误。此外,传统的关系抽取方法中,需要精巧的特征工程,通常会使用到NLP分析工具,由于这些工具在分析句子时可能存在错误,这种错误会传播到关系抽取模型中,错误的传播和积累降低模型性能。
本文提出的模型PCNN(Piecewise Convolutional Neural Networks)可以解决上述两个问题。本文将远程监督学习看作是一个多实例学习问题,用于解决第一个问题。然后使用CNN模型自动学习文本特征,从而解决第二个问题。在CNN最后的池化操作中,本文使用分段池化方法。作者认为可以根据两个实体的位置,将句子划分为三部分,左边部分包含了左边实体信息,中间部分包含了两个实体信息,右边部分包含了右边实体信息。对全局进行池化操作无法捕获这种结构信息,因此作者分别对三部分进行池化操作。
2.2 模型结构
本文提出的PCNN模型如下图所示:

模型包含四部分:Vector representation,Convolution,Piecewise maxpooling,softmax classifier。
Vector representation将词转化为词向量,并添加位置向量,图中position表示位置向量。这里的位置是每个词相对两个实体的相对位置。例如,下图中son相对两个实体的位置分别为p1=3和p2=-2。位置向量随机初始化,拼接[p1, p2]作为son的位置向量。

常用的池化操作是max pool over time,这种方式避免了池化输出尺寸随句子长度变化。但是,这种方式不适合关系抽取任务,因为对句子长度特征池化,无法捕获细粒度特征。本文提出分段池化,将句子按照实体位置分为三段,分别对每段池化。池化输出长度是固定的,对池化结果进行tanh激活, g = t a n h ( p 1 : n ) g=tanh(p_{1:n}) g=tanh(p1:n)。
Softmax计算每类关系的得分, o = w 1 g + b o=w_{1}g+b o=w1g+b。为了防止过拟合,对g随机失活。使用伯努利随机初始化的向量r,对g进行掩模,即完成了失活操作。所以有 o = w 1 ( g ∗ r ) + b o=w_{1}(g*r)+b o=w1(g∗r)+b。
为了降低错误标注带来的影响,本文使用多实例学习方法。知识图谱中一个实体对(论文中的bag)的关系是已知的,外部语料库中包含该实体对的多个句子(instance of bag)表达的关系是未知的,多实例学习的假设是:这些句子中至少有一个句子表达了已知关系,于是挑选出这个句子作为训练样本加入到训练集中。
多实例学习每次使用一袋样本而不是单个样本,这一袋数据都包含同一对实体,袋的标签为实体对在知识图谱中的关系,袋中数据相互独立。训练时一个batch size有T袋,首先从每袋数据中找出最具代表性的样本,用这个样本的标签看作是这袋数据的预测标签。然后计算袋的损失,而不是样本损失。算法过程如下图:

下面公式(9)用于计算一袋数据中最具代表性的样本:
y ∗ = a r g m a x j p ( y i ∣ m i j ; θ ) , 1 ≤ j ≤ q i y^*=argmax_{j}p(y_{i}|m_{i}^j;\theta),1\leq j\leq q_{i} y∗<

最低0.47元/天 解锁文章
5815

被折叠的 条评论
为什么被折叠?



