自然语言处理之命名实体识别

引言

本文旨在整理自然语言处理中命名实体识别的主流方法。

  1. 基于规则的方法
  2. 基于字典的方法
  3. 隐马尔科夫模型
  4. 条件随机场
  5. 循环神经网络
  6. DL-CRF
  7. 迁移学习

命名实体识别

命名实体识别(Named Entity Recognition, NER),又称为“专名识别”,是自然语言处理中的信息抽取、问答系统等应用领域的基础。从语言分析的角度而言,命名实体识别属于词法分析中未登录词识别的范畴,是其中数量最多、识别难度最大、对分词效果影响最大的问题。

一般来说,命名实体识别的任务就是识别出待处理文本中的三大类(实体类、时间类和数字类)、七小类(人名、地名、组织机构名、时间、日期、货币、百分比)。

1
2
3
eg.
    A: Jim bought 300 shares of Acme Corp. in 2006.
    B: [Jim]_{Person} bought 300 shares of [Acme Corp.]_{Organization} in [2006]_{Time}.

中文命名实体识别所存在的难点

  • 汉语文本没有显式的边界符,部分方法需要先进行分词,而分词可能造成错误传播,与NER相互影响;
  • 存在英文、数字等字符,且同一本体的表达形式多样化,没有严格标准;
  • 存在歧义问题,消歧困难;
  • 不同的命名实体识别内部特征不同,难以整体统一刻画。

早期方法

早期方法,与人工智能的发展相对应,主要分为基于规则与基于字典两种,现多作为辅助手段用于混合方法。

基于规则的方法

基于规则的方法为专家知识,通过语言学专家构造规则模板,选取适当的特征,包括统计信息、关键词、位置词等,基于不同的规则权重进行判断,从而得到命名实体。

特点:1.语料库中的实例具有一定规律性时,表现较好,往往依赖于具体语言、领域和文本风格;2.难以覆盖所有的语言现象,且耗时很长、移植性差。

基于字典的方法

基于字典的方法,与分词类似,采用匹配的方法。

特点:1.无法解决 OOV 问题;2.匹配的时候容易产生歧义。

传统机器学习方法

基于统计的方法利用人工标注的语料进行训练,主要包括隐马尔科夫模型(Hidden Markov Model, HMM)、最大熵(Maximum Entropy, ME)、支持向量机(Support Vector Machine, SVM)、条件随机场(Conditional Random Fields, CRF)等,下文选择目前较为主流的方法进行介绍,其中隐马尔可夫模型与条件随机场都将命名实体识别作为序列标注问题进行处理。

在此,默认对传统机器学习方法的原理已经有所了解。

隐马尔可夫模型

处理命名实体识别任务的时候,用到了隐马尔可夫模型三种应用场景中的学习问题——根据观测序列(句子)求解概率最大的隐含状态序列(标注)。

缺点:HMM 模型中存在两个假设,其一是输出观察值之间严格独立,其二是状态转移过程中当前状态只与前一时刻的标注相关。算法只考虑了前一状态对当前状态所产生的影响,而忽略了其他的上下文信息。

条件随机场

在深度学习成为主流之前,最成功的、最有效的方法就是条件随机场模型,其中最早的是 McCallum 的论文《Early Results for Named Entity Recognition with Conditional Random Fields, Feature Induction and Web-Enhanced Lexicons》

基于 CRF 的命名实体识别的思路是:将给定的文本首先进行分词处理,确定特征模板,组合得到特征函数后,训练 CRF 模型并解码得出最优状态序列。

优点:CRF 算法通过引入自定义的特征函数,不仅可以表达观测之间的依赖,还可表示当前观测与前后多个状态之间的复杂依赖,为一个位置进行标注的过程中可以利用丰富的内部及上下文特征信息。

深度学习方法

深度学习方法的优点在于采取了数据驱动的端到端的形式,减少了传统的 pipeline 产生的错误传播,不再依赖于复杂的特征工程。

循环神经网络

循环神经网络常被用作解决序列问题,在命名实体识别任务中,针对需要长时上下文信息而主要采用在 RNN 的基础上进行改进的 Bi-LSTM。

其中根据特征的不同,有 word-level 和 char-level 的两种结构,由实验表明,对于中文命名实体识别 char-level 的表现更佳。

Word-level

Char-level

DL-CRF

Bi-LSTM 可以很好地学习到上下文信息,但是无法学习到输出的标注之间的关系,这在 NER 问题中也很关键,而 CRF 恰好可以弥补这个缺点,对隐含序列进行建模,所以一般的做法是,在 LSTM 之后再加一层 CRF,这也是现在最为主流的方法。

LSTM+CRF

若想对该方法进一步了解,可查看论文笔记《Neural Architectures for Named Entity Recognition》

迁移学习

近期在 NLP 届掀起狂澜的预训练模型 BERT 等,也可用于很好地解决序列标注问题,对于预训练模型可查看我先前的博客《自然语言处理之预训练模型》,不再重复。

BERT

在预训练模型的基础上如何设计 NER 任务相关模型可有多种选择。

参考文献