0. 写在前面

“正确的判断来自经验,而经验来自于错误的判断”

之前做过的百度今年的语言与智能技术竞赛,其中有一个子赛道就是关于信息抽取。信息抽取(Information Extraction)是指从非结构化的自然语言文本中抽取出实体、属性、关系等三元组信息,是构建知识图谱的基础技术之一。IE的子任务大概有以下几种:

  • 实体识别与抽取
  • 实体消歧
  • 关系抽取
  • 事件抽取

之前有介绍过关于实体识别的一些内容,今天这系列文章就主要来看看关系抽取是怎么做的。

1. 什么是关系抽取(Relation Extraction)?

同样,在进入具体RE论文之前,先对这个任务有个大概的了解吧。关系抽取的目的是从文本中抽取两个或多个实体之间的语义关系,举个栗子:

关系抽取的解决方案主要有以下几类:

  • 基于模板的方法(rule-based)
  • 监督学习
    • ML
    • DL
  • 半监督/无监督学习
    • Bootstrapping
    • Distant supervision
    • Unsupervised learning from the web

篇幅限制,这里就不具体展开,关系抽取的更具体介绍可以参考斯坦福的Introduction to NLP,不是cs224n!

2. Relation Classification via Convolutional Deep Neural Network(Zeng/Coling2014)

挺久远的一篇文章,可以算是CNN用于文本处理比较早的一批了。在这之前,大多数模型使用的都是feature-based或者kernel-based方法,不仅处理过程复杂而且算法最终的效果很大程度上依赖于特征设计的有效性。基于此,作者提出了一种基于CNN的深度学习框架,可以自动提取输入中多层次的特征(词层面和句子层面)如下所示:

模型可以分成以下几个部分,接下来一一介绍:

Word Representation Layer

标准操作word embedding,不过用的不是现在主流的word2vec、glove等等,而是预训练的来自Word representations: A simple and general method for semi-supervised learning的词向量。

Feature Extraction Layer

特征抽取模块设计了两种features:词法特征(Lexical-Feature)和句法特征(sentence-level feature)

Lexical-Feature

在确定实体关系任务中,词法特征是非常重要的。传统的词法特征提取主要包括实体本身、名词性实体对以及实体之间的距离等等,这些特征很大程度上依赖于现有的NLP工具,对RE任务最重效果容易引起误差放大。但是在有了word embedding之后就可以对词法特征设计更恰当的特征,一共有五部分:

举个栗子,对于句子
S:[People ]0have 1been 2moving 3back 4into 5[downtown ]6S :[\text { People }]_{0} \quad \text { have }_{1} \quad \text { been }_{2} \quad \text { moving }_{3} \quad \text { back }_{4} \quad \text { into }_{5} \quad[\text { downtown }]_{6}S:[People]0have1been2moving3back4into5[downtown]6

  • L1: People
  • L2: downtown
  • L3: xsx_{s}xs,have
  • L4: into, xex_{e}xe
  • L5: 在wordnet中找到people和downtown的上位词。

注意:以上都是word embedding形式

Sentence Level Features

句法特征提取方案如下:

在第一步Window Processing设计了两个特征输入,一个是单词特征(Word Features), 一个是位置特征(Position Features)

  • Word Features就是word embedding,不过加入了n-gram的信息;
  • Position Features就是位置信息,每个context单词与实体对词语之间的相对距离。这样设计的目的是为了突出两个entity的作用

最后对每一个单词将Word Features和Position Features拼接起来,得到features维度为:dw+2∗dpd_{w} + 2 *d_{p}dw+2dp,其中,dpd_{p}dp为position embedding的维度。
得到句子的抽象表达之后,送入卷积层进行特征提取。不过这里的卷积核设计有点奇怪只有一层将Window Processing层的输出进行线性映射:Z=W1X\mathbf{Z}=\mathbf{W}_{1} \mathbf{X}Z=W1X
接着为了每一维度提取最重要的特征,设计了max-pooling层:mi=max⁡Z(i,⋅)0≤i≤n1m_{i}=\max \mathbf{Z}(i, \cdot) \quad 0 \leq i \leq n_{1}mi=maxZ(i,)0in1
最后通过非线性激活层得到句子特征表示:g=tanh⁡(W2m)\mathbf{g}=\tanh \left(\mathbf{W}_{2} \mathbf{m}\right)g=tanh(W2m)

Output Layer

output层的输入是将上一层词法和句法层面提取出来的特征进行拼接f=[l,g]\mathbf{f}=[\mathbf{l}, \mathbf{g}]f=[l,g],并送入softmax层进行关系的多分类。损失函数为交叉熵损失,优化方式为SGD。o=W3f\mathbf{o}=\mathbf{W}_{3} \mathbf{f}o=W3f p(i∣x,θ)=eoi∑k=1n4eokp(i | x, \theta)=\frac{e^{o_{i}}}{\sum_{k=1}^{n_{4}} e^{o_{k}}}p(ix,θ)=k=1n4eokeoi

模型表现

数据集使用的是SemEval 2010 Task 8,共有19种关系类别(双向的9类 + 一类Other)。

小结

以上就是基于CNN进行关系抽取的整体思路。总结一下:

  1. 整个模型需要学习的参数:word embedding(XXX) - position embedding (PPP)- 卷积核权重矩阵(W1W_{1}W1) - sentence-level 最后的全连接层参数矩阵 (W2W_{2}W2)- 用于softmax的全连接层参数矩阵(W3W_{3}W3
  2. 引入位置信息,CNN相对RNN较弱的是对长距离位置的建模,这里加上PE后可以很有效缓解这个问题,之后的很多研究(CNN,attention等)都有PE的身影;
  3. 卷积层那块感觉有点单一,因为只有一个线性的映射特征提取不够充分
  4. 虽然整个框架在现在来看是非常简单的设计,但是经典

Talk is cheap, show me the code

CODE HERE


3. Relation Extraction: Perspective from Convolutional Neural Networks(Nguyen/ACL2015)

15年的文章,在之前Zeng的模型基础上加入了多尺寸卷积核,并且更"偷懒地"丢弃了人工的词法特征,完全依靠word embedding和CNN来做特征。完整的框架和文本分类领域非常经典的Text-CNN很像,之前在文本分类模块我们也有详细介绍过(【论文复现】使用CNN进行文本分类)

试验分析

relation classification

relation extraction

小结

  1. 在Zeng的基础上使用了多尺寸卷积核,更全面提取特征
  2. 丢弃人工词法特征,端到端训练更方面
  3. 进一步研究关系抽取问题,考虑了该问题中数据集分布不平衡
  4. CNN框架比较简单,因此效果提升不是很明显

Talk is cheap, show me the code

CODE HERE


4. Classifying Relations by Ranking with Convolutional Neural Networks(Santos/ACL2015)

直接看模型,也是非常传统的文本CNN框架,但是作为顶会文章肯定是有一些亮点的。

创新点

模型的框架这里就不多啰嗦了,直接看重点,想比与之前的CNN论文,本文的创新主要有以下几点:

1. 损失函数

不同于一般多分类使用的softmax+cross-entropy损失函数,这里独特地设计了一种margin-based ranking lossL=log⁡(1+exp⁡(γ(m+−sθ(x)y+))+log⁡(1+exp⁡(γ(m−+sθ(x)c−))L=\log \left(1+\exp \left(\gamma\left(m^{+}-s_{\theta}(x)_{y^{+}}\right)\right)\right. +\log \left(1+\exp \left(\gamma\left(m^{-}+s_{\theta}(x)_{c^{-}}\right)\right)\right.L=log(1+exp(γ(m+sθ(x)y+))+log(1+exp(γ(m+sθ(x)c))其中每个参数的意义如下

x,y+,c−x, y^{+}, c^{-}x,y+,c :输入句子sent, sent对应的正确标签,sent对应的错误标签
m+m^{+}m+:正标签对应的大于0的margin
m−m^{-}m:错误标签对应的大于0的margin
sθ(x)y+s_{\theta}(x)_{y^{+}}sθ(x)y+:正样本对应的得分
sθ(x)c−s_{\theta}(x)_{c^{-}}sθ(x)c:负样本对应的得分
γ\gammaγ:缩放系数

理解了参数的意思之后,就可以明白这个损失函数是在干什么了。首先右边第一项计算的是正样本的得分只有大于margin的时候才不会有损失,否则就需要计算损失,即得分越高越好;右边第二项计算的是负样本的得分只有小于 -margin才不计算损失,即负样本得分越小越好;是不是跟SVR的感觉有点像?这样整体的损失函数的目的就是更加清晰地区分正负样本。
实验结果显示,自定义损失函数相较于CE损失效果提高2%左右。

那么具体实现中,怎么去确定负样本采样呢?c−=arg⁡max⁡c∈C;c≠y+sθ(x)cc^{-}=\underset{c \in C ; c \neq y^{+}}{\arg \max } s_{\theta}(x)_{c}c=cC;c=y+argmaxsθ(x)c

2. 对Other类别的处理

Other类别表示两个标定的entity没有任何关系或者是属于不存在与给定关系集合中的关系,对于模型来说都是噪音数据。经过之前是实践(参考github),发现确实模型在对Other类型的处理部分并不是很理想,拉低了最终的得分。因此作者提出在训练阶段,直接不考虑Other这一类别,即对于Other的训练数据,令上一节中损失函数第一项为0。那么在预测阶段,如果其他类别的score都为负数,那么就分类为Other。从实验结果看,这个点的提高有2%左右。


以上~
2019.05.07

【论文】Awesome Relation Classification Paper(关系分类)(PART I)相关推荐

  1. 【论文】Awesome Relation Classification Paper(关系分类)(PART II)

    0. 写在前面 上一篇[论文]Awesome Relation Extraction Paper(关系抽取)(PART I)介绍了一些关系抽取和关系分类方面的经典论文,主要是以CNN模型为主,今天我们 ...

  2. 【论文】Awesome Relation Extraction Paper(关系抽取)(PART IV)

    0. 写在前面 不想写 1. Neural Relation Extraction with Multi-lingual Attention(Lin/ ACL2017) 这篇文章是在Lin 2016年 ...

  3. 【论文】Awesome Relation Extraction Paper(关系抽取)(PART V)

    写在前面 之前介绍的关系抽取系列文章主要是属于pipeline形式的,即第一步用实体识别将关系对抽取出来,第二步才是对关系对的分类,这样的做法会导致误差的传递.另外有一种解决方案是端到端的joint ...

  4. 【论文】Awesome Relation Extraction Paper(关系抽取)(PART III)

    0. 写在前面 回头看了一遍之前的博客,好些介绍的论文主要是属于关系分类的领域,于是就把前几篇的标题给修改了一下哈哈.关系分类和之前的文本分类,基于目标词的情感识别还都挺像的,baseline模型也都 ...

  5. 译文:Relation Classification via Multi-Level Attention CNNs 使用多层级attention机制的CNN进行关系分类

    通过多层面的attention CNN的关系分类 原文:Relation Classification via Multi-Level Attention CNNs http://eprints.bi ...

  6. 【文本分类】Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification

    ·摘要:   从模型的角度,本文作者将RNN(Bi-LSTM)和attention mechanism结合使用,提出AttRNN模型,应用到了NLP的关系抽取(Relation Classificat ...

  7. NRE论文总结:Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification

    acl论文阅读(Attention-Based Bidirectional Long Short-Term Memory Networks for Relation Classification,中科 ...

  8. 论文浅尝 | Reinforcement Learning for Relation Classification

    论文链接:http://aihuang.org/p/papers/AAAI2018Denoising.pdf 来源:AAAI 2018 Motivation Distant Supervision 是 ...

  9. <论文翻译>Relation Classification via Multi-Level Attention CNNs

    原文:Relation Classification via Multi-Level Attention CNNs http://eprints.bimcoordinator.co.uk/14/ 摘要 ...

最新文章

  1. ES6中的class是如何实现的?(附Babel编译的ES5代码详解)
  2. CCS卸载安装过程及所遇问题
  3. Canvas做股票数据走势图实践分享(一)
  4. 《Zabbix安装部署-1》-Centos7
  5. Linux/Unix下的任务管理器-top命令
  6. php恒等符,php学习笔记(三)操作符与控制结构
  7. 【SAP业务模式】之ICS(四):组织单元的配置
  8. android 暂停其他app的声音_【一万个APP】第二十二期潮汐
  9. python界面设计模块_Python+Pycharm+PyQT5可视化程序设计入门
  10. 15天玩转redis —— 第六篇 有序集合类型
  11. 排序-InsertionSort 插入排序
  12. 434.字符串中的单词数
  13. MPLAB X环境ICD3无法使用
  14. Microsoft SQL Server 双机热备份,实时同步
  15. 【Matlab元胞自动机】元胞自动机双边教室疏散【含源码 1208期】
  16. HTML+JS 动态爱心效果,表白神器,装逼特效
  17. 知网查重提交论文显示服务器错误,知网查重时显示检测失败是什么原因?
  18. Java小白入门200例14之求最大公约数
  19. 12星座超级独家!通过星座完美你自己!不断加新中……
  20. 自学玩编程需要具备哪些能力

热门文章

  1. 存量客户管理之提额降息
  2. How to use BMW 35080 adapter with Yanhua Mini ACDP
  3. JAVA遇见HTML——JSP篇:JSP内置对象(上)
  4. windows10 Build 10074版本上手体验(二)
  5. IOS开发UI控件UIScrollView和Delegate的使用
  6. 15.3D效果,盒阴影和滤镜
  7. Excel-DNA开发包:ExcelDna-0.34.6.zip下载
  8. Go语言同步和异步执行多个任务封装
  9. Bitmap简单使用及简单解析
  10. 类模板 - C++快速入门45