NLP 序列标注
转载:https://blog.csdn.net/kevinjin2011/article/details/113939817
序列标注(Sequence labeling)是NLP问题中的基本问题。在序列标注中,我们想对一个序列的每一个元素标注一个标签。一般来说,一个序列指的是一个句子,而一个元素指的是句子中的一个词。
NLP中的序列标注方式常用的有两种:BIO标注法和BIOES标注法。
BIO标注法:
B-begin,代表实体的开头
I-inside,代表实体的中间或结尾
O-outside,代表不属于实体
BIOES标注法:
B-begin,代表实体的开头
I-inside,代表实体的中间
O-outside,代表非实体,用于标记无关字符
E-end,代表实体的结尾
S-single,代表单个字符,本身就是一个实体
命名实体识别(Named Entity Recognition, 简称NER)(也称为实体识别、实体分块和实体提取)是信息提取的一个子任务,旨在将文本中的命名实体定位并分类为预先定义的类别,如人员、组织、位置、时间表达式、数量、货币值、百分比等。命名实体识别是自然语言处理中的热点研究方向之一, 目的是识别文本中的命名实体并将其归纳到相应的实体类型中。
命名实体识别是NLP中一项非常基础的任务,是信息提取、问答系统、句法分析、机器翻译等众多NLP任务的重要基础工具。
从自然语言处理的流程来看,NER可以看作词法分析中未登录词识别的一种,是未登录词中数量最多、识别难度最大、对分词效果影响最大问题。同时NER也是关系抽取、事件抽取、知识图谱、机器翻译、问答系统等诸多NLP任务的基础。
NER的过程,就是根据输入的句子,预测出其标注序列的过程。
所谓实体识别,就是将你想要获取到的实体类型,从一句话里面挑出来的过程。如:
小明在北京大学的燕园看了中国男篮的一场比赛
上面的例子所示,句子“小明在北京大学的燕园看了中国男篮 的一场比赛”,通过NER模型,将“小明 ”以PER,“北京大学”以ORG,“燕园”以LOC,“中国男篮”以ORG为类别分别挑了出来。
采用BEIOS进行标注:
结果就是:[B-PER,E-PER,O, B-ORG,I-ORG,I-ORG,E-ORG,O,B-LOC,E-LOC,O,O,B-ORG,I-ORG,I-ORG,E-ORG,O,O,O,O]
命名实体识别的方法
从模型的层面,可以分为基于规则的方法、无监督学习方法、有监督学习方法,从输入的层面,可以分为基于字(character-level)的方法、基于词(work-level)的方法、两者结合的方法。
基于规则的方法:依赖人工制定的规则,规则的设计一般基于句法、语法、词汇的模式,以及特定领域的知识。当词典的大小有限时,基于规则的方法可以达到很好的效果。这种方法通常具有高精确率和低召回率的特点。但是这种方法无法难以迁移到别的领域,对于新的领域需要重新制定规则。
无监督学习方法:利用语义相似性进行聚类,从聚类得到的组当中抽取命名实体,通过统计数据推断实体类别。
基于特征的监督学习方法:可以表示为多分类任务或者序列标注任务,从数据中学习。
HMM和CRF很适合用来做序列标注问题,早期很多的效果较好的成果,都是出自这两个模型。
机器学习阶段:CRF
深度学习阶段:BiLSTM-CRF、BiLSTM-CNN-CRF、idcnn-crf
Attention阶段:Transformer-CRF、BERT-BiLSTM-CRF