知识图谱之关系抽取

什么是关系抽取?

关系抽取又称为信息抽取,旨在从大规模非结构化的自然语言文本中抽取结构化信息,再说的简单直白点就是:从文本中识别实体,并抽取实体与实体之间的语义关系。举个例子:1987年2月15日,赵柯出生在北京市某个区,如果赵柯和北京是两个实体的话,那么返回关系就是:人-出生地。关系抽取任务得到的结果常用于问答系统和知识图谱等应用,是基础且重要的自然语言处理任务。

为什么要进行关系抽取?

这个问题感觉,肯定有用嘛,主要用处如下:

  • 创建新的结构化知识库,增强现有知识库;
  • 构建垂直领域知识图谱,比如:医疗、金融、电商、教育等等;
  • 支持上层应用,比如:推荐、搜索、智能问答等;

怎么做关系抽取?

这个一说到方法,肯定既有传统的又有现代的,传统的就是基于规则的方法,效果呢一般般,这里不做讨论。本篇博文只讨论现在的方法,也就是监督学习方法。监督学习方法的精髓在于:把关系抽取当成一个多分类问题,每种关系都是一个类别,通过对标签数据的学习,训练出一个分类器即可,但是也有难点,主要难点有两个:

  • 特征的构建,传统的机器学习方法会利用一些NLP的技术构建组合特征,比如:依存句法分析等;
  • 标签数据的获取,监督学习的效果直接取决于训练数据集的大小和质量,但是要得到大量的标注数据的人工成本是巨大的。怎么解决这个问题呢?可以通过远程监督学习方法,从已有信息中得到大量标注数据。

下面具体讲关系抽取具体有哪些解决方案。

回顾TextCNN文本分类

上文讲到关系抽取的监督学习方法的精髓在于:把关系抽取当成一个多分类问题,也就是文本分类问题,一般文本分类的任务大概的思路即是抽取文本的特征,然后使用这些抽取的特征训练一个分类器。在正式开始介绍关系抽取任务的解决方案之前,先来回顾一下TextCNN方法,这是一个基于深度学习的文本分类模型,也是本文接下来要介绍的关系抽取任务解决方案的基础。
知识图谱之关系抽取_第1张图片

在TextCNN方法中,使用了卷积神经网络来对文本特征进行抽取和计算,不同于计算机视觉领域的使用,在文本分类方法中,使用一维的卷积神经网络来进行特征的提取。如上图所示。TextCNN的输入是一条句子中的每个单词的词向量,然后使用不同窗口大小的一维卷积核进行计算,然后将得到了每个通道的结果进行max-over-time pooling计算,再将不同通道的结果拼接到一起,得到最后的向量表示。TextCNN的结果向量的长度仅依赖于一维卷积计算的通道数,所以可以适用于不同长度的句子进行特征提取。

TextCNN + Position Embedding(PECNN)

在了解了TextCNN方法后,我们正式进入到关系抽取任务中。通过上述关于TextCNN方法的描述,我们可以知道如果仅使用基础的TextCNN来完成关系抽取任务,那么则会完全忽略掉句子中的实体标注信息,也就是模型并不知道句子中的哪两个单词是需要提取关系的实体。同时,一条句子中的单词根据其相对于两个实体的位置,其对两个实体之间关系的贡献也不同,假设距离两个实体越近的单词,越可能表示两个实体的关系。所以,在上述的分析下,面向关系抽取的TextCNN方法,加入了Position Embedding的概念。如下图所示,根据一个单词和两个实体的相对位置,可以提取出两个特征,分别是单词和实体1的相对距离以及和实体2的相对距离。然后在TextCNN模型中,将这两个特征embedding的结果拼接在每个单词的词向量后,在单词的语义信息中加入了位置信息,将TextCNN方法从单纯的文本分类方法修改到了面向关系提取的方法。
知识图谱之关系抽取_第2张图片

PCNN

在加入了Position Embedding后,虽然方法已经在关系抽取任务上表现不错,但是研究者仍然继续思考关系抽取任务的特点,并加以改进。研究者发现,一条句子,可以通过两个实体进行划分,,根据这种划分可以将一条句子分成三段,分别是,,,然后进行了假设,不同区域的单词对关系的贡献是不同的,表示两个实体之间关系的单词更可能出现在两个实体之间的部分。但是在TextCNN方法中,通过卷积计算得到的结果要通过max-over-time pooling计算,将每个通道得到结果取最大值作为结果,这样的就完全同意忽略了不同区域的问题,所以研究者提出了PCNN(Piecewise Convolutional Neural Network),来解决这个问题。
模型结构如下图所示,在上述的TextCNN+Position Embedding的基础上添加了Piecewise的操作,即是将一维卷积计算得到的结果,按照实体的位置进行分割,得到三个区域的结果,再分别进行max-over-time pooling计算。这样,通过对句子的Piecewise操作,可以更好的表示不同区域的文本特征,得到更优的结果。知识图谱之关系抽取_第3张图片

远程监督学习

在了解了PCNN后,我们先不继续关系分类任务解决方案的介绍,先来看一下在关系分类任务中的主要挑战,也就是远程监督数据集中的噪声数据。在大部分的自然处理任务中,都分成两个部分,模型和数据,数据表示如何构造一个大而丰富,同时也要正确的数据集。而这样的数据集往往需要大量的人力进行手动构建,所以关系抽取任务的数据集往往都很小。而远程监督(Distant Supervision)即是解决这个问题,这是一种快速自动构建关系抽取任务数据集的方法。方法比较简单,通过现有知识库中的三元组对无标注的文本进行对齐,如果三元组中的两个实体都出现在一条句子中,则将这个句子中两个实体的关系标注为三元组中的关系。
这样的方法虽然高效快速,但是也会带来大量的噪声数据。比如:

  • 马云花了20年左右的时间创造了一个阿里帝国;
  • 马云在阿里集体婚礼上表达了对每对新人的祝福;

上面两句话都出现了马云和阿里这两个实体,所以远程监督的方法会将这两条句子都标注为of founders的关系,但是在句子2中,这两个实体之间其实没有表示这个关系,但是远程监督的方法仍然会将其标注,也就是在数据集中引入了噪声,这样的噪声是不可控的,所以虽然远程监督的方法可以快速构造非常巨大的数据集,但是其产生的噪声也是让人非常头痛的问题,也是关系抽取任务中的主要挑战。

Multi-Instance Learning

在了解了远程监督所带来的问题后,我们继续关系抽取任务的解决方案,接下来的方法都是针对如何解决远程监督数据集中的噪声问题。
根据远程监督数据集的特点,研究者们将多示例学习(Multi-Instance Learning)的方法加入到了关系抽取任务中,多示例学习方法是由监督学习演变而来的,相较于输入一系列被单独标注的示例,在多示例学习中,输入的是一系列被标注的“包(bag)”,每个“包”都包括了许多示例。举一个二元分类的例子,当一个包中所有的示例都是负例时,这个包会被标注为负包。而一个包至少包含一个正例时,这个包则被标注为正包。

而在关系抽取任务,研究者根据每个实体对进行划分,将包含相同实体对的句子划分成一个包,包则标注为相应的关系。根据远程监督带来的噪声问题,每个包中含有正例和部分噪声,再加入了多示例学习后,关系抽取任务从句子级别的分类任务变成包级别分类任务。
在特征提取部分,仍然使用上面介绍的PCNN方法,在对每个包中的句子进行特征抽取后,根据句子不同的置信度,选择包中置信度较高的句子进行学习,并进行分类。使用多示例学习的方法可以通过置信度来对包中的句子进行选择,来避免对噪声数据进行学习。

Sentence-Level Attention

在引入了多示例学习之后,虽然可以减少噪声数据,但是也同样忽略了部分正确的数据,因为仅仅是根据置信度的选择,在避免噪声数据的同时,也会将部分正确的数据错误的认为是噪声数据。根据这个问题,有研究者在多示例学习的基础上提出了句子级别的注意力方法(Sentence-Level Attention)来解决这个问题,在使用所有数据进行计算的情况下,减少噪声数据对结果的影响。
同样是使用上述的PCNN进行特征提取,在对一个包中所有的句子进行特征提取后,通过注意力的机制,计算包中每条句子的权重,再将包中的句子根据权重进行加和计算,得到包级别的特征表示,在进行分类器得到最后的结果。
通过句子级别的注意力机制,可以给一个包中标注正确的句子较高的权重,而包中的噪声数据则是比较低的权重,在使用所有正确数据的情况下,也可以高效的减少噪声数据对结果的影响。

你可能感兴趣的:(知识图谱)