命名实体识别(NER)详解及小样本下的NER问题解法汇总

Posted fareise

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命名实体识别(NER)详解及小样本下的NER问题解法汇总相关的知识,希望对你有一定的参考价值。

如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号“圆圆的算法笔记”,更多算法笔记和世间万物的学习记录~

本文带你走进命名实体识别(NER)任务,首先介绍了解决NER任务的经典模型结构,然后通过3篇顶会论文介绍当缺少训练样本的时候,如何解决NER任务。

1. 什么是NER任务

NER即命名实体识别任务,主要目的是识别出一个句子中的实体词,以及其对应的实体类型。比如下面的例子中,就是不同场景下的NER任务。在不同场景中,需要识别的实体类型也是不同的。

NER任务的基本解决方法当成一个序列分类任务,一般采用BIO、BIOES等标注预测方法,这里主要介绍BIO标注方法。BIO标注方法,就是给句子中的每一个单词都标注一个标签,这个标签由两部分组成:一部分是该单词所属实体的位置,其中B表示该单词是实体的第一个单词,I表示该单词是实体的中间单词,O表示不是实体;另一部分是该单词对应的实体类型,例如在上面的News类型NER任务中,就需要预测单词属于location还是person。因此,最终每个单词都被标注为BIO+实体类型的形式,这是一个文本序列分类任务。

2. NER任务的一般解法

解决NER问题最经典的深度学习模型结构是百度于2015年的论文Bidirectional LSTM-CRF models for sequence tagging(2015)提出的LSTM-CRF架构。单独的LSTM其实就可以完成序列标注任务,利用LSTM对输入句子进行编码,最后得到每个单词的各个分类结果的打分。但是,只用LSTM的问题是,没有办法学到输出标签之间的依赖关系。例如B-person后面经常跟着的是I-Person这种输出标签的规律,在LSTM中感知较弱。因此,一般会在LSTM后面加一个CRF层。CRF指的是我们有一个隐变量序列和一个观测序列,每个观测值只和该时刻的隐变量以及上一时刻的观测值有关。CRF的目标就是学习隐变量到观测值的发射概率,以及当前观测值和下一个观测值之间的转移概率。LSTM-CRF中,CRF建模了NER标签之间的转移关系,弥补了LSTM在这方面的不足。CRF的核心作用就是建模label之间的依赖关系。LSTM-CRF的整体结构如下图所示。

在LSTM-CRF模型结构的基础上可以使用其他方式进行改进,例如将文本的编码器LSTM替换为Bert,或者将CRF替换成Softmax。例如Portuguese Named Entity Recognition using BERT-CRF(2020)采用了Bert-CRF的模型结构解决NER任务。对于CRF部分,Hierarchically-Refined Label Attention Network for Sequence Labeling(2019)提出采用label embedding结合多层attention机制学习各个位置label之间的关系。相比CRF模型,这种方法可以建模更复杂的label之间关系。

3. 小样本学习下的NER任务

当我们有一个领域的大量NER任务有标注样本,但是在目标领域内只有少量有标注样本时,一个提升NER效果的方法利用迁移学习技术,在源领域有大量样本的数据上预训练,再在目标域上Finetune。然而,在NER问题中,不同场景中需要预测的实体类型是不同的,这导致无法直接进行迁移。为了解决这种小样本学习下的NER任务,学术界也提出了一些相应方法。

Example-Based Named Entity Recognition(2020)提出一种基于样例的NER解决方法,主要思路是利用一些有标注样本样例,识别出新数据中相关的entity。例如在下面的例子中,右侧为需要识别的句子,左侧为一些有标注样本,利用左侧的标注信息识别右侧的实体(注意左侧和右侧的实体名称都是不同的)。

本文提出了一种两阶段的方法,首先利用样例找到句子中最有可能是实体的span的开始位置和结束位置,然后给这个span分配对应的实体。具体做法为,对于每一个query(即待预测实体的句子),会构造相应的support(有实体标注的句子),其中support中会对实体前后增加<e>和<\\e>这种特殊字符。通过Bert对query和support分别编码,然后计算support中<e>和<\\e>和query中每个token的匹配位置,找到query中可能为entity span的起止位置。对于一个query会有多个support句子来参考,会使用句子之间的attention加权各个support匹配的query中的起止位置,这部分的模型结构和公式如下(即每个support和query的attention权重加权每个support和query的起止位置相似度匹配分):

模型的第二部分是在第一步识别出的entity span的基础上,进一步识别这个entity span具体对应哪个entity。这一步的具体做法和第一步类似,利用support样例计算query中每个token是各个entity类型的起始和终止位置的概率。

Template-Based Named Entity Recognition Using BART(ACL 2021)采用Prompt的思路解决小样本学习下的NER任务。原来解决NER任务的一般做法为将其视为序列标注任务,而这篇文章将其视为一个cloze prompt任务。首先,需要人工定义一个正样本模板和一个负样本模板。对于一个句子,如果某个词组是实体,那么其对应的模板就是<xi:j> is a <yk>;如果某个词组不是实体,那么其对应的模板为<xi:j> is not an entity。例如对于一个输入文本ACL will be held in Bangkok来说,需要构造出多组模板文本,对应每个词组是否为某个entity,如Bangkok is a location entity。在训练阶段会根据label构造出所有是entity的模板对应的样本和非entity的模板对应的样本。在训练过程中,会把原始的文本输入到预训练好的BART Encoder中,得到原文的编码表示。同时在Decoder中,预测根据模板生成的多组文本。例如ACL will be held in Bangkok,在Decoder阶段就需要以生成利用模板产出的文本如Bangkok is a location entity为目标。这样,Decoder相当于学到了一种能力,根据原文输入,对一个模板构造的文本打分。如果Bangkok is a location entity这句话打分很大,说明这句话就是对的,那么就可以抽取出Bangkok是一个地名对应的entity。模型的结构和template例子如下图:

这种方法借助了Prompt的思路,很巧妙的解决了少样本情况下的NER问题,同时也能够解决zero-shot情况下的NER问题,高效利用了预训练模型。

4. 总结

本文首先简要介绍了NER任务的基本定义和经典LSTM-CRF解决方法,接下来重点介绍了小样本学习下的NER任务。小样本学习场景中,由于数据量较少,各个场景的NER任务label不同,因此直接进行训练效果往往不佳。上面介绍的基于样例匹配的方法和基于prompt的方法,都能很好的解决小样本场景下的NER问题。

如果觉得我的算法分享对你有帮助,欢迎关注我的微信公众号“圆圆的算法笔记”,更多算法笔记和世间万物的学习记录~

【历史干货算法笔记,更多干货公众号后台查看】

从ViT到Swin,10篇顶会论文看Transformer在CV领域的发展历程

Meta-learning核心思想及近年顶会3个优化方向

12篇顶会论文,深度学习时间序列预测经典方案汇总

一文读懂CTR预估模型的发展历程

Domain Adaptation:缺少有监督数据场景下的迁移学习利器

多任务学习建模方法论文汇总

以上是关于命名实体识别(NER)详解及小样本下的NER问题解法汇总的主要内容,如果未能解决你的问题,请参考以下文章

一文详解深度学习在命名实体识别(NER)中的应用

一文详解深度学习在命名实体识别(NER)中的应用

命名实体识别(NER)算法

知识图谱——命名实体识别(NER)

NLP命名实体识别NER数据准备及模型训练实例

神经网络结构在命名实体识别(NER)中的应用