NER - liuhuanhahaha/deep_learning GitHub Wiki

1.NER基础简介 NER又称作专名识别,是自然语言处理中的一项基础任务,应用范围非常广泛。命名实体一般指的是文本中具有特定意义或者指代性强的实体,通常包括人名、地名、组织机构名、日期时间、专有名词等。NER系统就是从非结构化的输入文本中抽取出上述实体,并且可以按照业务需求识别出更多类别的实体,比如产品名称、型号、价格等。因此实体这个概念可以很广,只要是业务需要的特殊文本片段都可以称为实体。

学术上NER所涉及的命名实体一般包括3大类(实体类,时间类,数字类)和7小类(人名、地名、组织机构名、时间、日期、货币、百分比)。

实际应用中,NER模型通常只要识别出人名、地名、组织机构名、日期时间即可,一些系统还会给出专有名词结果(比如缩写、会议名、产品名等)。货币、百分比等数字类实体可通过正则搞定。另外,在一些应用场景下会给出特定领域内的实体,如书名、歌曲名、期刊名等。

NER是NLP中一项基础性关键任务。从自然语言处理的流程来看,NER可以看作词法分析中未登录词识别的一种,是未登录词中数量最多、识别难度最大、对分词效果影响最大问题。同时NER也是关系抽取、事件抽取、知识图谱、机器翻译、问答系统等诸多NLP任务的基础。

(目前NER问题主要看成序列标注问题) 了解NER的发展可以参考https://www.cnblogs.com/robert-dlut/p/6847401.html

2.传统机器学习方法解决NER问题: 想对markov相关的一些了解可查看:https://baike.baidu.com/item/%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E9%93%BE/6171383?fr=aladdin

(1)HMM(Hidden Markov Model,隐马尔可夫模型)简介: HMM是一个五元组(O , Q , O0,A , B):

  O:{o1,o2,…,ot}是状态集合,也称为观测序列。

  Q:{q1,q2,…,qv}是一组输出结果,也称为隐序列。

  Aij = P(qj|qi):转移概率分布

  Bij = P(oj|qi):发射概率分布

  O0是初始状态,有些还有终止状态。

一些HMM算法及应用: 概率计算问题即模型评价问题——前向算法和后向算法 学习问题即参数估计问题——Baum-Welch算法 预测问题即解码问题——Viterbi算法 前向算法和后向算法详情参考https://www.cnblogs.com/sddai/p/8475424.html

Baum-Welch算法详情参考https://blog.csdn.net/u014688145/article/details/53046765

viterbi算法详情参考https://www.cnblogs.com/Denise-hzf/p/6612212.html

(2)MEMM(Maximum Entropy Markov Model,最大熵马尔可夫模型)简介: 针对HMM的缺点一是其为生成模型(generative model),二是不能使用更加复杂的feature,提出了MEMM模型。

优势与局限: 隐马尔可夫模型因为其严格的观测独立性假设,对于具有多个互相作用的观测状态组合以及中长范围的元素依赖的数据环境识别特征的能力有限,而最大熵模型特征选择灵活,且不需要额外的独立性假设或内在约束。 隐马尔可夫是生成模型,学习的是联合概率,必须列举所有观察序列的可能值,而最大熵马尔可夫模型可以在不完整信息下有推导出未知数据的能力来。 最大熵马尔可夫模型本质是有向概率图模型,即每个y_i只依赖于x_i,并且每个component(y_i, y_{i-1}, x_i)(特征组合)之间是独立且做局部归一,可能存在label bias(标记偏置)的问题(概率很低)。

详情参考http://wiki.swarma.net/index.php/%E6%9C%80%E5%A4%A7%E7%86%B5%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E6%A8%A1%E5%9E%8B

(3)CRF(conditional random field ,条件随机场)简介: 条件随机场(conditional random field,简称 CRF),是一种鉴别式机率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。 如同马尔可夫随机场,条件随机场为无向性之图模型,图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场当中,随机变量 Y 的分布为条件机率,给定的观察值则为随机变量 X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链接式的架构,链接式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在有效率的算法可供演算。 条件随机场跟隐马尔可夫模型常被一起提及,条件随机场对于输入和输出的机率分布,没有如隐马尔可夫模型那般强烈的假设存在。 线性链条件随机场应用于标注问题是由Lafferty等人与2001年提出的。 详情参考https://www.jiqizhixin.com/articles/2018-05-23-3

(4)HMM、MEMM、CRF三种模型的比较,详情参考https://www.cnblogs.com/hellochennan/p/6624509.html

3.在原有的CRF中加入神经网络:

(1)RNN+CRF

主流形式是 BiLSTM+CRF(双向LSTM+CRF) 通过LSTM网络的处理,相当于得到了一个比较好的对输入数据的表示方法,LSTM单元最终输出的向量即可以看成是输入数据的一种表示形式,最终在打标签阶段,一般都采用softmax进行处理,不过这种方法在处理输出标签直接有强烈关系的数据时,效果还是有限的。特别是在实际的序列标注任务时,由于神经网络结构对数据的依赖很大,数据量的大小和质量也会严重影响模型训练的效果,故而出现了将现有的线性统计模型与神经网络结构相结合的方法,效果较好的有LSTM与CRF的结合。简单来说就是在输出端将softmax与CRF结合起来,使用LSTM解决提取序列特征的问题,使用CRF有效利用了句子级别的标记信息。 详情参考https://x-algo.cn/index.php/2017/01/16/1639/

(2)CNN+CRF

主流形式是IDCNN+CRF(普通CNN的劣势:对于序列标注来讲,普通CNN有一个劣势,就是卷积之后,末层神经元可能只是得到了原始输入数据中一小块的信息。而对NER来讲,整个句子的每个字都有可能都会对当前需要标注的字做出影响。为了覆盖到输入的全部信息就需要加入更多的卷积层, 导致层数越来越深,参数越来越多,而为了防止过拟合又要加入更多的Dropout之类的正则化,带来更多的超参数,整个模型变得庞大和难以训练):

正常CNN的filter,都是作用在输入矩阵一片连续的位置上,不断sliding做卷积。dilated CNN为这片filter增加了一个dilation width,作用在输入矩阵的时候,会skip掉所有dilation width中间的输入数据;而filter矩阵本身的大小仍然不变,这样filter获取到了更广阔的输入矩阵上的数据,看上去就像是“膨胀”了一般。

IDCNN对输入句子的每一个字生成一个logits,这里就和biLSTM模型输出logits之后完全一样,放入CRF Layer,用Viterbi算法解码出标注结果。

在biLSTM或者IDCNN这样的深度网络模型后面接上CRF层是一个序列标注很常见的方法。biLSTM或者IDCNN计算出的是每个词分类的概率,而CRF层引入序列的转移率,最终计算出loss反馈回网络。

4.近现代的NER解决方法: (1)AM(Attention model,注意力模型)简介: 模拟人脑的注意力模型,对对象的关注并不是均衡的,而是有一定的权重比例。

AM模型及其变种:soft AM(主要用于文本处理,在求注意力分配概率分布的时候,对于输入句子X中任意一个单词都给出个概率,是个概率分布。)、hard AM(主要用于图像处理,直接从输入句子里面找到某个特定的单词,然后把目标句子单词和这个单词对齐,而其它输入句子中的单词硬性地认为对齐概率为0)、Global AM(其实就是soft AM,Decoder的过程中,每一个时间步的Context vector需要计算Encoder中每一个单词的注意力权重,然后加权得到)、Local AM(首先找到一个对其位置,然后在对其位置左右一个窗口内来计算注意力权重,最终加权得到Context vector)等。

四种注意力变体:加性注意力(additive attention)、乘法注意力(multiplicative attention)、自注意力(self attention)、关键值注意力(key-value attention)。

详情参考:https://blog.csdn.net/mpk_no1/article/details/72862348和https://www.cnblogs.com/fxjwind/p/9155789.html和https://www.cnblogs.com/robert-dlut/p/6847401.html

(2)数据标注用于NER问题可以大幅度提高NER的效果。

5.总结

目前将神经网络与 CRF 模型相结合的 NN/CNN/RNN-CRF 模型成为了目前 NER 的主流模型,相比CNN,RNN使用应更为广泛一点。 https://images2015.cnblogs.com/blog/670089/201705/670089-20170512215638238-1004917078.png