命名实体识别总结

一、什么是命名实体识别

   命名实体识别(NER)是指在文本中识别出特殊对象,这些对象的语义类别通常在识别前被预定义好,预定义类别如人、地址、组织等。命名实体识别不仅仅是独立的信息抽取任务,它在许多大型nlp应用系统如信息检索、自动文本摘要、问答系统、机器翻译以及知识建库(知识图谱)中也扮演了关键的角色。

1. 命名实体分类

2. 方法分类

传统:

  • 基于规则的方法
  • 无监督方法
  • 基于特征的监督学习方法

当今:

  • 深度学习方法

3. 形式化定义

  给定标识符集合s=<w1,w2,...,wN>,NER输出一个三元组<Is,Ie,t>的列表,列表中的每个三元组代表s中的一个命名实体。

  • Is属于[1,N],为命名实体的起始索引
  • Ie属于[1,N],为命名实体的结束索引
  • t指代从预定义类别中选择的实体类型

例:

4. NER任务分类

二、背景

1. 数据集

  有监督方法的NER任务依赖标注数据集。2005 年之前,数据集主要通过标注新闻文章得到并且预定义的实体种类少,这些数据集适合用于粗粒度的NER任务; 2005 年之后,数据集来源越来越多,包括但不限于维基百科文章、对话、用户生成语料(如推特等社区的用户留言)等,并且预定义的实体类别也多了许多,以数据集 OneNotes 为例,其预定义的实体类别达到了89种之多。

  所有数据集中,最常见的数据集为 CoNLL03 和 OneNotes,分别常见于粗粒度的NER任务和细粒度的NER任务。

  常见的数据集列举如下:

2. 工具

  现成的NER工具来源于学界、工业界以及开源项目。列举如下:

三、评估标准

1. 精确匹配评估

  NER任务需要同时确定实体边界以及实体类别。在精确匹配评估中,只有当实体边界以及实体类别同时被精确标出时,实体识别任务才能被认定为成功。基于数据的TP、FP以及FN,可以计算NER任务的准确率,召回率以及F-score用于评估任务优劣。

  

准确率 

Precision=\frac{TP}{TP+FP}
召回率 Recall = \frac{TP}{TP+FN}

F-score:F-score 是精确率和召回率的调和平均,最常用的 F-score :

2\times\frac{Precision\times Recall}{Precision+Recall}

 

  绝大多数的NER任务需要识别多种实体类别,需要对所有的实体类别评估NER的效果。基于这个思路,有两类评估指标:

2. 宽松匹配评估

四、传统的NER方法

1. 基于规则的方法

2. 无监督学习方法

3. 基于特征的有监督学习方法

五、深度学习方法

1. 为什么使用深度学习方法

2. 模型分类法

  一个深度NER系统的结构示例:

 

六、输入的分布式表示

  分布式语义表示:一个单词的含义是由这个单词常出现的语境(上下文)所决定的.

  一种直接粗暴的单词表示方法为 one-hot 向量表示。这种方法通常向量的维度太大,极度稀疏,且任何两个向量都是正交的,无法用于计算单词相似度(见 CS224N lecture1笔记)。分布式表示使用低维度稠密实值向量表示单词,其中每个维度表示一个隐特征(此类特征由模型自动学习得到,而非人为明确指定,研究者往往不知道这些维度到底代表的是什么具体的特征)。这些分布式表示可以自动地从输入文本中学习得到重要的信息。深度NER模型主要用到了三类分布式表示:

  • 单词级别表示
  • 字符级别表示
  • 混合表示

1. 单词级别的分布式表示

作为后续阶段的输入,这些词嵌入向量既可以在预训练之后就固定,也可以根据具体应用场景进行调整。

  典型的应用:

2. 字符级别的表示

  典型例子:

3. 混合表示

典型例子如下:

七、语义编码结构

  基于深度学习的NER系统的第二步时利用输入表示学习语义编码。常见的语义编码结构有:

  • 卷积神经网络(convolutional neural network)
  • 循环神经网络(recurrent neural network)
  • 递归神经网络(recursive neural network)
  • 神经语言模型
  • transformer

  如无特殊说明,文中的 RNN 一般指循环(recurrent)神经网络。

1. 卷积神经网络(CNN)

  如图是一个经典的基于 CNN 的句子处理方法:

  输入表示阶段,输入序列中的每一个词都被嵌入一个 N 维的向量。在这之后,系统利用卷积神经网络来产生词间的局部特征,并且此时卷积神经网络的输出大小还与输入句子的大小有关。随后,通过对该局部特征施加极大池化(max pooling)或者平均池化(average pooling)操作,我们能得到大小固定且与输入相互独立的全局特征向量。这些长度大小固定的全局特征向量之后将会被导入标签解码结构中,分别对所有可能的标签计算相应的置信分数,完成对标签的预测。

2. 循环神经网络(Recurrent NN)

循环神经网络在处理序列输入时效果优秀,它有两个最常见的变种:

  • GRU(gated recurrent unit)
  • LSTM(long-short term memory)

特别的,双向循环神经网络(bidirectional RNNs)能同时有效地利用过去的信息和未来的信息,即可以有效利用全局信息。因此,双向循环神经网络逐渐成为解决 NER 这类序列标注任务的标准解法。

  典型例子:

3. 递归神经网络(Recursive NN)

  递归神经网络是一种非线性自适应的模型,它可以学习得到输入的深度结构化信息。命名实体与某些语言成分联系十分紧密,如名词词组。传统的序列标注方法几乎忽略了句子的结构信息(成分间的结构),而递归神经网络能有效的利用这样的结构信息,从而得出更好的预测结果。

  典型例子:

  • Leveraging linguistic structures for named entity recognition with bidirectional recursive neural networks

 

4. 神经语言模型

  语言模型是一类描述序列生成的模型。给定符号序列 (t_1,t_2,...,t_N) ,且已知符号 t_k 之前的符号为 (t_1,...,t_{k-1}) ,前向语言模型通过对符号 t_k 的概率进行建模来计算整个序列的概率:

  类似的,反向语言模型对整个序列的计算如下:

  而双向语言模型(结合了前向和反向语言模型)同时利用了过去和未来的词的信息来计算当前符号的概率,因而可以很好的利用语境的语义与句法信息

  典型例子:

  • Semisupervised sequence tagging with bidirectional language models 文章认为,利用单词级别表示作为输入来产生上下文表示的循环神经网络往往是在相对较小的标注数据集上训练的。而神经语言模型可以在大型的无标注数据集上训练。文中模型同时使用词嵌入模型与神经语言模型对无监督的语料进行训练,得到两种单词表示;之后模型中省去了将输入向量转化为上下文相关向量的操作,直接结合前面得到的两类单词表示并用于有监督的序列标注任务,简化了模型的结构。示例图如下:

5. transforer

  典型例子:

 

八、标签解码结构

  标签解码是NER模型中的最后一个阶段。在得到了单词的向量表示并将它们转化为上下文相关的表示之后,标签解码模块以它们作为输入并对整个模型的输入预测相应的标签序列。主流的标签解码结构分为四类:

  • 多层感知器+Softmax
  • 条件随机场
  • 循环神经网络
  • pointer networks

1. 多层感知器+softmax

  利用这个结构可以将NER这类序列标注模型视为多类型分类问题。基于该阶段输入的上下文语义表示,每个单词的标签被独立地预测,与其邻居无关。

  例子如下:

2. 条件随机场

  条件随机场(conditional random fields)是一类概率图模型,在基于特征的有监督方法中应用广泛,近来的许多深度学习方法也使用条件随机场作为最后的标签标注结构。其缺点为: 无法充分利用段级信息,因为段的内部属性无法使用字级表示进行完全编码。

  例子如下:

3. 循环神经网络

  一些研究使用 RNN 来预测标签。

  例子如下:

4. pointer networks

 

 

 参考文献:

【1】【综述笔记】命名实体识别中的深度学习方法

【2】A survey on deep learning for named entity recognition

posted @ 2019-04-18 09:50  nxf_rabbit75  阅读(11120)  评论(0编辑  收藏  举报