# Application of NER
# NER 的目的
NER 可以有助于下一步的具体任务,包括:
- natural language understanding—— 解决 “每个字都认识,但是合起来不认识” 的问题。
- 识别代词的指代关系,用来 entity linking
- relation extraction
- Web query understanding
- question answering
- 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 就会提高。
是召回率, 是准确率,
尽管基于隐马尔可夫等模型的应用已经非常少了,但是使用 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 之间的关联性。每一个位置的 完全由 feature 决定。
# KNN
优点:
- 鲁棒
- 简单
- 不用训练
缺点:
- 取决于测度和所选择的 .
- easily folled by invariant attributes
- 计算开销大(很多时候的 feature 是很高维度的)
# 隐马尔可夫模型
隐马尔可夫模型 (Hidden Markov Model, HMM) 是一个概率生成模型 , 用于描述一个含有隐含未知参数的马尔可夫过程。其难点在于隐含参数的推断,从序列的观测数据推测序列的隐藏状态。
模型建模联合概率:
# 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 都没有进行底层优化。