社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

浅析深度学习在实体识别和关系抽取中应用

古柳_Deserts_X • 5 年前 • 388 次点击  

1、命名实体识别

命名实体识别(Named Entity Recognition,NER)就是从一段自然语言文本中找出相关实体,并标注出其位置以及类型,如下图。命名实体识别是NLP领域中的一些复杂任务的基础问题,诸如自动问答,关系抽取,信息检索等 ,其效果直接影响后续处理的效果,因此是NLP研究的一个基础问题。

NER一直是NLP领域中的研究热点,现在越来越多的被应用于专业的领域,如医疗、生物等。这类行业往往具有大量的专业名词,名词与名词之间相互之间存在着不同种类的关系。NER的研究从一开始的基于词典和规则的方法,基于统计机器学习的方法,到近年来基于深度学习的方法,NER研究的进展趋势如下图所示。

基于统计机器学习的方法主要包括:隐马尔可夫模型(HiddenMarkovModel HMM)、最大熵(MaxmiumEntropy,ME)、支持向量机(Support VectorMachine,SVM)、条件随机场( Conditional Random Fields,CRF)等。

隐马尔可夫模型(HMM)主要利用Viterbi算法求解命名实体类别序列,在训练和识别时的效率较高且速度较快。隐马尔可夫模型适用于一些对实时性有要求以及像信息检索这样需要处理大量文本的应用,如短文本命名实体识别。

最大熵模型(ME)结构紧凑,具有较好的通用性,缺点是训练时间复杂性高,有时甚至训练代价难以承受,由于需要明确的归一化计算,导致计算开销比较大。

传统的公认比较好的处理算法是条件随机场(Conditional Random Field,CRF),它给定一组输入随机变量条件下另一组输出随机变量的条件概率分布模型,其特点是假设输出随机变量构成马尔可夫随机场,它是一种判别式概率模型,是随机场的一种。CRF常用于标注或分析序列资料,如自然语言文字或是生物序列,在NER中的基本应用是给定一系列的特征去预测每个词的标签。

上图中,X我们可以看做成一句话的每个单词对应的特征,Y可以看做成单词对应的标签。这里的标签就是对应场景下的人名、地名等等。

CRF优点:立足于局部最优解,在已给出z的条件下计算可能的序列 y 的概率分布。

近年来随着深度学习的飞速发展,像RNN、LSTM这些模型在NLP任务中得到了广泛的应用,其特点在于具备强大的序列建模能力,它们能够很好地捕捉上下文信息,同时具备神经网络拟合非线性的能力,这些都是比CRF具有优势的地方。LSTM的优点在于获取长时间序列上样本与样本之间的关系,而BiLSTM可以更有效的获取输入语句前后的特征。BiLSTM+CRF已在NLP多数场景中表现出非常良好的效果。例如在分词任务中,对比传统的分词器,BiLSTM能发挥双向获取句子特征这一优势,分词效果更接近人类认知的感觉。

2、关系抽取

在当前NLP研究中,关系抽取(relation extraction)任务被广泛应用于数据简化和构建知识图谱中。给定用户输入的一段自然语言,在正确识别实体的基础上,抽取它们之间的关系就是亟待解决的重要问题。目前解决这个问题的方法分为串联抽取和联合抽取两类。一般传统的串联抽取方法是在实体抽取的基础上进行实体之间关系的识别。在这种方法中,先期实体识别的结果会影响到关系抽取的结果,前后容易产生误差累积。针对这一问题,基于传统机器学习的联合模型(Joint model)被提出并逐步用于对这一类的NLP任务进行联合学习。

联合模型的方法主要基于神经网络的端对端模型同时实现实体抽取和关系抽取,这样做能够更好的将实体和其中的关系信息进行结合。

在论文《Joint Entity and Relation Extraction Based on A Hybrid Neural Network》中,作者提出了混合的神经网络模型来进行命名实体识别(NER)和关系分类(RC)。NER和RC使用同一BiLstm网络对输入进行编码,根据NER预测的结果对实体进行配对,然后将实体之间的文本使用一个CNN网络进行关系分类。

CNN用于关系分类(RC)

通过底层的模型参数共享,在训练时两个任务都会通过后向传播算法来更新共享参数来实现两个子任务之间的依赖。

在论文《A neural joint model for entity and relation extraction from biomedical text》中,作者将联合学习的方法用于生物医学实体识别和关系抽取当中,在关系分类时,输入的语句首先进行依存分析构建起依存句法树,然后将这种树状结构输入到Bilstm+RNN的网络中进行关系分类,如下图:

通过以上的方法可以看出,两个任务的网络通过共享参数的方式联合学习,训练先进行NER,再根据NER的结果进行关系分类。

今年ACL的Outstanding Paper《Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme》提出了一种新的标注策略来进行关系抽取,采用一种jointly的方法把命名实体识别(named entity recognize)和关系抽取(relation extraction)两步结合到一起:通过一种新的标注策略(tagging scheme)把抽取任务转换为标注任务,然后利用深度学习的方法通过一个端到端的模型(end-to-end tagging model)来抽取出最终的结果。新的标注方案示例如下图:

上图中“CP”代表“Country-President”,“CF“代表“Company-Founder”,这样就将原来的两个子任务完全转换为一个序列标注问题,作者使用“BIES”(Begin,Inside,End,Single)进行标注,来表示当前词在整个 entity 中的位置,关系类型则来自于预先设定的关系类型集合。用“1”,“2”来表示entity在关系中的角色信息,其中“1”表示,当前词属于三元组(Entity1,RelationType,Entity2)的 Entity1,同理”2”表示,当前词属于Entity2,根据标注结果将两个相邻顺序实体组合为一个三元组。例如:通过标注标签可知,“United”与“States”组合形成了实体“United States”,实体“United States”与实体“Trump”组合成了三元组 {United States, Country-President,Trump}。

论文作者主要考虑一个词只属于一个三元组的情况,对于三元组重叠问题,即多个三元组都包含同一个词的情况,作者暂时还没有考虑。端到端的模型如下图所示:

模型还是使用 BiLSTM来进行编码,然后使用参数共享中的 LSTM 来进行解码。

这一模型可以用于丰富已有的知识图谱资源,例如现在多样的智能化应用,如:自动问答、智能搜索、个性化推荐等,都需要知识图谱的支撑。

3、总结

参数共享的方法越来越多的被用于基于神经网络的实体识别和关系抽取联合学习中,这种方法在多任务中有着广泛的应用且简单容易实现。如何将这两类任务更好的结合起来进行端到端关系抽取任务是下一步研究的重要趋势,我们期待有更好的方法出现。

【编辑推荐】

  1. 2018年值得关注的10种机器学习工具
  2. 当下,应抓紧探索超越深度学习的其他实现方法
  3. 详解如何用深度学习消除背景,实现抠图
  4. 使用python+机器学习方法进行情感分析(详细步骤)
  5. 别忽视深度学习的种种问题,Gary Marcus 泼冷水义不容辞
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 2

AI推手公众号介绍


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/5C3lNvjbB9
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/25378
 
388 次点击