什么是命名实体识别(NER)?
命名实体识别(NER)是自然语言处理(NLP)中的基本任务之一。NLP的一般流程如下:
句法分析是NLP任务的核心,NER是句法分析的基础。NER任务用于识别文本中的人名(PER)、地名(LOC)等具有特定意义的实体。非实体用O来表示。我们以人名来举例:
王 B-PER
文 I-PER
和 O
小 B-PER
丽 I-PER
结 O
婚 O
了。 O
(IOB是块标记的一种表示。B-表示开始,I-表示内部,O-表示外部)
首先明确的是NER是个分类任务,具体称为序列标注任务,即文本中不同的实体对应不同的标签,人名-PER,地名-LOC,等等,相似的序列标注任务还有词性标注、语义角色标注。传统的解决此类问题的方法,包括:(1)基于规则的方法。根据语言学上预定义的规则。但是由于语言结构本身的不确定性,规则的制定上难度较大。(2)基于统计学的方法。利用统计学找出文本中存在的规律。主要有隐马尔可夫(HMM)、条件随机场(CRF)模型和Viterbi算法。文末会简要介绍比较流行的CRF模型。(3)神经网络。深度学习(多层神经网络)这么流行,当然不会放过nlp,之前我的一篇帖子(《深度学习在机器翻译中的应用》)里提到过循环神经网络(RNN)及其变种LSTM。因为文本的上下文依赖性,LSTM这种能够存储上下文信息的序列模型是较好的选择(本文侧重于CRF,LSTM的基本知识可参考《深度学习在机器翻译中的应用》)。
LSTM+CRF模型
语言文本的特殊之处在于其具有一定的结构,主谓宾定状补,状语后置,非限制性定语从句等等。这些结构的存在代表着每个单词的前后是有着一定的词性限制的。比如:
我现在回家 //这是常见的(主+状+谓+宾)结构的句子
我今天家 //这样的文本就不能称为一个句子,少了必要的语法结构
LSTM网络是整体思路同样是先对给定的训练样本进行学习,确定模型中的参数,再利用该模型对测试样本进行预测得到最后的输出。由于测试输出的准确性现阶段达不到100%,这就意味着,肯定存在一部分错误的输出,这些输出里很可能就包含类似于上述第二句话这种不符合语法规则的文本。因此,这就是为什么要将CRF模型引入进来的原因。条件随机场(CRF)是一种统计方法。其用于文本序列标注的优点就是上文所说的对于输出变量可以进行约束,使其符合一定的语法规则。常见的神经网络对训练样本的学习,只考虑训练样本的输入,并不考虑训练样本的输出之间的关系。
LSTM+CRF 网络
LSTM 网络可以看作是一个多分类问题,给定B、I、O等标签作为训练输出,”john goes to school”等句子作为输入,根据网络模型计算的概率大小确定句子中的每个单词属于哪个标签(类别),概率最大的即为该单词最后所属的标签(类别),标签与标签之间是独立的。LSTM+CRF则是在分类问题的基础上,加上输出之间的约束关系。比如”B”标签之后还是”B”,这种不符合语法规则的情况,通过CRF机制是可以排除的。目前,tensorflow 已支持LSTM+CRF的配置。(LSTM+CRF是深度学习中比较经典的模型,当前还有LSTM+cnn+CRF等其他的经过优化的模型)。
附:条件随机场(CRF)原理
要完全搞懂CRF的原理,可以参考李航的《统计学习方法》的第11章。这里作简要说明。CRF的基础是马尔可夫随机场,或者称为概率无向图。
延伸
概率无向图:用无向图表示随机变量的概率分布。
上图就是满足局部马尔可夫性的概率无向图。每个结点都代表着一个随机变量,边代表着随机变量之间的关系。
局部马尔可夫性:P(Yu|Yv)=P(Yu|Yv,Yw)简单理解,因为Yu和Yw之间没有边连接,则在给定随机变量Yv条件下的Yu的概率,跟多加了一个Yw无关。
CRF的理解
CRF可以理解为在给定随机变量X的条件下,随机变量Y的马尔可夫随机场。其中,线性链CRF(一种特殊的CRF)可以用于序列标注问题。CRF模型在训练时,给定训练序列样本集(X,Y),通过极大似然估计、梯度下降等方法确定CRF模型的参数;预测时,给定输入序列X,根据模型,求出P(Y|X)最大的序列y(这里注意,LSTM输出的是一个个独立的类别,CRF输出的是最优的类别序列,也就是CRF全局的优化要更好一些)。
线性链条件随机场(可以比较一下与上面LSTM+CRF网络图的区别与联系)
为何CRF可以表示输出序列内各元素(Y1,Y2,…,Yi,Yi+1)之间的联系?这里就是要联系到马尔可夫性。这也就是为什么CRF的基础是马尔可夫随机场。CRF如何求解P(Y|X),有具体的数学公式,这里就不详细列出了。
-
深度学习
+关注
关注
73文章
5503浏览量
121147 -
自然语言
+关注
关注
1文章
288浏览量
13348 -
nlp
+关注
关注
1文章
488浏览量
22034
原文标题:干货 | 深度学习在NLP的命名实体识别中(NER)的应用
文章出处:【微信号:ZTEdeveloper,微信公众号:中兴开发者社区】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论