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


来自:圆圆的算法笔记
作者:Fareise
本文带你走进命名实体识别(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问题。
招聘文章
最近技术文章

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

投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等
记得备注呦
整理不易,还望给个在看!
继续阅读
阅读原文