论文地址:《A Local Detection Approach for Named Entity Recognition and Mention Detection》。

Gayhub地址:xmb-cipher/fofe-ner

摘要

通常大家会把命名实体识别当做序列标注问题去解决,本文提出一种局部探测的方法,通过固定长度句子片段及其前后文来对命名实体进行识别。在CoNLL 2003 NER、TAC-KBP2015和TAC-KBP2016任务上表现很好。

1 简介

  • 命名实体识别(Named Entity Recognition, NER) :识别出句子中的命名实体。
  • 指代探测(Mention Detection, MD):识别出句子中的人名指代。

序列标注问题是把整个句子进行训练与测试,进而识别出句子中的实体。而局部探测方法的对象是句子中的每个片段,达成精准的局部探测的要点是把句子片段以及其充足的上下文信息识别出来。

许多特征工程技术都难免会造成上下文信息的丢失,这里选择了一种定长编码技术:fixed-size ordinally forgetting encoding(FOFE)

整个模型的基本流程是这样的:

  1. 用FOFE把变长文本编码成定长文本
  2. 用普通的前馈神经网路(FFNN)进行NERMD

3 基本知识

前馈神经网路就是最常见的多层感知机,基于单词和基于字母的模型根据字面意思也都容易理解,这里简要讲下FOFE

NLP中文本都是变长的,RNNs/LSTMs模型擅长处理这类数据,而FFNN并不擅长。但是,FOFE可以把变长数据编码为定长数据,这就很好克服了FFNN自身的限制,毕竟FFNN这种简单模型的训练和预测效率非常高。

FOFE的编码思想类似于词带模型(BoW)+遗忘因子

  1. 首先把定义集合 S = w_1, w_2, w_3, ··· w_T ,其中 w 代表一个单词。起初的时候,每个单词用one-hot向量编码表示,例如对于 S= A, B ,C ,可以用 [1,0,0], [0,1,0], [0,0,1] 表示。

2. 设定一个遗忘因子 alphain(0,1) ,使用以下公式计算出每个单词的最终编码 z_t

3. 例如对于序列 ABC ,其结果为 [α^2,α,1] ;对于序列 ABCBC ,其结果为 [α^4,α+α^3,1+ α^2 ] 。这就把任意变长序列编码为长度为 T定长编码

4 基于FOFE的局部探测模型

FOFE-NER最主要的特征如上图,每个序列被拆分为三部分(left+segment+right),这三部分先经过FOFE演算法进行一轮编码,然后进入FFNN中进行NER

此外,还可以引入其他基於单词的特征和基于字母的特征,文章中讲的比较清楚。

5 训练和解码演算法

在训练过程中,实体主要有以下情况:

  1. segment正好是实体
  2. segment中部分word构成实体
  3. segment完全不参与实体构成

对于上述情况,在分类上采取这样的措施:

  1. 如果是上述情况1,则对实体进行分类,如PER、ORG
  2. 如果是上述情况2、3,则将实体分类为NONE

对于预测结果,如果存在冗余结果,可以根据以下策略进行剔除:

6 两层增强

通过借鉴CRF的思想,我们构造两轮FOFE-NER模型,在第一轮中目标是把

Google has also recruited Fei-Fei Li, director of the AI lab at Stanford University

预测为

<ORG> has also recruited Fei-Fei Li, director of the AI lab at <ORG>.

用实体类型替代实体后,进一步寻找实体Fei-Fei Li

7 实验结果

我们用CoNLL2003 NER数据集测试结果来理解特征选取模型对比

个人疑问

  1. FOFE编码的合理性?这个问题应该要深入阅读FOFE的论文和其相关的应用论文去寻找答案。
  2. 文中提出的用序列标注解决NBR存在的问题(训练数据实体标注残缺实体嵌套时效果差)是否客观?多阅读一些NER的论文后可以进行深入比较。

总结

NER问题目前比较常规的解决方法是围绕LSTM和CRF展开的,相比于直接把整个序列作为输入的序列标注模型,本论文提出的局部探测法更加强调了局部上下文信息在NER问题中的重要性。而且,本论文提出的模型结构简单,性能上应该更优(待进一步验证)。


推荐阅读:
相关文章