精华内容
下载资源
问答
  • 命名实体识别与关系抽取
    千次阅读
    2019-12-19 16:25:17

    基于深度学习的命名实体识别与关系抽取
    【备注:此博文初次编辑为2019年12月19日,最新编辑为2019年12月19日】
    摘要:构建知识图谱包含四个主要的步骤:数据获取、知识抽取、知识融合和知识加工。其中最主要的步骤是知识抽取。知识抽取包括三个要素:命名实体识别(NER)、实体关系抽取(RE) 和 属性抽取。其中属性抽取可以使用python爬虫爬取百度百科、维基百科等网站,操作较为简单,因此命名实体识别(NER)和实体关系抽取(RE)是知识抽取中非常重要的部分,同时其作为自然语言处理(NLP)中最遇到的问题一直以来是科研的研究方向之一。
      本文将以深度学习的角度,对命名实体识别和关系抽取进行分析,在阅读本文之前,读者需要了解深度神经网络的基本原理、知识图谱的基本内容以及关于循环神经网络的模型。可参考本人编写的博文:(1)基于深度学习的知识图谱综述;(2)[深度神经网络];(3)(https://blog.csdn.net/qq_36426650/article/details/84398458)。
      本文的主要结构如下,首先引入知识抽取的相关概念;其次对词向量(word2vec)做分析;然后详细讲解循环神经网络(RNN)、长短期记忆神经网络(LSTM)、门控神经单元模型(GRU);了解基于文本的卷积神经网络模型(Text-CNN);讲解隐马尔可夫模型(HMM)与条件随机场等图概率模型(CRF);详细分析如何使用这些模型实现命名实体识别与关系抽取,详细分析端到端模型(End-to-end/Joint);介绍注意力机制(Attention)及其NLP的应用;随后介绍知识抽取的应用与挑战,最后给出TensorFlow源码、推荐阅读以及总结。本文基本总结了整个基于深度学习的NER与RC的实现过程以及相关技术,篇幅会很长,请耐心阅读:

    • 一、相关概念
    • 二、序列模型数据
    • 三、循环神经网络
    • 四、循环神经网络的缺陷
    • 五、长短期记忆神经网络(LSTM)与门控神经单元(GRU)
    • 六、长期依赖模型的优化
    • 七、概率图模型(PGM)
    • 八、运用Bi-LSTM和CRF实现命名实体识别
    • 九、卷积神经网络
    • 十、基于文本的卷积神经网络(Text-CNN)的关系抽取
    • 十一、基于依存关系模型的关系抽取
    • 十二、基于远程监督的关系抽取
    • 十三、注意力机制(Attention)
    • 十四、基于注意力机制的命名实体识别与关系抽取
    • 十五、三元组的存储——图形数据库
    • 十六、Tensorflow实现命名实体识别与关系抽取
    • 十七、推荐阅读书籍
    • 十八、项目实例1(面向智慧农业的知识图谱及其应用系统 · 上海华东师范大学数据科学与工程学院)
    • 十九、项目实例2(博主的本科毕业设计&计算教育——智学AI·基于深度学习的学科知识图谱)
    • 二十、总结

    一、相关概念

    在传统的自然语言处理中,命名实体识别与关系抽取是两个独立的任务,命名实体识别任务是在一个句子中找出具有可描述意义的实体,而关系抽取则是对两个实体的关系进行抽取。命名实体识别是关系抽取的前提,关系抽取是建立在实体识别之后。

    1.1 实体与关系

    实体是指具有可描述意义的单词或短语,通常可以是人名、地名、组织机构名、产品名称,或者在某个领域内具有一定含义的内容,比如医学领域内疾病、药物、生物体名称,或者法律学涉及到的专有词汇等。实体是构建知识图谱的主要成员。
      关系是指不同实体之间的相互的联系。实体与实体之间并不是相互独立的,往往存在一定的关联。例如“马云”和“阿里巴巴”分别属于实体中的人名和机构名,而它们是具有一定关系的。
      在命名实体识别和关系抽取之后,需要对所产生的数据进行整合,三元组是能够描述整合后的最好方式。三元组是指(实体1,关系,实体2)组成的元组,在关系抽取任务中,对任意两个实体1和实体2进行关系抽取时,若两者具有关系,则它们可以构建成三元组。例如一句话“马云创办了阿里巴巴”,可以构建的三元组为(“马云”,“创办”,“阿里巴巴”)。

    1.2 标注问题

    监督学习中有三种问题,分别是分类问题、回归问题和标注问题。分类问题是指通过学习的模型预测新样本在有限类集合中对应的类别;回归问题是指通过学习的模型拟合训练样本,使得新样本可以预测出一个数值;标注问题则是根据输入的序列数据对其用预先设置的标签进行依次标注。
      本文的思想便是序列标注,通过输入的序列数据,选择相应的模型对样本进行训练,完成对样本的标注任务。
      常用的标注任务包括命名实体识别、词性标注、句法分析、分词、机器翻译等,解决序列标注问题用到的深度学习模型为循环神经网络。

    二、序列模型数据

    在深度神经网络一文对深度神经网络的分析中已经指出,传统的BP神经网络只能处理长度固定,样本之间相互独立的数据,而对于处理命名实体识别、关系抽取,以及词性标注、情感分类、语音识别、机器翻译等其他自然语言处理的问题中,文本类的数据均以句子为主,而一个句子是由多个单词组成,不同的句子长度不一致,因此对于模型来说,大多数是以单词为输入,而单个词往往没有特定的意义,只有多个词组合在一起才具有一定的含义。例如对于“马云”一词,单个词“马”可能表达的是动物,“云”一词可能表示的是天上飘得云彩,也可以表示“云计算”的云,而“马云”却表示人名。所以这一类数据之间是有关联的。我们对句子级别的数据称为序列模型数据。
      对于文本类的序列模型数据,通常是不能直接作为模型的输入数据的,需要进行预处理。

    2.1 one-hot向量

    将句子中的单词转换为数字的一种方法是采用one-hot向量。例如训练集中有3000个不重复的单词,根据其在词汇表中的排序,可以依次为其编号,例如“a”编号为0,“book”的编号为359,“water”的编号2441。因此这3000个单词都有唯一的编号。
      为了能通过向量形式表达,one-hot向量是指除了下标为该单词编号所对应的的值为1以外其他都为0。例如一个集合只有一句话“马云在杭州创办了阿里巴巴”,其中只有11个不重复的词,分别编号0-10,则“马”字的one-hot向量为[Math Processing Error] [1,0,0,0,0,0,0,0,0,0,0][1,0,0,0,0,0,0,0,0,0,0],“阿”字的one-hot向量是[Math Processing Error] [0,0,0,0,0,0,0,0,1,0,0][0,0,0,0,0,0,0,0,1,0,0]。
      one-hot向量能够很清楚得为每一个词进行“数值化表示”,将人理解的内容转换为计算机可以理解的内容。
      Ps:有关onehot向量的详解:OneHot编码知识点,数据预处理:独热编码(One-Hot Encoding)

    2.2 词嵌入向量(word embeddings)

    one-hot向量虽然能够简单的表示一个词,但是却存在三个问题:
      (1)one-hot向量是稀疏向量,并不能存储相应的信息;
      (2)当语料库中包含的词汇很多时(上百万上千万),一个one-hot向量的维度将会很大,容易造成内存不足;
      (3)序列模型的数据需要能够体现出词语词之间的关联性,单纯的one-hot向量不能体现出关联性。例如对于词汇“good”和“well”都表示不错的意思,再某些程度上具有相似关联,而one-hot只是简单的编号,并未体现这层相似性。
    因此,为了解决one-hot带来的问题,引入词向量概念。
      词向量有许多种表达方式,传统的方法是统计该词附近的词出现的次数。基于深度学习的词向量则有word embeddings,其是通过谷歌提出的word2vec方法训练而来。
      word2vec方法是将高维度的one-hot向量进行降维,通常维度设置为128或者300,其通过神经网络模型进行训练。基于神经网络的词向量训练有两种模型,分别是CBOW和Skip-Gram模型,如下图

    (1)CBOW模型是将一个词所在的上下文中的词作为输入,而那个词本身作为输出。通常设置一个窗口,不断地在句子上滑动,每次滑动便以窗口中心的词作为输出,其他词作为输入。基于大量的语句进行模型训练,通过神经网络的梯度下降法进行调参。最终神经网络的权重矩阵即为所有词汇的word embeddings。
      (2)Skip-Gram模型与CBOW相反,其随机选择窗口内的一个词的one-hot向量作为输入,来预测其他所有词可能出现的概率,训练后的神经网络的权重矩阵即为所有词汇的word embeddings。
      word2vec对训练好的神经网络,需要通过遍历所有词汇表抽取出所有词汇的word embedding,常用的优化模型是哈弗曼树(Hierarchical Softmax)和负采样(Negative Sampling)。
      Ps:关于word2vec训练详细解读可参考:如果看了此文还不懂 Word2Vec,那是我太笨,Word Embedding与Word2Vec;关于word2vec的模型优化可参考基于Hierarchical Softmax的模型概述,基于Negative Sampling的模型概述。

    三、循环神经网络

    更多相关内容
  • 8.1 Text-CNN的结构 8.2 Text-CNN应用于关系抽取 九、基于依存关系模型的关系抽取 9.1依存句法分析 9.2 依存句法分析实现关系抽取 一、相关概念   在传统的自然语言处理中,命名实体识别与关系抽取是两个独立的...

    参考:https://blog.csdn.net/qq_36426650/article/details/84668741#t6
               ~~~~~~~~~~           https://blog.csdn.net/bobobe/article/details/80489303#commentBox
    小编也加入了自己的理解


    摘要:构建知识图谱包含四个主要的步骤:数据获取、知识抽取、知识融合和知识加工。其中最主要的步骤是知识抽取。知识抽取包括三个要素:命名实体识别(NER)实体关系抽取(RE)属性抽取。其中属性抽取可以使用python爬虫爬取百度百科、维基百科等网站,操作较为简单,因此命名实体识别(NER)和实体关系抽取(RE)是知识抽取中非常重要的部分,同时其作为自然语言处理(NLP)中最遇到的问题一直以来是科研的研究方向之一。

             ~~~~~~~~         本文将以深度学习的角度,对命名实体识别和关系抽取进行分析,在阅读本文之前,读者需要了解深度神经网络的基本原理、知识图谱的基本内容以及关于循环神经网络的模型。可参考本人编写的博文:(1)基于深度学习的知识图谱综述;(2)深度神经网络

      本文的主要结构如下,首先引入知识抽取的相关概念;其次对词向量(word2vec)做分析;然后详细讲解循环神经网络(RNN)、长短期记忆神经网络(LSTM)、门控神经单元模型(GRU);了解基于文本的卷积神经网络模型(Text-CNN);讲解隐马尔可夫模型(HMM)与条件随机场等图概率模型(CRF);详细分析如何使用这些模型实现命名实体识别与关系抽取,详细分析端到端模型(End-to-end/Joint);介绍注意力机制(Attention)及其NLP的应用;随后介绍知识抽取的应用与挑战,最后给出TensorFlow源码、推荐阅读以及总结。本文基本总结了整个基于深度学习的NER与RC的实现过程以及相关技术,篇幅会很长,请耐心阅读



    一、相关概念

      在传统的自然语言处理中,命名实体识别与关系抽取是两个独立的任务,命名实体识别任务是在一个句子中找出具有可描述意义的实体,而关系抽取则是对两个实体的关系进行抽取。命名实体识别是关系抽取的前提,关系抽取是建立在实体识别之后。

    1.1 实体与关系

             ~~~~~~~~         实体是指具有可描述意义的单词或短语,通常可以是人名、地名、组织机构名、产品名称,或者在某个领域内具有一定含义的内容,比如医学领域内疾病、药物、生物体名称,或者法律学涉及到的专有词汇等。实体是构建知识图谱的主要成员。
             ~~~~~~~~         关系是指不同实体之间的相互的联系。实体与实体之间并不是相互独立的,往往存在一定的关联。例如“马云”和“阿里巴巴”分别属于实体中的人名和机构名,而它们是具有一定关系的。
             ~~~~~~~~         在命名实体识别和关系抽取之后,需要对所产生的数据进行整合,三元组是能够描述整合后的最好方式。三元组是指(实体1,关系,实体2)组成的元组,在关系抽取任务中,对任意两个实体1和实体2进行关系抽取时,若两者具有关系,则它们可以构建成三元组。例如一句话“马云创办了阿里巴巴”,可以构建的三元组为(“马云”,“创办”,“阿里巴巴”)。

    1.2 标注问题

             ~~~~~~~~         监督学习中有三种问题,分别是分类问题、回归问题和标注问题。分类问题是指通过学习的模型预测新样本在有限类集合中对应的类别;回归问题是指通过学习的模型拟合训练样本,使得新样本可以预测出一个数值;标注问题则是根据输入的序列数据对其用预先设置的标签进行依次标注。
             ~~~~~~~~         本文的思想便是序列标注,通过输入的序列数据,选择相应的模型对样本进行训练,完成对样本的标注任务。
             ~~~~~~~~         常用的标注任务包括命名实体识别、词性标注、句法分析、分词、机器翻译等,解决序列标注问题用到的深度学习模型为循环神经网络。

    二、序列模型数据

             ~~~~~~~~         深度神经网络一文对深度神经网络的分析中已经指出,传统的BP神经网络只能处理长度固定,样本之间相互独立的数据,而对于处理命名实体识别、关系抽取,以及词性标注、情感分类、语音识别、机器翻译等其他自然语言处理的问题中,文本类的数据均以句子为主,而一个句子是由多个单词组成,不同的句子长度不一致,因此对于模型来说,大多数是以单词为输入,而单个词往往没有特定的意义,只有多个词组合在一起才具有一定的含义。例如对于“马云”一词,单个词“马”可能表达的是动物,“云”一词可能表示的是天上飘得云彩,也可以表示“云计算”的云,而“马云”却表示人名。所以这一类数据之间是有关联的。我们对句子级别的数据称为序列模型数据
             ~~~~~~~~         对于文本类的序列模型数据,通常是不能直接作为模型的输入数据的,需要进行预处理。

    2.1 one-hot向量

             ~~~~~~~~         将句子中的单词转换为数字的一种方法是采用one-hot向量。例如训练集中有3000个不重复的单词,根据其在词汇表中的排序,可以依次为其编号,例如“a”编号为0,“book”的编号为359,“water”的编号2441。因此这3000个单词都有唯一的编号。
             ~~~~~~~~         为了能通过向量形式表达,one-hot向量是指除了下标为该单词编号所对应的的值为1以外其他都为0。例如一个集合只有一句话“马云在杭州创办了阿里巴巴”,其中只有11个不重复的词,分别编号0-10,则“马”字的one-hot向量为 [1,0,0,0,0,0,0,0,0,0,0],“阿”字的one-hot向量是[0,0,0,0,0,0,0,0,1,0,0]
             ~~~~~~~~         one-hot向量能够很清楚得为每一个词进行“数值化表示”,将人理解的内容转换为计算机可以理解的内容。

      Ps:有关onehot向量的详解:OneHot编码知识点,数据预处理:独热编码(One-Hot Encoding)

    2.2 词嵌入向量(word embeddings)

      one-hot向量虽然能够简单的表示一个词,但是却存在三个问题:
      (1)one-hot向量是稀疏向量,并不能存储相应的信息;
      (2)当语料库中包含的词汇很多时(上百万上千万),一个one-hot向量的维度将会很大,容易造成内存不足;
      (3)序列模型的数据需要能够体现出词语词之间的关联性,单纯的one-hot向量不能体现出关联性。例如对于词汇“good”和“well”都表示不错的意思,再某些程度上具有相似关联,而one-hot只是简单的编号,并未体现这层相似性。
    因此,为了解决one-hot带来的问题,引入词向量概念。
      词向量有许多种表达方式,传统的方法是统计该词附近的词出现的次数。基于深度学习的词向量则有word embeddings,其是通过谷歌提出的word2vec方法训练而来。
      word2vec方法是将高维度的one-hot向量进行降维,通常维度设置为128或者300,其通过神经网络模型进行训练。基于神经网络的词向量训练有两种模型,分别是CBOW和Skip-Gram模型,如下图。


      (1)CBOW模型是将一个词所在的上下文中的词作为输入,而那个词本身作为输出。通常设置一个窗口,不断地在句子上滑动,每次滑动便以窗口中心的词作为输出,其他词作为输入。基于大量的语句进行模型训练,通过神经网络的梯度下降法进行调参。最终神经网络的权重矩阵即为所有词汇的word embeddings。

      (2)Skip-Gram模型与CBOW相反,其随机选择窗口内的一个词的one-hot向量作为输入,来预测其他所有词可能出现的概率,训练后的神经网络的权重矩阵即为所有词汇的word embeddings。

      word2vec对训练好的神经网络,需要通过遍历所有词汇表抽取出所有词汇的word embedding,常用的优化模型是哈弗曼树(Hierarchical Softmax)和负采样(Negative Sampling)。

      Ps:关于word2vec训练详细解读可参考:如果看了此文还不懂 Word2Vec,那是我太笨Word Embedding与Word2Vec;关于word2vec的模型优化可参考基于Hierarchical Softmax的模型概述基于Negative Sampling的模型概述

    三、循环神经网络

             ~~~~~~~~         循环神经网络是BP神经网络的一种改进,其可以完成对序列数据的训练。根据前面讲解内容,循环神经网络需要能够记住每个词之间的关联性,因为每个词可能会受到之前的词的影响。

    3.1 循环神经网络的结构

             ~~~~~~~~         循环神经网络与BP神经网络不同之处在于其隐含层神经元之间具有相互连接。循环神经网络是基于时间概念的模型,因此对于横向的连接每一个神经元代表一个时间点。模型如图所示:

      对于时刻 t时刻的输入为 x t = { x t 1 , x t 2 , . . . } x_t=\{x_{t1},x_{t2},...\} xt={xt1,xt2,...}, 即为一个word embedding,输入到中心圆圈(隐层状态神经元)的箭头表示一个神经网络,权重矩阵为U,偏向为 b,对于时间 t-1时刻,中心的圆圈已经存在一个值 s t − 1 s_{t-1} st1该圆圈与t时刻的圆圈的箭头也表示一个神经网络,其权重矩阵为W,偏向也为b。循环神经网络的关键即为某一时刻 t的隐层状态神经元的值不仅取决于当前的输入,也取决于前一时刻的隐层状态,即为: s t = f ( W s t − 1 + U x t + b ) s_{t}=f(Ws_{t-1}+Ux_t+b) st=f(Wst1+Uxt+b)
             ~~~~~~~~         其中f(·)表示激活函数。
      对于网络的输出部分,循环神经网络输出个数与输入数量一致,时刻 t 的输出为:
    y ^ t = o t = s o f t m a x ( V s t + c ) \hat y_t = o_t=softmax(Vs_t+c) y^t=ot=softmax(Vst+c)
             ~~~~~~~~         由于对于序列模型来说,数组的长度是不一致的,即循环神经网络的输入神经元长度是不确定的,因此各个神经网络采用了共享参数 W,U,V,b和c

    循环神经网络的剖面图如下图,该图能够比较直观的认识循环神经网络的空间结构(图片为转载,可忽略里面的参数):

    在这里插入图片描述

    3.2 循环神经网络的训练

             ~~~~~~~~         循环神经网络的训练与传统的BP神经网络训练方法一样,分为前向传播和反向传播,前向传播的公式为:
    s t = f ( W s t − 1 + U x t + b ) s_{t}=f(Ws_{t-1}+Ux_t+b) st=f(Wst1+Uxt+b)
    y ^ t = o t = s o f t m a x ( V s t + c ) \hat y_t = o_t=softmax(Vs_t+c) y^t=ot=softmax(Vst+c)
    假设损失函数为 L。反向传播采用BPTT(基于时间的反向梯度下降)算法计算各个参数的梯度。输出层的神经网络梯度下降与BP神经网络的一样。而对于隐含层状态神经元部分,由于其在前向传播过程中的值来自于两个方向,同时又流向另外两个方向,因此在反向传播过程中,梯度将来自当前时刻的输出和下一时刻的状态,同时梯度流向该时刻的输入和上一时刻的状态,如图 E t = o t E_t=o_t Et=ot

    因此,假设时间长度为 n,对于某一时刻 t(0<t<n),隐层状态神经元的梯度将是不断累加的。下面给出循环神经网络的参数 W,U,V,b,c的梯度:

    在这里插入图片描述
             ~~~~~~~~         由于循环神经网络的共享参数机制,使得网络可以用很少的参数来构建一个大的模型,同时减少了计算梯度的复杂度。

      Ps:关于BPTT算法详细推导,可参考博文:基于时间的反向传播算法BPTT(Backpropagation through time),书籍:人民邮电出版社的《深度学习》233页。

    3.3 其他类型的循环神经网络

             ~~~~~~~~         上述的循环神经网络结构是标准的模型,对于不同的应用会产生不同的模型。在基于循环神经网络的情感分类问题中,模型的输入是长度不一的句子,而模型的输出往往只有一个(是积极的还是消极的评论),因此这属于多对一模型,如图:
    在这里插入图片描述

    3.4 双向循环神经网络

             ~~~~~~~~         在命名实体识别问题中,输入的数据是一个句子,往往一个句子中的词不仅受到前面词的影响,同时也可能受到后面的词的影响,例如句子“王小明是班级上学习最好的同学”中之所以可以识别出人名实体“王小明”,是因为其后的关键词“同学”,而该实体前面没有词可以提供识别的依据。普通的循环神经网络仅考虑了前一时刻的影响,却未考虑后一时刻的影响,因此需要引入了双向循环神经网络模型。
      双向循环神经网络的结构如下:
      
    在这里插入图片描述
    其由输入层、前向隐含层、后向隐含层和输出层组成。输入层输入序列数据,前向隐含层的状态流向是顺着时间,后向隐含层的状态流向是逆着时间的,因此前向隐含层可以记住当前时刻之前的信息,而后向隐含层可以记住当前时刻未来的信息。通过输出层将前向、后向隐含层的向量进行拼接或者求和。
      双向循环神经网络的前向传播式子为:
    在这里插入图片描述
    双向循环神经网络的梯度下降法仍然使用BPTT算法,对于前向和后向隐含层,梯度的流向是互不干扰的,因此可以用普通的循环神经网络梯度下降的方法对前向和后向分别计算。

    3.5 深度循环神经网络

    循环神经网络的结构还是属于浅层模型,可以观察其结构图,只有两层网络组成。为了提高模型的深度,一种深度循环神经网络被提出,其结构如图所示:
    深度循环神经网络:
    在这里插入图片描述
             ~~~~~~~~         可知每一层便是一个循环神经网络,而下一层的循环神经网络的输出作为上一层的输入,依次进行迭代而成。
             ~~~~~~~~         深度循环神经网络的应用范围较少,因为对于单层的模型已经可以实现对序列模型的编码,而深层次模型会造成一定的过拟合和梯度问题,因此很少被应用。

    四、循环神经网络的缺陷

             ~~~~~~~~         在命名实体识别任务中,通过训练循环神经网络模型,实体识别的精度往往可以达到60%-70%,同时以其共享参数的机制,构建一个较大的循环神经网络不需要像BP网络那样需要庞大的参数,因此模型的训练效率也大大提高。
             ~~~~~~~~         但是循环神经网络有两个致命的缺陷,在实验中经常遇到:
             ~~~~~~~~         **(1)容易造成梯度爆炸或梯度消失问题。当序列长度为100时,第1个输入的梯度在传递100层之后,可能会导致指数上升或者指数下降。
             ~~~~~~~~         
    (2)对于较长的序列,模型无法能够长期记住当前的状态。**例如对于句子“这本书,名字叫平凡的世界,白色封皮,有一个书签夹在里面,旁边放着一支笔,…,是我的”,若要提取出有效的信息“这本书是我的”,需要长久的记住“这本书”,直到遇到“是我的”为止,而对于省略号完全可以无限的长。因此普通的循环神经网络无法记住这么久。
      因此为了解决这两个问题,需要对循环神经网络做出改进,使得其能够长期记住某一状态。

    五、长短期记忆神经网络(LSTM)与门控神经单元(GRU)

    链接:https://blog.csdn.net/Sakura55/article/details/81537498
    隐含层的部分又称为LSTM单元,如图:
    在这里插入图片描述

    5.1、LSTM-GRU

    这里有必要详细讲解一下内部的操作算法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    5.2 双向长短期记忆神经网络(Bi-LSTM)

    与循环神经网络一样,单向的模型不能够记住未来时刻的内容,因此采用双向模型,双向模型如图所示:
      在这里插入图片描述
      Bi-LSTM的结构与Bi-RNN模型结构一样。同一时刻在隐含层设置两个记忆单元(LSTM unit),分别按照顺时间(前向)和逆时间(后向)顺序进行记忆,最后将该时刻两个方向的输出进行拼接,即:
    h t = [ h t ← , h t → ] h_t=[\overleftarrow{h_t},\overrightarrow{h_t}] ht=[ht ,ht ]
     在诸多学术论文中,对命名实体识别最常用的便是Bi-LSTM模型,该模型实体识别的精度通常高达80%。

    六、概率图模型概念

    具体细节可以查看原作者的第七节:概率图模型概念

    七、运用Bi-LSTM和CRF实现命名实体识别

    BiLSTM+softmax
    lstm也可以做序列标注问题。如下图所示:
    在这里插入图片描述
    双向lstm后接一个softmax层,输出各个label的概率。那为何还要加一个crf层呢?
    我的理解是softmax层的输出是相互独立的,即虽然BiLSTM学习到了上下文的信息,但是输出相互之间并没有影响,它只是在每一步挑选一个最大概率值的label输出。这样就会导致如B-person后再接一个B-person的问题。而crf中有转移特征,即它会考虑输出label之间的顺序性,所以考虑用crf去做BiLSTM的输出层。

    BiLSTM+crf的基本思想
    BiLSTM+crf的结构如图所示:
    在这里插入图片描述

    7.1 数据获取与处理

    数据集可以采用自定义标注的数据,但这一类数据往往会存在很多缺陷,因此,在实验中通常使用公开训练集。
      常用的公开训练集有ACE04,ACE05,可以用来完成词性标注(命名实体识别便属于一种词性标注问题)。训练集中包含成千上万个完整的句子,主要以英文句子为主。对于词性标注问题,还将对于一个标注序列。数据通常是以JSON格式保存,在读取数据时需要进行JSON解析。
      获取数据后,该数据不能直接作为计算机的输入,需要转化为词向量。词向量可以用自己的语料库使用神经网络(CBOW或Skip-Gram模型)进行训练。实验常用谷歌训练好的词向量,其包含了上千万个语料库,相比自己训练的更加完善。
      下面以一句话“马云在杭州创办了阿里巴巴”为例,分析Bi-LSTM+CRF实现命名实体识别的训练与预测过程。实体给定范围的JSON表示为:
    {
      ‘o’:0,
      ‘B-PER’:1,
      ‘I-PER’:2,
      ‘B-LOC’:3,
      ‘I-LOC’:4,
      ‘B-ORG’:5,
      ‘I-ORG’:6
    }
    该句子每个字对于的语料库(假设共3000字)中的编号假设为:
    {
      ‘马’ : 1683,
      ‘云’ : 2633,
      ‘在’ : 2706,
      ‘杭’ : 941,
      ‘州’ : 2830,
      ‘创’ : 550,
      ‘办’ : 236,
      ‘了’ : 1436,
      ‘阿’ : 1,
      ‘里’ : 1557,
      ‘巴’ : 213,
    }
    因此该句子的one-hot向量应该为:{1683,2633,2706,941,2830,550,236,1436,1,1557,213}。其次将该one-hot向量与词嵌入矩阵word embeddings相乘,得到该句子每个字对于的词向量,因此该句子将得到一个句子向量,用 x xx 表示,假设word embedding对每个词的维度为300(通常实验都设定为300),则 x xx 的长度也为300。
      Ps:通常在训练数据集时,假设一个数据集中有1000个句子,通常采用的是mini-batch法进行训练,即将1000个句子分为若干组(假设分为10组),则每组将平均随机分到batch_size个句子(即每组100个句子),其次将这一组内的句子进行合并。因为每个句子长度不一致,所以取最长的句子为矩阵的列数,其他句子多余的部分则填充0。

    7.2 LSTM单元编码

    获取该句子的向量后,便将其放入LSTM的的输入层(论文中也多称为input layer或者embedding layer),每个输入神经元对应一个字的词向量,正向传播则从第一个字“马”开始,随着时间推移一直到“巴”。
      每个时刻 t对于的字 x t x_t xt 通过前向传播和后向传播并拼接得到 h t h_t ht ,其次得到 y ^ t \hat y_t y^t ,该值即为当前时刻 t tt 对应的7个标签中每个标签预测的概率。例如对于“马”字, y ^ t \hat y_t y^t=[0.031,0.305,0.219,0.015,0.129,0.133,0.168] ,最大的值为0.305,对应于下标1,即标签“B-PER”。

    7.3 CRF解码

    在CRF中要解决的问题之一是解码问题,对于 y ^ t \hat y_t y^t的结果不一定完全符合输出规则,因此需要将其按照输出规则进行解码。输出规则则体现在CRF中的超参数和参数。例如对于 t=5 t=5t=5 时刻,字为“州”,对应的 y ^ t \hat y_t y^t=[0.085,0.113,0.153,0.220,0.207,0.108,0.114] ,可知最大的值对应下标表示的标签为“B-LOC”,虽然成功的预测了其属于地区这一类实体,但很显然应该是“I-LOC”。因此将该输出概率向量做下列计算:
    在这里插入图片描述
    然后对其他词按照该式子进行计算,通过维特比算法求出最大值,即对应的序列中,“州”字的概率向量可能变为: y ^ t \hat y_t y^t=[0.085,0.113,0.153,0.207,0.220,0.108,0.114] 。
      应用Bi-LSTM和CRF模型的命名实体识别在论文《Bidirectional LSTM-CRF Models for Sequence Tagging》中被提出,可参考该论文,点击一键下载

    八、基于文本的卷积神经网络(Text-CNN)的关系抽取

    8.1 Text-CNN的结构

    原理:https://blog.csdn.net/Sakura55/article/details/86488691

    8.2 Text-CNN应用于关系抽取

    在这里插入图片描述

    九、基于依存关系模型的关系抽取

            ~~~~~~~        卷积神经网络可以很好的对实体与实体关系进行分类,而在自然语言处理中,通常会对句子进行句法分析,通过不同语言的语法规则建立起模型——依存关系。基于依存关系的关系抽取是该模型的一个应用方向,其主要是通过句法分析实现,而不是通过深度模型自动挖掘。本文虽然主要是以深度学习角度分析,但传统的“浅层态”模型也需要了解,以方便将其与深度模型进行整合。

    9.1依存句法分析

            ~~~~~~~        基于依存关系模型的关系抽取也叫做开放式实体关系抽取,解决关系抽取的思路是对一个句子的词性进行预处理,例如对于一句话“马云在杭州创办了阿里巴巴”。不同于之前所讲的深度模型,词性分析则是对该句话中每一个进行预先标注,例如“马云”、“杭州”和“阿里巴巴”被标记为名词,“在”和“了”被标记为介词,“创办”被标记为动词。所谓的依存关系则体现在不同词性的词之间存在着依存关系路径。“在”通常后面跟着地名,也就是名词,“创办”动词前通常为名词,而“在…创办了”便是一个依存关系。因此依存关系即为不同词性的词之间的关系结构,下标列出了关于中文的依存标注:
    在这里插入图片描述
    例如对于一句话“国务院总理李克强调研上海外高桥时提出,支持上海积极探索新机制。”,句子开头设置一个“ROOT”作为开始,句子结束则为句号“。”,依存关系可以表示为下图:
    在这里插入图片描述
             ~~~~~~~~         在传统的实体识别中,是通过基于规则的词性分析实现的,最简单的是正则表达式匹配,其次是使用NLP词性标注工具。通常认为名词是实体,因此实体可以通过词性标注实现抽取。因为词性对每一个词进行了标注,自然根据语法规则可以构建起上图所示的依存关系。每一个词根据语法规则构建起一条关系路径。所有路径的最终起始点即为句子的核心(HED)。
             ~~~~~~~~         例如对上述的例句进行分析,“国务院总理李克强”包含三个名词,根据上表可查名词的组合为定中关系,前一个名词作为定于修饰后一个名词,因此“国务院总理李克强”的核心名词因为“李克强”,而“国务院”和“总理”是修饰“李克强”的,因此这三个词生成了依存路径类型被标注为ATT。同理“上海外高桥”也存在ATT类型的依存路径。“时”作为状态词,在动词前做时间状语,因此“调研…时”是“提出”的时间状语,虽然“上海外高桥”是名词,但其存在状语结构中,不可能是状语后面动词的主语,因此可以根据路径看出“提出”的主语不是“上海外高桥”,而是状语前的名词“国务院总理李克强”的核心词“李克强”。对于后半句“支持上海积极探索新机制”,可知“新”和“机制”是ATT关系,因此核心词为“机制”,其前面的动词“探索”则与“机制”组成动宾结构VOB,“积极”作为副词是修饰动词“探索”,则“支持上海积极探索新机制”可简化为“支持上海探索机制”,构成“动词+名词+动词+名词”结构,因此机制是后半句的核心词,“上海”只是间接宾语。经过分析,整句话则表达的含义是“李克强提出支持探索新机制”,类似于语文里的缩句。

    9.2 依存句法分析实现关系抽取

             ~~~~~~~~         对于关系抽取问题,基于依存关系的关系抽取模型中,关系词并非是预先设置的类别,而是存在于当前的句子中。例如“马云在杭州创办了阿里巴巴”,预定义的关系可能是“创始人”,而“创始人”一词在句子中不存在,但是句中存在一个与其相似的词“创办”。因此在句法分析中,能够提取出核心词“创办”,该词前面有一个名词“杭州”,而“杭州”前面有一个介词“在”,因此“在杭州”是一个介宾短语,依存路径被标记为POB,所以“杭州”不是“创办”的主语,自然是“马云”。“创办”一词后面是助词“了”可以省略,再往后则是名称“阿里巴巴”,因此“创办阿里巴巴”为动宾关系VOB,与上面的“探索机制”一样。因此可分析得到语义为“马云创办阿里巴巴”,核心词“创办”即为关系,“马云”和阿里巴巴则是两个实体。
      因此基于依存关系的关系抽取算法步骤如下:
      (1)获取句子 x xx;
      (2)对句子 x xx 进行词性标注;
      (3)构建依存关系路径,并依据依存标注表对路径进行标注;
      (4)提取核心词;
      (5)构建起动宾结构,以核心词为关系寻找主语和宾语作为两个实体。

             ~~~~~~~~         可以发现,基于依存关系不仅可以抽取关系,也可以提取出其对应的实体。因此包括基于深度学习模型在内,一种端到端的联合实体识别与关系抽取被提出。

    展开全文
  • 来自:复旦DISC引言命名实体识别关系抽取都属于信息抽取方向,二者都是自然语言处理中非常重要的任务。早期的信息抽取将实体识别和关系抽取看作串联的任务,但这样存在误差累积、关系重叠等一系列问题。近年来,有...

    每天给你送来NLP技术干货!


    来自:复旦DISC

    062f920b1e7c4ba5e679bc81ff4629d4.gif

    引言

    4225b9904c8b32e524646354fd551bcc.gif

    命名实体识别和关系抽取都属于信息抽取方向,二者都是自然语言处理中非常重要的任务。早期的信息抽取将实体识别和关系抽取看作串联的任务,但这样存在误差累积、关系重叠等一系列问题。近年来,有许多将实体识别和关系抽取任务进行联合建模的研究。

    本次Fudan DISC实验室将分享AAAI2022中的两篇和EMNLP2021中的一篇关于命名实体识别与关系抽取的论文,介绍实体关系联合抽取相关技术,以及一种将命名实体识别建模为关系分类的方法。

    2f6c671355ff7f81110de2f6197ee0bc.gif

    文章概览

    80b6215256ac494120c02c0c3ea4c1bd.gif


    1. OneRel: 单模块单步的实体关系联合提取(OneRel: Joint Entityand Relation Extraction with One Module in One Step)

    该篇文章提出了一种新的视角,将联合提取任务转化为细粒度的三元组分类问题,并提出了一种新的联合提取模型。

    论文地址:https://arxiv.org/abs/2203.05412

    2. TDEER:一种联合提取实体和关系的高效解码方案(TDEER: An Efficient Translating Decoding Schema for Joint Extractionof Entities and Relations)

    本文提出了一种新的从非结构化文本中联合提取实体和关系的翻译解码方案,从而能够有效、高效地处理重叠三元组问题。

    论文地址:https://aclanthology.org/2021.emnlp-main.635

    3. 将词-词关系分类用作统一命名实体识别(Unified Named Entity Recognition as Word-Word RelationClassification)

    该篇文章将统一命名实体识别建模为词-词关系分类,通过有效地建模实体词与下一个相邻词和尾部词关系之间的相邻关系,解决了统一命名实体识别的核心瓶颈问题。

    论文地址:https://arxiv.org/abs/2112.10070

    108e8e36549aa1bc3bcbc0a9e8675131.gif

    论文细节

    b21fe51dd959873371778b1ee9de11e8.gif

    1

    e2d34cf68ae8a972b04fe130782f4e77.png

    论文动机

    现有的实体关系联合提取方法通常将任务分解为几个基本模块或处理步骤,从而使其易于执行。但是这些方法忽略了一个事实,即提取出的三元组中的头实体、关系实体和尾实体是相互依存和不可分割的。因此,以往的方法存在错误级联和信息冗余的问题。为了解决这些问题,在本文中,作者提出了一种新的联合实体和关系提取模型,名为OneRel,它将联合提取转换为一个细粒度的三元组分类问题,是一种单模块、单步解码的实体关系联合抽取方法,能直接识别三元组、更好捕获三元组之间的相互依赖。

    背景介绍

    现有的联合提取方法大致可以分为两类,而作者提出了不同于这两类的新方法:

    第一类是多模块多步法,利用不同的模块和相关的处理步骤依次提取实体和关系,即先识别一个句子中的所有实体,然后对每个实体进行关系分类;或先检测句子表达的关系,然后预测头实体和尾实体;或先区分所有头实体,然后通过序列标记或问答推断对应的关系和尾实体。但这类方法存在错误级联问题。

    第二类是多模块单步法,先并行提取实体和关系,然后将它们组合成三元组。由于在单独的识别过程中,实体和关系之间没有足够的相互约束,这种多模块单步法不能完全捕获被预测实体和关系之间的依赖关系,导致在三元组构造过程中存在信息冗余。

    与上述两种方法不同,本文提出将联合抽取问题看作一个细粒度的三元组分类问题,能够用单模块单步的方式从句子中提取三元组。

    fdb083cacda00579408ccd50436def19.png

    方法

    本文提出了一种新的标记策略——Rel-Spec Horns标记策略,并提供了一个基于评分的分类器。

    Rel-Spec Horns标记策略

    本文中的方法分为标签和解码两个阶段。在标签阶段,对于一个句子,作者设计了一个分类器来为所有可能的三元组分配标签,并维护一个三维矩阵来存储分类结果;而解码阶段的任务是从这个矩阵中解码实体和关系。

    在标签阶段,本文使用“BIE”(Begin, Inside,End)符号来表示一个token在实体中的位置信息。例如,“HB”表示头实体的开始token,“TE”表示尾实体的结束token。在标签策略中使用了四种类型的标签:(1)HB-TB。这个标签指的是两个位置分别是一个特定关系条件下的一对头和尾的开始标记。(2) HB-TE。这个标记意味着与行相对应的标记是头实体的开始,与列相对应的标记是尾实体的结束。(3)HE-TE这个标签与“HB-TB”具有类似的逻辑,这意味着两个位置分别是基于特定关系的成对头实体和尾实体的结束标记。(4)“-”。除上述三种情况外,所有单元格将被标记为“-”。

    从下图中的(b)和(c)可以看到,因为只需要标记矩形的三个角,所以此方法被命名为Rel-Spec Horns标记。

    0941894f4b1bcd3b5c53113940592623.png

    显然,标记的矩阵是稀疏的,其具有以下优点:首先,使用3个特殊标记而不是9个特殊标记,可以在进行分类时有效地缩小潜在的搜索空间;其次,稀疏矩阵使训练过程中有足够的负样本;最后,矩阵的稀疏性保证了三元解码的简单性和效率。

    此外,这种Rel-Spec Horns标记可以自然地处理实体对重叠的复杂场景,它将根据实体对之间的关系在不同的子矩阵中标记实体对。例如在上图(a)和(b)中,(New York City, located in, New York State)和(New York State, Contains, New York City)是两个三元组,因此,这两个实体对分别被标记为Located in和Contains。对于最复杂的HeadTailOverlap (HTO)情形,例如图(c)中三元组(New York City, Cityname, New York)中实体对位于对角线附近,所以仍然可以很容易地解码。

    解码

    标记矩阵标记了成对头实体和尾实体的边界以及它们之间的关系。因此,从矩阵解码三元组变得很简单。对于每个关系,从“HB-TE”拼接到“HE-TE”得到头实体;从“HB-TB”拼接到“HB-TE”得到尾实体;两对实体共享相同的“HB-TE”。

    基于分数的分类器

    对于一个输入句子,首先用预训练的BERT得到它的embedding,然后枚举所有可能的三元组,设置分类器来分配置信度较高的标签。作者受知识图嵌入技术的启发,借鉴了HOLE的理念,其得分函数为:

    ebc7969522249d8d16082c8e8e8a932b.png

    其中h、t分别表示头和尾。☆表示循环关联,用于挖掘两个实体之间的潜在相关性,本文中它被定义为非线性拼接投影的算子:

    2544b54ed664317e6f0a108790323c4e.png

    其中W和b是可训练的权重和偏差,43288edfd4e5db236042bc53ad607aad.png是ReLU激活函数。接下来,作者使用所有关系的表示R来同时计算所有可能的三元组的显著性,所以最终的得分函数定义为:

    b9b307de40f833b86791946330180555.png

    最后,将得分向量输入softmax函数来预测相应的标签:

    217128620a5ab1bbe3d6600841e20fe2.png

    OneRel的目标函数定义为

    98917d67dbe4ba7a4ea34dc513915b19.png

    其中g指gold tag。

    实验

    作者在NYT和WebNLG这两个数据集上评估了模型,取得了如下结果。可以观察到,本文中的方法OneRel优于所有10个baseline,并在所有数据集上达到了最高的F1得分。

    b0e106ad6ee521220aff5fd38375f6f8.png

    2

    c7585a59035cd6e7141bd832c4de8edb.png

    论文动机

    常用的从非结构化文本中联合提取实体和关系以组成三元组的方法是通过预测实体对来解码三元组,得到对应的关系。然而,如何更有效地处理这一任务仍然面临许多挑战,特别是对于重叠的三元组问题。为了解决这一问题,本文提出了一种新的高效的实体和关系提取模型TDEER,即Translating Decoding Schema for Joint Extraction of Entities andRelations,这种框架通过做翻译解码从而共同提取实体和关系来处理重叠的三元组问题。具体来说,TDEER将关系解释为一种从主语实体到宾语实体的转换操作,即“主语+关系→宾语”的三元组解码,这种解码方案能有效地解决重叠三元组问题。此外,本文还提出了一种负样本策略来检测和减少错误在不同阶段的传播,这种策略可以使TDEER减轻错误积累,从而获得更好的结果。

    方法

    本文提出了一个三阶段模型——TDEER,模型如下图。

    cc7244665d836252cf4c43f4e72c35b8.png

    在第一阶段,TDEER使用基于跨域的实体标记模型来提取所有的主语和宾语。

    在第二阶段,TDEER采用多标签分类策略来检测所有相关关系。

    在第三阶段,TDEER通过所提出的翻译解码模式迭代主语和关系对,以识别各自的宾语。

    下面是模型的各部分细节。

    输入层

    将一个句子填充后,通过预训练的BERT来从输入文本提取特征映射。

    实体标签模型

    为了有效地获取实体及其位置,本文采用了基于跨度的标签模型。作者使用两个二元分类器分别预测实体的起始位置和结束位置。语句中每个token的操作如下:

    78e9ccb54746786fb62d01bb4f81cc1e.png

    其中369f6dae506d7d9431877a767ca015c6.pngb5683db774b2cb4bfdeef1616efb6b45.png分别表示识别输入序列中第i个标记为实体的起始位置和结束位置的概率。σ(·)为sigmoid激活函数。

    通过最小化以下损失函数来训练实体标签模型:

    99e902a546d7db31d8946f56f5775c08.png

    e19b7a2ba3e31edb474bea78d290c119.png

    关系探测器

    为了识别句子中的相关关系,作者采用了一种多标签分类策略。对于基于BERT / LSTM的模型,将“[CLS]”令牌/最后输出(LO)表示作为一个关系检测空间,用于多标签分类,如下所示:

    2dbf35f1c4197a65d50cae263ff6f37e.png

    关系检测器通过最小化二元交叉熵损失函数来检测关系。

    翻译解码模式

    作者对检测到的主语和关系进行迭代,以预测宾语的起始位置。对于每一个主语和关系对,先将它们的表示结合起来,然后使用注意力机制来获得一个选择性的表示,这会为宾语可能的位置分配更高的权重。最后,将选择性表示传递给一个全连接层来获得输出,也就是宾语的位置。

    负样本策略

    大多数由多个部分组成的实体和关系提取模型存在误差积累问题。由于各部分之间存在依赖关系,来自上游的错误将传播到下游。在TDEER中,翻译解码器依赖于实体标记和关系检测器,因此检测器可能从上游接收错误实体或关系。所以,作者引入了一种负样本策略来检测和减轻来自上游的误差。

    在训练阶段,将正确的主语/关系替换为其他不恰当的主语/关系,从而产生不正确的三元组作为负样本。该策略使TDEER能够在解码阶段处理主语和关系的噪声输入。

    联合训练

    作者联合训练基于跨度的实体标签模型、关系检测器和翻译解码器。联合损失函数定义如下:

    87efdb788a8a1ea6886043c171dfe302.png

    其中α, β和λ是常数,在本文的实验中分别设置为1.0、1.0和5.0。

    实验

    作者在NYT、WebNLG、NYT11-HRL这三个数据集上验证了模型提取重叠三元组和普通三元组的能力,在所有数据集上都取得了优于baseline模型的结果。

    db967ad83fc1bcf5b27a0b56cefbcf16.png

    此外,作者还进行了消融实验来探索负样本策略、关系探测器和注意力机制的效果。

    3

    bb769ccfdd7a0f190c07c47ed4d9fa1a.png

    动机

    到目前为止,命名实体识别(NER)主要涉及三种类型,包括扁平、重叠(又称嵌套)和不连续的NER,这些类型大多是单独研究的。而用一个模型同时处理上述三个工作的方法主要包括基于跨度的模型和序列到序列的模型,但前者只关注边界识别,而后者可能会受到曝光偏差的影响。本文提出了一种新的替代方法——,将统一NER建模为词-词关系分类。该方法通过有效地建模实体词与下一个相邻词(NNW)和尾部词-\*(THW-\*)关系之间的相邻关系,解决了统一NER的核心瓶颈。

    概念介绍

    先介绍NNW和THW-*这两个概念:

    • NNW(next-neighbor-word)即实体中的下一个相邻词。

    • THW-*(tail-head-word-*)即头尾词,是指实体的头尾产生的联系,实体的类型为*。

    方法

    现有的大部分实体识别工作主要集中在如何准确识别实体边界。然而,在仔细反思这三种NER任务的共同特征后,作者发现统一NER任务的瓶颈更多地在于对实体词之间的相邻关系的建模。这种邻接关系本质上描述了部分文本段之间的语义连通性,尤其对重叠和不连续文本段起着关键作用。如下图,可以毫不费力地检测到扁平的实体“aching in legs”,因为它的组成词都是自然相邻的。但是,为了检测出“achingin shoulders”这一不连续实体,有效地捕捉“aching in”与“shoulders”这两个相邻段之间的语义关系是必不可少的。

    60604b159038e2292bee8f9c737bba62.png

    所以,本文研究了一种使用词-词关系分类的统一NER形式,即。该方法通过有效地建模实体边界识别和实体词之间的相邻关系,解决了统一NER问题。具体来说,预测了上述两种类型的关系——NNW和THW-*。NNW关系用于实体词识别,表明两个参数词在一个实体中是否相邻(如aching→in); THW-*关系用于实体边界和类型检测,表明两个参数词是否分别是“*”实体的尾部和头部边界(如legs→aching, Symptom)。这样就构造出了一种把统一命名实体识别任务作为词-词关系分类任务的方法,这种方法充分考虑了实体的边界词和内部词之间的关系。

    101cb471091a3be650a19549c9308a07.png基础上,作者进一步提出了统一NER的神经网络。通过BERT和BiLSTM提供上下文相关的单词表示,基于此再构建一个二维的单词对网格,然后,作者设计了多粒度的二维卷积来细化词对的表示,从而能同时有效的捕获到近距离和远距离的词对。最后用一个预测器对词-词关系进行预测,并得到所有可能的实体。

    模型结构

    本文框架的体系结构主要由下图中的三个部分组成。首先是广泛使用的预训练语言模型BERT和双向LSTM作为编码器,从输入句子生成上下文相关的单词表示;然后利用卷积层构建和细化词对网格的表示,为以后的词-词关系分类提供依据;最后,使用一个包含双仿射分类器和多层感知机的协同预测层来联合推理所有词对之间的关系。

    4a3c88d39dd385b1bea35ebd1f51c1df.png

    编码器层

    本文在模型的输入部分使用BERT。给定一个输入语句,将每个标记或单词转换成单词块,然后将它们输入到一个预训练BERT模块中。在BERT计算之后,每个句子的词可能包含多个片段的向量表示。在这里,作者使用max pooling来生成基于词块的词表示。为了进一步增强上下文建模,再采用双向LSTM生成最终的词表示。

    卷积层

    作者使用卷积神经网络作为表示的细化器,因为CNN非常适合用于网格上的二维卷积,而且在处理关系分类方面也表现得不错。本文的卷积层包括三个模块:用于生成词对网格表征的归一化条件层、用于丰富词对网格表征的BERT风格的网格建立模块、用于捕捉近的词与远的词之间相互作用的多粒度扩张卷积。

    协同预测层

    通过卷积层得到词对网格表示之后,用一个MLP来预测每对词之间的关系。然而之前的工作表明,在关系分类任务中,MLP预测器可以通过与双仿射预测器合作来增强。因此,我们同时取这两个预测因子来计算词对的两个独立关系分布,并把它们组合起来作为最终的预测。

    解码层

    本文的模型预测的是词和它们之间的关系,这可以被看作是一个有方向的词图。所以解码的目标是利用NNW关系,从词图中找到从一个词到另一个词的路径。每一条路径对应一个实体,下图演示了由易到难的四种解码的情况。

    在例子(a)中,两条路径“A→B”和“D→E”对应扁平实体,THW关系表示它们的边界和类型。

    在例子(b)中,如果没有THW关系,则只能找到一条路径,因此“BC”就丢失了。相比之下,在THW关系的帮助下,很容易识别出“BC”嵌套在“ABC”中,这说明了THW关系的必要性。

    例子(c)展示了如何识别不连续的实体。有两条路径“A→B→C”和“A→B→D”,NNW关系有助于连接不连续的跨度“AB”和“D”。

    最后考虑一个复杂且罕见的情况(d),在这种情况下可以仅使用NNW关系找到4条路径,相对的,仅使用THW关系只能识别出连续实体(如“ABCD”),而不能正确识别不连续实体(如“ACD”)。因此,我们可以通过协作使用这两种关系来获得正确的答案。

    学习

    对于每个句子,我们的训练目标是最小化对应gold label的负对数似然损失:

    041bf8f5a7663b50bb3499d53196775b.png

    其中N是句子中的单词数,e4fa027a4dfd73d31bd482a4fcdc8658.png是表示单词对关系的gold label的向量,e45c1a7f8f7ef73ec9c73c840e825d63.png为预测概率向量,r表示预定义关系集R的第r个关系。

    实验

    本文在14个数据集上进行了实验,包括CoNLL-2003、ACE 2004、ShARe13等,并在这14个数据集上都达到了SoTA表现。另外,通过在CoNLL2003、ACE2005和CADEC数据集上进行消融实验,作者证明了本文提出的几个模块的有效性。

    供稿丨戴鼎璋 编辑丨林恒旭 责编丨李秉轩

    供稿人:戴鼎璋丨研究生1年级丨研究方向:知识建模丨邮箱:21210980029@m.fudan.edu.cn

    最近文章

    EMNLP 2022 和 COLING 2022,投哪个会议比较好?

    一种全新易用的基于Word-Word关系的NER统一模型,刷新了14种数据集并达到新SoTA

    阿里+北大 | 在梯度上做简单mask竟有如此的神奇效果


    下载一:中文版!学习TensorFlow、PyTorch、机器学习、深度学习和数据结构五件套!  后台回复【五件套】
    下载二:南大模式识别PPT  后台回复【南大模式识别】

    投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。

    方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

    71877200924e10ef8375acc804deb9e0.png

    记得备注呦

    整理不易,还望给个在看!
    展开全文
  • NLP命名实体识别关系抽取

    千次阅读 2021-04-18 16:42:30
    关系抽取中的几个文件 initial文件 reading word embedding data 处理词向量 vec.txt是预训练词嵌入文件。 此文件是从《纽约时报注释语料库》(LDC数据LDC2008T19)中学习的。 从纽约时报注释语料库中获取。 实体...

    最近一直在做相关的研究。
    但是输出太少,我也不知道自己到底懂了没懂。
    以后将每日学习记录输出到博客自己看。
    剩下一个月好好加油(之前都实习去了,乱七八糟)
    关系抽取中的几个文件
    initial文件
    reading word embedding data
    处理词向量
    vec.txt预览
    vec.txt是预训练词嵌入文件。
    此文件是从《纽约时报注释语料库》(LDC数据LDC2008T19)中学习的。
    纽约时报注释语料库中获取。

    实体嵌入是随机初始化的。
    实体嵌入中的实体数应与train.txt中的实体数相同。
    原data目录中含五个文件
    train.txt:训练文件,格式
    (fb_mid_e1,fb_mid_e2,e1_name,e2_name,关系,句子)。

    {
    "text": "Not many people have cooler family closets to raid than Theodora Richards , the daughter of the Rolling Stones guitarist Keith Richards and the 70 's supermodel Patti Hansen .",
    "relation": "/people/person/children", 
    "h": {"id": "/guid/9202a8c04000641f8000000000dad102", 
    "name": "Patti Hansen",
    "pos": [161, 173]},
    "t": {"id": "/guid/9202a8c04000641f8000000000d4eb59",
    "name": "Theodora Richards", 
    "pos": [56, 73]}}
    

    test.txt:测试文件,格式与train.txt相同。
    Relation2id.txt:所有关系和对应的ID,每行一个。
    relation2id

    vec.txt:预训练词嵌入文件。
    entity_ebd.npy:实体嵌入文件。

    在这里插入图片描述

    在这里插入图片描述
    CRF层,用于学习到标签的约束条件。
    参考
    https://www.bilibili.com/video/BV1BK4y1C7Hj?from=search&seid=16670832614159685369

    展开全文
  • ace2005 命名实体识别 关系抽取
  • 中文命名实体识别,实体抽取,tensorflow,pytorch,BiLSTM+CRF data文件夹中有三个开源数据集可供使用,玻森数据 (https://bosonnlp.com) 、1998年人民日报标注数据、MSRA微软亚洲研究院开源数据。其中boson数据集...
  • 关于在智能医疗领域电子病历信息抽取的很好的一篇综述论文,推荐阅读。
  • Agricultural Knowledge Graph 由于工作原因,该项目已停止维护。因此项目代码仅供参考,项目中包含的数据可免费用于学术...华东师范大学数据科学工程学院(以下简称华师大数据学院)作为课题主要参与单位以实现智慧
  • Python NLTK学习11(命名实体识别关系抽取)发表于:2017年7月27日阅读:18262除特别注明外,本站所有文章均为小杰Code原创本系列博客为学习《用Python进行自然语言处理》一书的学习笔记。命名实体识别命名实体识别...
  • 人工智能-项目实践-实体识别-基于tensorflow深度学习的中文的命名实体识别 一个中文的实体命名识别系统 当前版本基于双向循环神经网络(BiRNN) + 条件随机场(CRF)来完成实体的标注。 基本思路是利用深度神经...
  • 电子病历 (Electronic medical records, EMR) 产生于临床治疗过程, 其中命名实体和实体关系反映了患者健康状况, 包含了大量患者健康状况密切相关的医疗知识, 因而对它们的识别抽取是信息抽取研究在医疗领域的...
  • 农业知识图谱:农业领域的命名实体识别,实体解析,关系抽取,数据挖掘
  • 从非结构化文本中自动抽取三元组知识并构建知识图谱需要用到的核心技术就是命名实体识别关系抽取,现在已经有了很多相关的具体算法和模型,对于这些大家可以看顶会论文和技术分享,我们主要来介绍几个专门面向中文...
  • 之前学习这个领域时网上找的几篇讲实现比较详细的论文(国内的),应该不算侵权吧…… ...中文命名实体识别及其关系抽取研究 (其中一个可能需要CAJViewer打开,传送门http://www.cnki.net/software/xzydq.htm)
  • 实体识别与关系抽取

    千次阅读 2019-03-20 23:55:01
    实体识别的主要难点在于(1)命名形式多变(2)命名实体的语言环境复杂。 实体识别的方法: 基于规则的识别方法 特点:准确率高,接近人类的思考方式,但成本昂贵规则的制定主要依赖领域专家。 A,基于机器学习的...
  • 农业知识图谱(AgriKG):农业领域的信息检索,命名实体识别关系抽取,智能问答,辅助决策
  • 实体识别关系抽取的联合模型总结

    万次阅读 多人点赞 2019-02-27 17:15:25
    实体识别关系抽取的目标是从非结构化的文本中发现(实体1、关系、实体2)的三元组,它对知识库的构建和问答任务都很重要,是信息抽取的核心问题。 现有的关系抽取方法主要有两种: 1.使用流水线方法进行抽取:先...
  • 命名实体识别(NER)是自然语言处理中的一项基础任务,其性能的优劣极大地影响着关系抽取、语义角色标注等后续任务。传统的统计模型特征设计难度大、领域适应性差,一些神经网络模型则忽略了词本身所具有的形态学信息。...
  • 基于BERT的中文数据集下的命名实体识别(NER) 基于tensorflow官方代码修改。 环境 Tensorflow:1.13 的Python:3.6 tensorflow2.0会报错。 搜狐比赛 在搜狐这个文本比赛中写了一个基准,使用了bert以及bert + ...
  • 信息抽取有两部分:命名实体识别(目标是识别和分类真实世界里的知名实体)和关系提取(目标是提取实体之间的语义关系)。概率模型/分类器可以帮助实现这些任务。 信息抽取的定义为:从自然语言文本中抽取指定类型...
  • 基于几个可用的NER和RE数据集定义了7个实体标签和9个关系标签。实体(Entity):每个实体都由带有多个属性的T标签标识。关系(Relation):每个关系由R标签标识,该标签可以具有多个属性。
  • 一,实体抽取:也就是命名实体识别,包括实体的检测(find)和分类(classify),比如识别人名、地名等; 二,关系抽取:是指自动识别实体之间具有的某种语义关系,根据参与实体的多少可以分为二元关系抽 取(两个...
  • 实体识别关系抽取的联合模型

    千次阅读 2020-12-04 15:42:18
    可以预测多个头,头和关系的决策是一块完成的,而不是先预测头,再用关系分类器预测关系 标签策略: CRF层的输出是采用BIO标注策略的实体识别结果,head Relations层只有在和其他实体有关系时 会给出对应实体的尾单词...
  • python命名实体识别demo

    2019-01-04 15:40:50
    python命名实体识别的demo以及训练字典,采用4-tag形式,准确率80以上
  • Python ark-nlp文本分类,命名实体识别关系抽取,文本匹配,预训练模型,机器学习,深度学习,ERNIE,NEZHA
  • 人工阅读整理此类文本显得效率低下,因此,针对航天文本研究信息抽取技术实现信息自动抽取变得十分有价值,而命名实体识别技术又是自动信息抽取的基础,建立一种航天命名实体识别的高效方法具有很重要的现实意义。...
  • 目录提供的功能有:中文分词词性标注命名实体识别知识图谱关系抽取关键词提取文字摘要新词发现情感分析文本聚类等等。。。。安装方式点安装pip install -U jiagu如果比较慢,可以使用清华的pip源: pip install -U ...
  • 人工智能-项目实践-事件抽取-基于法律裁判文书的事件抽取及其应用,包括数据的分词、词性标注、命名实体识别、事件要素抽取和判决结果预测等内容 针对交通肇事案件的裁判文书进行事件要素抽取,并在此基础上加入...
  • 其存放了我们主要的三个模型,针对整句的关系识别模型,针对已知句中关系命名实体 识别模型,还有将前两者整合起来的推理验证模型。 2、lit_models 模块 其中的代码主要继承⾃pytorch_lightning.Trainer。其可以⾃...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,732
精华内容 4,292
热门标签
关键字:

命名实体识别与关系抽取