# Application of NER

# NER 的目的

NER 可以有助于下一步的具体任务,包括:

  1. natural language understanding—— 解决 “每个字都认识,但是合起来不认识” 的问题。
  2. 识别代词的指代关系,用来 entity linking
  3. relation extraction
  4. Web query understanding
  5. question answering
  6. cocreference resolution

# Evaluation of NER

这里设计到一个 trade off:

  • selected and correct(TP)
  • selected but incorrect(FP)
  • not selected but correct(FN)
  • not selected and incorrect(TN)

NER 的 benchmark

  • CoNLL-2002 and CoNLL-2003
  • MUC-6 and MUC-7

# Method of NER

  • Rules-based NER
  • Calssifier-based NER
    • Standard classifiers: KNN, decision tree, naive Bayes, SVM...
    • Sequence models: HMMs, CRFs
  • Neural-based NER
    • LSTM, LSTM-CRF...

# Rule-based NER

使用正则表达式进行抽取。

一个常见的例子是,网上填写调查问卷时,会有手机号 / 身份证号符合规则的检测。比如,使用 RegEx = {\d}{11} 来检测手机号,这样 recall 很高,但是 precision 有限。如果再加入号码段的限制,即手机号前三位的限制,那么 precision 就会提高。

recall=TP/(TP+FN)\text{recall} = TP/(TP+FN) 是召回率,precision=(TP+FP)\text{precision} = (TP+FP) 是准确率,

尽管基于隐马尔可夫等模型的应用已经非常少了,但是使用 rule-based 方法仍然存在。对于有明确规则的实体,这样的抽取 recall 和 precision 可以达到完全正确。这是概率模型所不具有的能力。

另一个例子:提取大学的名字,可以使用一串首字母后跟 University 的规则,例如 Tsinghua University. 但是这样的方式具有一定的局限性,例如 Renmin University of China, 这是一个异常值。这样不能控制 recall 达到 100%.

# When/Why simple patterns/rules would not work?

  • 在中文语境中,做命名实体识别是更加困难的,因为没有分词,从而很难区分 “中国人民大学” 和 " 人民大学”。
  • 某些网站会把所有首字母都小写。
  • 同一实体可能有多个名称和形态,例如 Bill Gates, Gates... 同一名称可能对应多个实体,如 Michael Jordan 可能是篮球运动员,可能是机器学习科学家,也可能是球鞋品牌。

# Classifier-based NER

监督信号为命名实体的开始,命名实体的结束或其它。例如句子 Bill Gates is the CEO and co-founder of Microsoft Inc. 中,Bill 和 Microsoft 表示为命名实体的开始 (B-PER), Gates 和 Inc. 表示为命名实体的结束 (E-PER).

这样就可以使用隐马尔可夫模型、RNN 模型等方法进行分类。

# Sequence Labeling

  • 概率图模型 (PGM):生成模型课上讲过啦。

# Features of NER

在统计机器学习时代,除了设计新的模型之外,提高性能的重要方法就是 feature engeering. 包括:

  • Word:
    • Current Word
    • Previous/Next Word
  • Other kins of inferred linguistic classification
    • Part-of-speech tags
  • Label context
    • Previous (and perhaps next) label

# Simple Classification

使用 simple classification 不会考虑 token 之间的关联性。每一个位置的 yiy_i 完全由 feature xix_i 决定。

# KNN

优点:

  1. 鲁棒
  2. 简单
  3. 不用训练

缺点:

  1. 取决于测度和所选择的 kk.
  2. easily folled by invariant attributes
  3. 计算开销大(很多时候的 feature 是很高维度的)

# 隐马尔可夫模型

隐马尔可夫模型 (Hidden Markov Model, HMM) 是一个概率生成模型 P(x,y)P(x,y), 用于描述一个含有隐含未知参数的马尔可夫过程。其难点在于隐含参数的推断,从序列的观测数据推测序列的隐藏状态。

模型建模联合概率:

P(x1:T,y1:T)=t=1TP(ytyt1)P(xtyt),P(y1y0)=P(y1).P(x_{1:T}, y_{1:T}) = \prod_{t=1}^T P(y_t|y_{t-1})P(x_t|y_t), \quad P(y_1|y_0) = P(y_1).

# HMM 的前向算法

实际上是求导枚举时计算量太大不可接受引发的改进。

就像动态规划一样。

# Infer (decode) with HMM

# 条件随机场

就是一个朴素的神经网络。

# Neural-based NER

# Hand-Written Patterns

# Bootstrapping

如果起初有少量 seed tuples, 少量高质量 pattern 和大规模的 unsupervised text data, 那么可以使用 bootstrapping 方法。

下面是一个例子:

  • Seed Tuple (Mark Twain, place of birth, Elmira)
    • Mark Twain was born in Elmira, NY.
    • The hometow of Mark Twain is in Elmira.
  • 那么可以抽取出相关的 pattern:
    • X was born in Y.
    • The hometown of X is in Y.
  • 于是可以在大规模文本上进行,从而找到更多的 tuples.

那么如何扩展 pattern? 这里涉及到一个 distinct 假设,即如果句子中存在两个实体,那么这个句子一般在讲两个实体之间的关系。

一个例子是 DIPRE (Brin 1998).

Bootstrapping 的缺点是,在抽取过程中出现语义偏移 (semantic drift) 后,误差会发生累积。

# Supervised Relation Extraction

# Relation distance embedding

就是相对位置的 Position Embedding.

后面还讲了 Child-sum Tree LSTM, N-ary LSTM. Tree LSTM 实际上不怎么 work, 而且 torch 和 tensorflow 都没有进行底层优化。