命名实体识别(Named-entity recognition,NER)
什么是命名实体识别
命名实体识别(Named Entity Recognition,简称NER),又称作“专名识别”,是指识别文本中具有特定意义的实体,主要包括人名、地名、机构名、专有名词等。
实体是一个抽象的对象,并不指定描述它的方式。命名实体一般指的是对象的文本形式/名称。(实体与命名实体的区别)
一些文献中会提到mention
简单的讲,就是识别自然文本中的实体指称的边界和类别。命名实体识别不仅仅是独立的信息抽取任务,它在许多大型nlp应用系统如信息检索、自动文本摘要、问答系统、机器翻译以及知识建库(知识图谱)中也扮演了关键的角色。
细粒度实体识别和粗粒度实体识别
细粒度命名实体识别
特点:
- 类型更多
- 类别具有层次结构
难点: - 类别指定
- 预料的标注
- 实体识别的方法
粗粒度命名实体识别
特点: - 类别少
从粗粒度任务发展到细粒度任务与标注数据集从小发展到大有关
NER的关键
进行实体识别的过程中,有两个问题是关键的:
- 实体边界的确定(定位)
- 实体类别的判断(定类)
NER的发展史
在基于机器学习的方法中,NER被当作是序列标注问题。与分类问题相比,序列标注问题中当前的预测标签不仅与当前特征相关还与之前的预测标签相关,即预测标签序列之间是有强相互依赖关系的。条件随机场(CRF)是NER目前的主流模型。
NER数据集
最常见的数据集为CoNLLo3和OneNotes,分别常见于粗粒度的NER任务和细粒度的NER任务。
NER数据标注体系
主要的数据标注体系是:IO,BIO,BMEWO和BMEWO+
[转自https://blog.csdn.net/qq280929090/article/details/79011660]
NER工具
NER实现方法
宏观:
- 监督学习方法:目前常用的模型或方法包括隐马尔可夫模型、语言模型、最大熵模型、支持向量机(分类)、决策树和条件随机场等。值得一提的是,基于条件随机场的方法是命名实体识别中最成功的方法。
(语言模型:也可以称为概率语言模型,简单的说就是求P(Sentence),通过分数告诉机器怎么学说话,用处:输入法、语音识别、机器翻译)
- 半监督学习方法:这一类方法利用标注的小数据集(种子数据)自举学习。
- 无监督学习方法:这一类方法利用词汇资源(如WordNet)等进行上下文聚类。
- 混合方法:几种模型相结合或利用统计方法和人工总结的知识库。
基于方式的分类:
- 基于规则和词典的方法:缺点是依赖词典的完备性,无法抽取词典中未包含的实体指称(即未登录词,OOV)
- 基于统计的方法
- 基于深度学习的方法
基于规则
步骤: - 分词
- 收集特征词词典(比如实体的结尾词是网吧、网咖就可以作为特征词)
- 标注序列(对分词后的词语进行标注,打标签)
- 正则匹配,识别实体(如果发现实体的组成规则是:若干地名+若干其他成分+若干特征词,则只要对标注后的序列做一个正则表达式的匹配即可)
还有一些其他规则是建立在文法、句法和单词拼写上的特征。
优点:在小数据集上可达到很高的准确率和召回率,简单,快速
缺点:规则必须手工制定,面向不同类别或者不同语言的文档时通常不能够得到很好的效果需重新制定规则(移植性不好)。代价太大,系统建设周期长(需要构建大量的规则集)。
基于统计的方法
HMM
目标是求观察序列的背后可能的标注序列。
马尔可夫假设:每个状态只依赖于前一个状态
状态表示:标注的概率
观测表示:在某个标注下,生成某个词的概率
目标是求最佳的状态序列(Viterbi算法)
状态初始化概率矩阵:
状态转移概率矩阵:
观测概率矩阵:
案例:
实战HMM-Viterbi角色标注地名识别
CRF
工具有CRF++
CRF的两个假设:
- 该分布是指数族分布
存在函数$f(y_1,y_2,…,y_n;x)$使得其中Z(x)是归一化因子,因为这个是条件分布,所以归一化因子与x有关 - 输出之间的关联仅发生在相邻位置,并且关联是指数加性的。
这里$f(y_1,..,y_n;x)=h(y_1;x)+g(y_1,y_2;x)+h(y_2;x)+…+g(y_{n-1},y_n;x)+h(y_n;x)#
(随机场是由若干个位置组成的整体,当按照某种分布给每一个位置随机赋予一个值之后,其全体就叫做随机场。)
较为简单的条件随机场是定义在线性链上的条件随机场,称为线性链条件随机场(linear chain conditional random field). 线性链条件随机场可以用于序列标注等问题,而本文需要解决的命名实体识别(NER)任务正好可通过序列标注方法解决。这时,在条件概率模型P(Y|X)中,Y是输出变量,表示标记序列(或状态序列),X是输入变量,表示需要标注的观测序列。学习时,利用训练数据 集通过极大似然估计或正则化的极大似然估计得到条件概率模型p(Y|X);预测时,对于给定的输入序列x,求出条件概率p(y|x)最大的输出序列y0.
要用到特征模板:一般采用当前位置的前后n个位置的字及其标记表示,即以当前位置的前后n个位置范围内的子串及其标记作为观察窗口(一般n取2~3)[自己设计的]
CRF要比HMM更加强大,原因主要有两点:
- CRF可以定义数量更多,种类更丰富的特征函数。
HMM模型具有天然具有局部性,就是说,在HMM模型中,当前的单词只依赖于当前的标签,当前的标签只依赖于前一个标签。这样的局部性限制了HMM只能定义相应类型的特征函数,我们在上面也看到了。 - CRF可以使用任意的权重 将对数HMM模型看做CRF时,特征函数的权重由于是log形式的概率,所以都是小于等于0的,而且概率还要满足相应的限制,
从HMM到CRF
对于词性标注问题,HMM模型也可以解决.HMM的思路是用生成办法,也就说,在已知要标注的句子s的情况下,去判断生成标注序列I的概率,如下所示:
这里$P(l_i|l_{i-1})$是转移概率,$P(w_i|l_i)$表示发射概率.
HMM和CRF怎么比较呢?
答案是:CRF比HMM要强大的多,他可以解决所有HMM能够解决的问题,并且还可以解决许多HMM解决不了的问题.事实上,我们可以对上面的HMM模型取对数,就变成下面这样:
把这个式子与CRF的式子进行比较:
换句话说,我们可以构造一个CRF,使他与HMM的对数形式相同。(每一个HMM模型都等价于某个CRF)
与HMM区别
1)HMM是假定满足HMM独立假设。CRF没有,所以CRF能容纳更多上下文信息。
2)CRF计算的是全局最优解,不是局部最优值。
3)CRF是给定观察序列的条件下,计算整个标记序列的联合概率。而HMM是给定当前状态,计算下一个状态。
4)CRF比较依赖特征的选择和特征函数的格式,并且训练计算量大
最大熵
基本思想:利用给定训练数据选择适当统计模型,使其满足所有已知事实(约束),而对未知事实不做任何假设(熵最大)——最优化问题。
最大熵与其他模型的不同之处:一般说的“特征”都是指输入的特征,而最大熵模型中的“特征”指的是输入和输出共同的特征(共现时对应的特征)——特征函数。
约束条件:
基于深度学习的方法
LSTM+CRF
传统的CRF的优点就是能对隐含状态建模,学习状态序列的特点,但它的缺点是需要手动提取序列特征.所以一般做法是,在LSTM后加一层CRF,以获得两者的优点
单向LSTM与双向LSTM的区别:
像最大正向匹配和最大反向匹配,是从两个方向来提取特征.正向的LSTM提取的的是过去的特征对当前点的影响,而反向的LSTM提取的是未来的特征对当前点的影响.
如何理解LSTM后接CRF
简单说就是条件随机场可以把label的上下文学出来。lstm加softmax分类的时候只能把特征的上下文关系学出来,label的没学出来。
IDCNN-CRF
对于序列标注来讲,普通CNN有一个不足,就是卷积之后,末层神经元可能只是得到了原始输入数据中一小块的信息。而对NER来讲,整个输入句子中每个字都有可能对当前位置的标注产生影响,即所谓的长距离依赖问题。
为了覆盖到全部的输入信息就需要加入更多的卷积层,导致层数越来越深,参数越来越多。而为了防止过拟合又要加入更多的Dropout之类的正则化,带来更多的超参数,整个模型变得庞大且难以训练。因为CNN这样的劣势,对于大部分序列标注问题人们还是选择biLSTM之类的网络结构,尽可能利用网络的记忆力记住全句的信息来对当前字做标注。
Fisher Yu and Vladlen Koltun 2015 提出了dilated CNN模型,意思是“膨胀的”CNN。其想法并不复杂:正常CNN的filter,都是作用在输入矩阵一片连续的区域上,不断sliding做卷积。dilated CNN为这个filter增加了一个dilation width,作用在输入矩阵的时候,会skip所有dilation width中间的输入数据;而filter本身的大小保持不变,这样filter获取到了更广阔的输入矩阵上的数据,看上去就像是“膨胀”了一般。
上图可见感受域是以指数速率扩大的。原始感受域是位于中心点的1x1区域:
(a)图中经由原始感受域按步长为1向外扩散,得到8个1x1的区域构成新的感受域,大小为3x3;
(b)图中经过步长为2的扩散,上一步3x3的感受域扩展为为7x7;
(c)图中经步长为4的扩散,原7x7的感受域扩大为15x15的感受域。每一层的参数数量是相互独立的。感受域呈指数扩大,但参数数量呈线性增加。
NER的问题——命名实体消歧(Named Entity Disambiguation)
基于聚类的实体消歧
实体链接
NER的问题命名实体统一
Reference Disambiguation
NER评价指标
Acc、Precision、Recall和F1值。
绝大多数的NER任务需要识别多种实体类别,需要对所有的实体类别评估NER的效果。基于这个思路,有两类评估指标:
- 宏平均F-score: 分别对每种实体类别分别计算对应类别的F-score,再求整体平均
- 微平均F-score:对整体数据求F-score(每个实体视为平等)
NER的难点
- 汉语文本没有类似英文文本中空格之类的显式标示词的边界标示符,命名实体识别的第一步就是确定词的边界,即分词;
- 汉语分词和命名实体识别互相影响;
- 除了英语中定义的实体,外国人名译名和地名译名是存在于汉语中的两类特殊实体类型;
- 现代汉语文本,尤其是网络汉语文本,常出现中英文交替使用,这时汉语命名实体识别的任务还包括识别其中的英文命名实体;
- 不同的命名实体具有不同的内部特征,不可能用一个统一的模型来刻画所有的实体内部特征。
总结
参考文献
- https://easyai.tech/ai-definition/ner/
- https://bainingchao.github.io/2019/02/13/%E5%91%BD%E5%90%8D%E5%AE%9E%E4%BD%93%E8%AF%86%E5%88%AB%E6%8A%80%E6%9C%AF/
- https://zekizz.github.io/NER_survey_zeki.pdf
- http://ir.hit.edu.cn/~taozi/HMM_paper.pdf
- https://mp.weixin.qq.com/s?__biz=MzA4MTk3ODI2OA==&mid=2650343402&idx=1&sn=6777c3ab75c92d810d2dc06cd7cfe943&chksm=87811119b0f6980fad3d42222c22da1e5fd96cfabad154505e0e32a10e0415f83fc4b95c34c1&scene=27#wechat_redirect
- 论文:A Survey on Deep Learning for Named Entity Recognition
- https://www.paperweekly.site/papers/notes/146
- https://blog.csdn.net/ANNILingMo/article/details/80398473
- NER评估:https://www.jianshu.com/p/e473737356ea
- https://www.lookfor404.com/category/note/%E5%91%BD%E5%90%8D%E5%AE%9E%E4%BD%93%E8%AF%86%E5%88%AB/
- https://blog.csdn.net/SunJW_2017/article/details/82460284
- https://www.cnblogs.com/bep-feijin/articles/9650898.html
- https://www.cnblogs.com/nxf-rabbit75/archive/2019/04/18/10727769.html
- CRF++:https://www.jianshu.com/p/50ba94f2b9f2
- https://blog.csdn.net/qq_41853758/article/details/82933080
- 实战:https://blog.csdn.net/m0_37306360/article/details/84592596
- 针对特定领域命名实体识别 的神经网络归纳学习框架
- 使用Scikit-Learn进行命名实体识别和分类(NERC)
- 深度学习——命名实体识别与关系抽取总结
- 基于深度学习的知识图谱综述
- NLP基础笔记2——词性标注与命名实体识别,关键词提取技术
- pdf:https://www.aclweb.org/anthology/N16-1030
- 命名实体识别前沿总结
- 命名实体识别领域文献调研
- 信息抽取(Information Extraction:NER(命名实体识别),关系抽取)
- 达观数据如何打造一个中文NER系统
- 《Neural Cross-Lingual Entity Linking》阅读笔记
- BiLSTM+CRF、CRF++比较实验与思考
- 中文任务全面超越BERT:百度正式发布NLP预训练模型ERNIE
- NER using Positive-Unlabeled Learning
- PaperWeekly 第十七期 —- 无监督/半监督 NER
- 与NER相关的联合抽取模型
- NER Paper list
- 命名实体识别(NER)综述
- 信息抽取:命名实体识别与关系抽取
- A comparison of Named-Entity Disambiguation and Word Sense Disambiguation
- 自然语言处理 多义词消歧?
- 这里有一份实体链接综述,请查收
- 中文的同义词近义词词典或网站有哪些值得推荐?
- 面向领域的命名实体消歧方法改进研究