命名实体识别是序列标注的子问题,需要将元素进行定位和分类,如人名、组织名、地点、时间、质量等。命名实体识别的任务就是识别出待处理文本中三大类(实体类、时间类和数字类)、七小类(人名、机构名、地名、时间、日期、货币和百分比) 命名实体。
一般来说进行命名实体识别的方法可以分成两大类:基于规则的方法和基于统计的方法。
基于规则的方法是要人工建立实体识别规则,存在着成本高昂的缺点。
基于统计的方法一般需要语料库来进行训练,常用的方法有最大熵、CRF、HMM、神经网络等方法。
逐一介绍。
在统计概率图(probability graph models)中,参考宗成庆老师的书,是这样的体系结构:
在概率图模型中,数据(样本)由公式 G = ( V , E ) G=(V,E) G=(V,E)建模表示:
上图可以看到,贝叶斯网络(信念网络)都是有向的,马尔可夫网络无向。所以,贝叶斯网络适合为有单向依赖的数据建模,马尔可夫网络适合实体之间互相依赖的建模。具体地,他们的核心差异表现在如何求 P = ( Y ) P=(Y) P=(Y),即怎么表示 Y = ( y 1 , ⋯   , y n ) Y=(y_{1},\cdots,y_{n}) Y=(y1,⋯,yn) 这个的联合概率。
无向图
对于无向图,一般就指马尔可夫网络。
如果一个图太大,可以用因子分解将 P=(Y) 写为若干个联合概率的乘积。将一个图分为若干个“小团”,注意每个团必须是“最大团”。则有:
其中:
所以像上面的无向图:
其中, ψ c ( Y c ) \psi_{c}(Y_{c} ) ψc(Yc) 是一个最大团 C 上随机变量们的联合概率,一般取指数函数的:
上面的函数叫做势函数。注意 e ∑ k λ k f k ( c , y ∣ c , x ) e^{\sum_{k}\lambda_{k}f_{k}(c,y|c,x)} e∑kλkfk(c,y∣c,x) 即有CRF的影子~
齐次马尔科夫假设
齐次马尔科夫假设,这样假设:马尔科夫链 ( x 1 , x 2 , . . . , x n ) (x_1,x_2,...,x_n) (x1,x2,...,xn) 里的 x i x_i xi总是只受 x i − 1 x_{i-1} xi−1一个参数的影响。
马尔科夫假设这里相当于就是个1-gram。
马尔科夫过程呢?即,在一个过程中,每个状态的转移只依赖于前n个状态,并且只是个n阶的模型。最简单的马尔科夫过程是一阶的,即只依赖于其哪一个状态。
马尔科夫性马尔科夫性是是保证或者判断概率图是否为概率无向图的条件。
三点内容:a. 成对,b. 局部,c. 全局。
在监督学习下,模型可以分为判别式模型与生成式模型。
根据经验,A批模型(神经网络模型、SVM、perceptron、LR、DT……)与B批模型(NB、LDA……)的区别:
判别式模型
A批模型对应了判别式模型。根据上面的两句话的区别,可以知道判别模型的特征了,所以有句话说:判别模型是直接对 P ( Y ∣ X ) P(Y|X) P(Y∣X)建模,即直接根据X特征来对Y建模训练。
具体地,训练过程是确定构件 P ( Y ∣ X ) P(Y|X) P(Y∣X) 模型里面“复杂映射关系”中的参数,然后再去inference一批新的sample。
生成式模型
B批模型对应了生成式模型。并且需要注意的是,在模型训练中,学习到的是X与Y的联合模型 P ( X , Y ) P(X,Y) P(X,Y) ,也就是说,在训练阶段是只对 P ( X , Y ) P(X,Y) P(X,Y) 建模,需要确定维护这个联合概率分布的所有的信息参数。完了之后在inference再对新的sample计算 P ( Y ∣ X ) P(Y|X) P(Y∣X) ,导出 Y Y Y ,但这已经不属于建模阶段了。
结合NB过一遍生成式模型的工作流程。学习阶段,建模: P ( X , Y ) = P ( X ∣ Y ) P ( Y ) P(X,Y)=P(X|Y)P(Y) P(X,Y)=P(X∣Y)P(Y),然后 P ( Y ∣ X ) = P ( X , Y ) P ( X ) P(Y|X) = \frac{P(X,Y)}{P(X)} P(Y∣X)=P(X)P(X,Y) 。另外,LDA也是这样,只是需要确定很多个概率分布,并且建模抽样都比较复杂。
常见的序列有如:时序数据、本文句子、语音数据等等。广义下的序列有这些特点:
对不同的序列有不同的问题需求,常见的序列建模方法总结有如下:
拟合,预测未来节点(或走势分析):
a. 常规序列建模方法:AR、MA、ARMA、ARIMA
b. 回归拟合
c. Neural Networks
判断不同序列类别,即分类问题:HMM、CRF、General Classifier(ML models、NN models)
不同时序对应的状态的分析,即序列标注问题:HMM、CRF、RecurrentNNs
本文只关注在2. & 3. 类问题下的建模过程和方法。
HMM属于典型的生成式模型。对照1.2的讲解,是要从训练数据中学到数据的各种分布,这正是HMM的5要素,其中有3个就是整个数据的不同角度的概率分布:
隐马尔科夫模型由初始状态向量 π π π,状态转移矩阵A和观测概率矩阵B决定。。 π π π和A决定状态序列,B决定观测序列。因此,马尔科夫模型可以用三元符号表示,即 λ \lambda λ=(A,B, π π π),A,B, π π π称为隐马尔科夫模型的三要素。
状态转移概率矩阵A与初始状态概率向量 π π π确定了隐藏的马尔科夫链,生成不可观测的状态序列。
观测概率矩阵B与状态序列综合确定了如何产生观测序列。
模型先去学习确定以上5要素,之后在inference阶段的工作流程是:首先,隐状态节点 i t i_t it是不能直接观测到的数据节点, o t o_t ot才是能观测到的节点,并且注意箭头的指向表示了依赖生成条件关系, i t i_t it在A的指导下生成下一个隐状态节点 i t + 1 i_{t+1} it+1,并且 i t i_t it 在 B 的指导下生成依赖于该 i t i_t it 的观测节点 , 并且只能观测到序列 ( o 1 , o 2 , . . . o i ) (o_1,o_2,...o_i) (o1,o2,...oi) 。
举例子说明(序列标注问题,POS,标注集BES):
input: “学习出一个模型,然后再预测出一条指定”
expected output: 学/B 习/E 出/S 一/B 个/E 模/B 型/E ,/S 然/B 后/E 再/E 预/B 测/E ……
其中,input里面所有的char构成的字表,形成观测集 ,因为字序列在inference阶段是我所能看见的;
标注集BES构成隐藏状态集 ,这是无法直接获取的,也是预测任务;至于A,B, π π π ,这些概率分布信息都是在学习过程中所确定的参数。
高层次的理解:
模型的运行过程(工作流程)对应了HMM的3个问题。
2.2.1 学习训练过程
对照1.2的讲解,HMM学习训练的过程,就是找出数据的分布情况,也就是模型参数的确定。
主要学习算法按照训练数据除了观测状态序列 ( o 1 , o 2 , . . . o i ) (o_1,o_2,...o_i) (o1,o2,...oi) 是否还有隐状态序列 ( i 1 , i 2 , . . . i i ) (i_1,i_2,...i_i) (i1,i2,...ii) 分为:
该命名实体识别方法是一种将深度学习方法和机器学习方法相结合的模型。
Bi-LSTM+CRF模型结构图
如图:
CRF是机器学习的方法,机器学习中困难的一点就是如何选择和构造特征。Bi-LSTM属于深度学习方法,深度学习的优势在于不需要人为的构造和选择特征,模型会根据训练语料自动的选择构造特征。因此采用Bi-LSTM进行特征的选择构造,然后采用CRF根据得到的特征进行decode,得到最终的序列标注的结果。这样讲深度学习和机器学习相结合的,互相取长补短。
参考:https://www.zhihu.com/search?type=content&q=条件随机场
https://www.zhihu.com/question/35866596/answer/236886066