美文网首页
实体识别

实体识别

作者: Stark_JC | 来源:发表于2018-09-17 10:44 被阅读0次

    1. 隐马尔可夫模型

    输入(训练):词(观测,共m个)及对应的实体类型(状态,共n个),

    构建:

    • n*n 状态转移概率矩阵A(a_{ij} 表示时刻t 处于状态q_i,下一刻转移到q_j的概率)

    • n*m 观测矩阵B(b_{ij}表示处于状态q_i,观测为v_j的概率)

    • 初始状态概率向量 π

    输出:训练后的 A,B,π

    缺点

    1. 没有考虑后面的词对前面的词的影响

    2. 限制了受影响的范围为1

    2. 条件随机场

    随机场:由若干个位置组成的整体,当给每一个位置中按照某种分布随机赋予一个值之后,其全体就叫做随机场。

    马尔科夫随机场:假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,和与其不相邻的位置的赋值无关。

    条件随机场(CRF):假设马尔科夫随机场中只有X和Y两种变量,X一般是给定的,而Y一般是在给定X的条件下我们的输出。

    线性链条件随机场(linear-CRF):X和Y有相同的结构(长度相同)的CRF

    CRF模型在训练时,给定训练序列样本集(X,Y),通过极大似然估计、梯度下降等方法确定CRF模型的参数;预测时,给定输入序列X,根据模型,用维特比算法求出P(Y|X)最大的序列y(这里注意,LSTM输出的是一个个独立的类别,CRF输出的是最优的类别序列,也就是CRF全局的优化要更好一些)。

    本质思想

    某一个时刻状态由所有观测值(在CRF中,X序列作为一个整体看)以及上一个时刻状态决定。具体的,分为

    1. 节点特征共L个,满足特征为1,表示输入为X的第i个位置输出(标记)为y_i在第l个特征的特征值。

    s_l(y_i, x,i),\;\; l =1,2,...L

    1. 上下文特征K个,满足特征为1

    t_k(y_{i-1},y_i, x,i),\;\; k =1,2,...K

    对各个特征加上权重,得到:

    P(y|x) = \frac{1}{Z(x)}exp\Big(\sum\limits_{i,k} \lambda_kt_k(y_{i-1},y_i, x,i) +\sum\limits_{i,l}\mu_ls_l(y_i, x,i)\Big)


    对于满足特征 ,理解为:事先有一些规则,如果满足规则,则为1,如给定Y \in \{1(名词),2(动词)\}

    t_1 =t_1(y_{i-1} = 1, y_i =2,x,i), i =2,3...\;\;\lambda_1=1

    s_1 =s_1(y_1=1,x,1)\;\;\mu_1 =1

    表示认为第1个上下文特征为:名词+动词形式的权重为1;第1个节点特征为:位置为1是名词的权重为1。


    统一特征

    i表示节点在序列的位置,统一化特征后:

    P(y|x) = \frac{1}{Z(x)}exp\sum\limits_{k=1}^Kw_kf_k(y,x), 其中 f_k(y,x) = \sum\limits_{i=1}^nf_k(y_{i-1},y_i, x,i)

    给定x,算某个y的条件概率:遍历i(位置)和k(特征),满足特征则为1,然后求和,最后归一化,即可以得到在输入为X序列情况下,输出为y序列的条件概率。

    内积形式

    进一步,可以将w_k和f_k用向量表示:

    w=(w_1,w_2,...w_K)^T\;\;\; F(y,x) =(f_1(y,x),f_2(y,x),...f_K(y,x))^T

    则,Linear-CRF就是可以化为内积形式:

    P_w(y|x) = \frac{exp(w \bullet F(y,x))}{Z_w(x)} = \frac{exp(w \bullet F(y,x))}{\sum\limits_{y}exp(w \bullet F(y,x))}

    训练过程

    在满足特征那里说了要有一些规则,那么如何在给定一些训练数据的情况下,得到那些规则呢?

    我们可以看到,那些规则可以人为制定,但是权重w不好定。可以使用梯度下降法求解极大似然估计概率。

    预测过程(解码)——维特比算法

    维特比算法:动态规划思想,利用了两个局部状态(当前状态最大值以及当当前状态取最大值时上一个状态的值)和对应的递推公式,从局部递推到整体,进而得解。

    输入:模型的k个特征函数及对应的权重,观测序列x=(x_1,x_2,...x_n),标记个数m

    输出:最优标记序列y^* =(y_1^*,y_2^*,...y_n^*)

    1) 初始化,\Psi_{i}(l)表示\delta_{i}(l)取最大值时,前一时刻的状态。

    \delta_{1}(l) = \sum\limits_{k=1}^Kw_kf_k(y_{0} =start,y_{1} = l,x,i)\}\;, l=1,2,...m

    \Psi_{1}(l) = start\;, l=1,2,...m

    2)对于i=1,2...n-1,进行递推:

    \delta_{i+1}(l) = \max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\;, l=1,2,...m

    \Psi_{i+1}(l) = arg\;\max_{1 \leq j \leq m}\{\delta_i(j) + \sum\limits_{k=1}^Kw_kf_k(y_{i} =j,y_{i+1} = l,x,i)\}\; ,l=1,2,...m

    3)终止:

    y_n^* = arg\;\max_{1 \leq j \leq m}\delta_n(j)

    4) 回溯:

    y_i^* = \Psi_{i+1}(y_{i+1}^*)\;, i=n-1,n-2,...1

    总结

    根据预料和给定的规则,训练出来每个规则的权重,可以给固定长度的序列打标签,考虑了结构但没有考虑句子语义上的信息,预测时每个3个长度的输入输出都一样?

    没有考虑后面的词对前面的词的影响,但是特征里面可以自己定义,比如词长度大于10为名词概率为0.6等等。

    3. svm

    需要将文本向量化 :分词,然后用pLSA,LDA,word2vec等提取特征。

    训练:每个词及上下文特征为输入X,该词实体名词为输出Y

    不能使用到上下文分类的结果。

    相关文章

      网友评论

          本文标题:实体识别

          本文链接:https://www.haomeiwen.com/subject/szjknftx.html