NER的过去、现在和未来综述-现在
命名实体识别(NER, Named Entity Recognition),是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。
之前的过去篇:NER的过去、现在和未来综述-过去篇
下一篇:NER的过去、现在和未来综述-未来
过去和现在是相对于某个时间节点的,暂且以bert作为这个时间节点,本文就主要寻找NER在BERT之后的一些方法。本文将从以下方面展开:
token“林”预测为start,“伟”预测为end,那么“林丹对阵李宗伟”也可以解码为一个实体。
所以,span更适合去做实体召回,或者句子中只有一个实体(这种情况应该很少),所以阅读理解任务一般会使用功能span作为解码。
损失函数:
MRC(阅读理解)
这个方法很有意思,当我们要识别一句话中的实体的时候,其实可以通过问题和答案的方式。解码阶段还是可以使用crf或者span。例如:
- 问题:句子中描述的人物是?;句子:林丹在伦敦夺冠;答案:林丹;
个人主观意见认为不实用,原因如下:
- 对于不同的实体,需要去构建问题模板,而问题模板怎么构建呢?人工构建的话,那么人构建问题的好坏将直接影响实体识别。
- 增加了计算量,原来输入是句子的长度,现在是问题+句子的长度。
- span的问题,它也会有(当然span的优点它也有),或者解码器使用crf。
片段排列+分类
Span-Level Model for Relation Extraction
Instance-Based Learning of Span Representations
其实span还是属于token界别的分类任务,而片段排列+分类的方式,是直接对于所有可能的片段,输入是span-level的特征,输出的是实体的类别。片段排列会将所有可能的token组合作为输入进行分类,例如:
另外也修改了attention的相对位置编码(加入了方向、相对距离)和attention计算方式(加入了距离的特征),和TNER类似,后续也有一篇Lattice bert,内容几乎一样。
中期融合
ZEN: Pre-training Chinese Text Encoder Enhanced by N-gram Representations
即在encoder某些层中融入词语和字的输出。在char的中间层添加N-gram的embedding输入。
例如句子中,cook在图谱中是apple的ceo,那么直接将其插入到句子中,那不就扰乱了句子顺序吗,并且对于其他token是引入了额外的信息干扰。因此它提出了两种方法解决这个问题。
- 位置编码,原始句子的位置保持不变,序列就不变,同时对于插入的“CEO”、"Apple"和“cook”的位置是连续,确保图谱知识插入的位置。
- 同时对于后面的token,“CEO”、"Apple"属于噪声,因此利用可见矩阵机制,使得“CEO”、"Apple"对于后面的token不可见,对于CLS也不可见。
标注缺失
首先对于NER标注,由于标注数据昂贵,所以会通过远程监督进行标注,由于远监督词典会造成高准确低召回,会引起大量未标注问题?
另外即使标注,存在实体标注缺失是很正常的现象,除了去纠正数据(代价过高)之外,有么有其他的方式呢?
AutoNER
Learning Named Entity Tagger using Domain-Specific Dictionary
Better Modeling of Incomplete Annotations for Named Entity Recognition
当使用词典进行实体的远监督标注时,由于词典有限,一般会造成标注数据中实体高准确,低召回(未标注)的问题。为了解决数据中的未标注问题,提出了AutoNER with “Tie or Break”的方法。
具体算法如图,其中:
- Tie:对于两个相邻的token,如果他们是属于同一个实体,那么他们之间是Tie。
- Unknow:两个相邻的token其中一个属于未知类型的高置信实体,挖掘高置信实体使用AutoPhrase。
- Break:不属于以上情况,即非同一实体。
- 两个Break之间的tokens作为实体,需要去识别对应的类别。
- 计算损失的时候,对于Unknow不计算损失。(主要是为了缓解漏标(false negative)问题)
解决的问题:
- 即使远监督将边界标注错误,但是实体内部的多数tie还是正确的。
个人理解出发点:1. 提出tie or break是为了解决边界标注错误问题,Unknow不计算损失缓解漏标(false negative)问题。
但是有个问题,文中提到了false negative的样本来自于high-quality phrase,但是这些high-quality phrase是基于统计,所以对于一些低频覆盖不太好。
另外一篇论文也是类似的思想:Training Named Entity Tagger from Imperfect Annotations,它每次迭代包含两步:
- 错误识别:通过交叉训练识别训练数据集中可能的标签错误。
- 权重重置:降低含有错误标注的句子的权重。
PU learning
Distantly Supervised Named Entity Recognition using Positive-Unlabeled Learning
主要解决词典漏标或者标注不连续问题,降低对于词典构造的要求。Unbiased positive-unlabeled learning正是解决未标记样本中存在正例和负例的情况,作者定义为:
\\pi_{n} 是负例,未标注样本属于是正例\\pi_{p} ,解决未标注问题就是怎么不用负样本去预估\\mathbb{E}_{\\mathbf{X} \\mid \\mathrm{Y}=0} \\ell(f(\\boldsymbol{x}), 0) 。
为什么不用负样本,因为负样本可能保证未标注正样本。
作者将其转化为:
所以我直接去学正样本就好了嘛,没毛病。这里大概就能猜到作者会用类似out of domian的方法了。
但是我感觉哪里不对,你这只学已标注正样本,未标注的正样本没学呢。
果然,对于正样本每个标签,构造不同的二分类器,只学是不是属于正样本。
我不是杠,但是未标注的实体仍然会影响二分类啊。
负采样
Empirical Analysis of Unlabeled Entity Problem in Named Entity Recognition
未标注会造成两类问题1)降低正样本量。2)将未标注视为负样本。1可以通过adaptive pretrain缓解,而2后果却更严重,会对于模型造成误导,怎么消除这种误导呢,那就是负采样。
本文ner框架使用了前面介绍的片段排列分类的框架,即每个片段都会有一个实体类型进行分类,也更适合负采样。
负采样: 即对于所有非实体的片段组合使用功能下采样,因为非实体的片段组合中有可能存在正样本,所以负采样一定程度能够缓解未标注问题。注意是缓解不是解决。损失函数如下:
其中前面部分是正样本,后面部分是负样本损失,$\\hat{y}$就是采样的负样本集合。方法很质朴,我觉得比pu learning有效。作者还证明了通过负采样,不讲未标注实体作为负样本的概率大于(1-2/(n-5)),缓解未标注问题。
预训练语言模型
这个主要是bert相关的优化。对于下游任务,包括NER也有提升,就不展开了,见图:
Reference
- NER的过去、现在和未来综述-过去篇
- NER的过去、现在和未来综述-现在
- SpanNER: Named EntityRe-/Recognition as Span Prediction
- Coarse-to-Fine Pre-training for Named Entity Recognition
- A Unified MRC Framework for Named Entity Recognition
- Joint entity recognition and relation extraction as a multi-head selection problem
- Automated Phrase Mining from Massive Text Corpora
- Span-Level Model for Relation Extraction
- Instance-Based Learning of Span Representations
- SpERT:Span-based Joint Entity and Relation Extraction with Transformer Pre-training
- nezha/ernie/bert-wwm
- LICHEE: Improving Language Model Pre-training with Multi-grained Tokenization
- FLAT: Chinese NER Using Flat-Lattice Transformer
- Lattice-BERT: Leveraging Multi-Granularity Representations in Chinese Pre-trained Language Models
- ZEN: Pre-training Chinese Text Encoder Enhanced by N-gram Representations
- AMBERT: A Pre-trained Language Model with Multi-Grained Tokenization
- K-BERT: Enabling Language Representation with Knowledge Graph
- Learning Named Entity Tagger using Domain-Specific Dictionary
- Better Modeling of Incomplete Annotations for Named Entity Recognition
- Training Named Entity Tagger from Imperfect Annotations
- Distantly Supervised Named Entity Recognition using Positive-Unlabeled Learning
- Empirical Analysis of Unlabeled Entity Problem in Named Entity Recognition
- https://zhuanlan.zhihu.com/p/347457328