首页 > 其他分享 >【信息抽取】如何使用循环神经网络进行关系抽取

【信息抽取】如何使用循环神经网络进行关系抽取

时间:2022-10-12 21:02:12浏览次数:47  
标签:关系 抽取 RNN 模型 神经网络 循环 CNN 向量


事物、概念之间的关系是人类知识中非常重要的一个部分,但是他们通常隐藏在海量的非结构文本中。为了从文本中抽取这些关系事实,从早期的模式匹配到近年的神经网络,大量的研究在多年前就已经展开。

然而,随着互联网的爆炸发展,人类的知识也随之飞速的增长,因而对关系抽取(Relation Extraction, RE)提出了更高的要求,需要一个有效的RE系统,能够利用更多的数据;有效的获取更多的关系;高效的处理更多复杂的文本;具有较好的扩展性,能够迁移到更多的领域。

本文介绍一种基于循环神经网络的关系抽取方法。

作者&编辑 | 小Dream哥

1 导论 

因为基于统计的关系抽取方法需要复杂的特征过程,基于深度学习的方法得以引入,最早的应用在关系抽取中的深度学习模型是CNN,上一篇我们介绍了一种较早的用于关系抽取的CNN模型,感兴趣的读者可以看看:

【信息抽取】如何使用卷积神经网络进行关系抽取

相比于基于统计的方法,基于CNN的方法确实取得了不错的进展,但是CNN对于时序特征的抽取能力偏弱,特别是

当两个实体之间的“距离”比较远时,CNN模型的效果会变差。

RNN时最适合做时序特征抽取的模型,本文介绍一种简单的基于RNN的关系抽取框架,虽然简单,但是在当时取得了非常不错的效果。

Daojian Zeng, Kang Liu, Siwei Lai, Guangyou Zhou, and Jun Zhao. 2014. Relation classifification via convolutional deep neural network. In Proceedings of COLING, pages 2335–2344.

2 网络结构

【信息抽取】如何使用循环神经网络进行关系抽取_神经网络

如上图所示,是这次要介绍的基于RNN的关系抽取模型的的框架图,总的来说,这个框架非常的简洁,主要包括3个部分:词嵌入,双向RNN层,池化层

1)词嵌入(Word Representation)

词嵌入就是目前NLP领域最普通的词嵌入,每一个输入词语转化成一个固定维度的向量。这个向量是从预先训练好的词向量字典中查找得到,这份词向量字典中的词向量表征了词之间的语义关系。论文中用到的词向量是用word2vec训练好的词向量。

2) 双向RNN层

采用双向RNN层进行特征抽取,这里的双向RNN是最朴素的RNN模型,通过双向RNN建模输入序列的语义特征。循环神经网络是NLP中最基本的概念,这里就不再赘述了。

3) 池化层

在现在的NLP模型中,池化层并不多见,但是在早期的深度学习模型中,池化用的还挺多的,主要是用于特征抽取。

输入序列经过双向RNN层的特征抽取之后,得到一个输出序列[h1,h2,h3,...ht],那么如何利用这些特征,得到一个句向量,来表征输入序列呢?该论文中,参考CNN的池化层,做如下的操作,得到句向量m:

【信息抽取】如何使用循环神经网络进行关系抽取_神经网络_02

其中t表示输入序列的长度,M表示RNN的size。

总的来说,这个操作就是,对每一个维度,取t个特征向量中最大的值,得到一个维度为M的向量m,用来表征输入序列。

为什么最大池化能有效呢?论文认为,只有那些关键的特征对最后的关系分类有作用,通过模型的训练,可以突出这些特征,从而获得效果。

4) 输出层

输出层就非常的简单了,接一个全连接层,在接softmax就可以输出分类,然后用交叉熵做损失函数,用来训练了。

需要提出的是,论文的输入还引入了实体位置的标识(Position indicators)。即用特殊的标识在输入序列中将两个实体标识出来,例如:

<e1>周杰伦</e1>的<e2>七里香</e2>很受欢迎。

3 模型效果

【信息抽取】如何使用循环神经网络进行关系抽取_人工智能_03

如上图所示,展示了模型增加不同部分,对最终F1值的影响,我们可以得出一下结论:

(1) 最大池化对模型的效果影响很大:池化的过程能够提取出对关系分类最重要特征,用于分类。

(2) 标识出实体的位置能够给模型带来很好的性能提升。

这些结论和经验对于后续的模型建模都是宝贵的经验,基于这些经验,后面的工作才能更能进一步。

总结

本文介绍了一种基于循环神经的关系抽取的方法,总的来说,这个模型很简洁,但是效果却很好。

最大池化能够提升模型的性能,但是同时也会损失很多特征。因此这个模型对于一些难度较高的,需要一定的语义理解关系的情况会比较吃力,这也是为什么后面的NLP模型都摒弃了池化层的原因之一。

前面介绍的都是关系分类模型,下一篇介绍一种一个模型就能够抽取出来实体和关系的联合模型。

下期预告:一种端到端的关系抽取模型

  • =​

标签:关系,抽取,RNN,模型,神经网络,循环,CNN,向量
From: https://blog.51cto.com/u_14122493/5751550

相关文章

  • js for循环 打印10*10五角星矩阵,倒五角星矩阵
    10*10五角星矩阵varstr='';for(vari=0;i<10;i++){//行for(varj=0;j<10;j++){//列str+='☆';}......
  • 三个循环语句
    一、for循环for(表达式1;表达式2;表达式3){循环语句…}表达式1:变量赋值,只执行一次表达式2:为真怎进入循环,为假结束表达式3;循环执行完,就会执行语句3,再执行表达式2,构成循环实例:求......
  • CyclicBarrier循环屏障
    1.应用场景CyclicBarrier应用于多个线程必须同时开始2.代码privatestaticCyclicBarriercyclicBarrier=newCyclicBarrier(5);publicstaticvoidmain(S......
  • C++ 循环队列(基于数组)
    Code: classCircularQueue{private://容量intC;//容器vector<int>els;//队头指针intfront;//队尾指针intrear;......
  • if-else循环struct
    importjava.util.Scanner;publicclassDemo01{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);System.out.p......
  • 【知识图谱】知识抽取是什么,怎么做?
    互联网时代,人类在与自然和社会的交互中生产了异常庞大的数据,这些数据中包含了大量描述自然界和人类社会客观规律有用信息。如何将这些信息有效组织起来,进行结构化的存储,就是......
  • 【每周NLP论文推荐】 掌握实体关系抽取必读的文章
    欢迎来到《每周NLP论文推荐》。在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的。实体关系抽取作为信息抽取领......
  • Java基础(三)| switch、循环及Random详解
    ⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开......
  • 第三章 循环
    JS循环循环for循环语法结构for(初始化变量;条件表达式;操作表达式){//循环体}名称作用初始化变量通常被用于初始化一个计数器,该表达式可以使用......
  • ShuffleNetV1:极致轻量化卷积神经网络(分组卷积+通道重排)
    参考论文:ShuffleNet:AnExtremelyEfficientConvolutionalNeuralNetworkforMobileDevices作者:XiangyuZhang,XinyuZhou,MengxiaoLin,JianSun  1、论文摘要 ......