Coursera自然语言处理 Week2 笔记

第二周的课程讲了TAGGING问题,即如何给句子tag上词态。

比如说,如果输入:The dog laughs,就需要模型输出:DT NN VB

整个Tagging模型可以抽象成如下结构:

现在将这个抽象结构转换成概率模型。

1. 概率模型-HMM

输入:一句话 S={x1,x2,x3,...,xn}

Tagging过程:在现有tags中寻找一组 tags={y1,...,yn} ,使得 P(y1,...,yn|x1,...,xn) 最大,即:

y1,y2,...,yn=argminy1,...,ynP(y1,...,yn|x1,...,xn)

输出: tags={y1,y2,y3,...,yn}

下面推导 Tagging过程:

argminy1,...,ynP(y1,...,yn|x1,...,xn)=argminy1,...,ynP(x1,...,xn|y1,...,yn)P(y1,...,yn)P(x1,...,xn) =argminy1,...,ynP(x1,...,xn|y1,...,yn)P(y1,...,yn)

其中, P(y1,...,yn) 可以根据Week1中讲到的Markov Process近似得到(Trigram):

P(y1,...,yn)=i=1nP(yi|yi1,yi2)

然后对于 P(x1,...,xn|y1,...,yn) ,可以假设 xi 只与 yi 有关,则:

P(x1,...,xn|y1,...,yn)=P(x1|y1)P(x2|y2)...P(xn|yn)=i=1nP(xi|yi)

于是tagging过程可以写成如下形式:

y1,y2,...,yn=argminy1,...,yni=1nP(yi|yi1,yi2)i=1nP(xi|yi)

为方便起见,在 y1,...,yn 中增加 y1=y0= yn+1=STOP ,再令 q(yi|yi1,yi2)=P(yi|yi1,yi2) e(xi|yi)=P(xi|yi) 于是上式改写成:

y1,y2,...,yn=argminy1,...,yni=1n+1q(yi|yi1,yi2)i=1ne(xi|yi)

惊奇地发现,隐马尔科夫模型出现了,其中 n+1i=1q(yi|yi1,yi2) 就是隐马尔可夫链, ni=1e(xi|yi) 被称为emission probability。

2. 求解概率模型

一般的思想就是穷举所有可能的 tags={y1,...,yn} ,计算对应的 P(y1,...,yn|x1,...,xn) ,然后选取使概率最大的tags。穷举的效率肯定是十分低的,优化的方式就是“动态规划”。下面介绍动态规划算法“Viterbi Algorithm”。

2.1 Viterbi算法

假设前 k1 个tags已经选择好了,即 (y1,y2,...,yk1) 已经使 P(x1,...,xk1,y1,...,yk1) 最大了;接下来考虑第 k 个tag的选择。

选择的这个tag yk得让 P(x1,...,xk1,xk,y1,...,yk1,yk) 最大,而:

P(x1,...,xk1,xk,y1,...,yk1,yk)=i=1k1q(yi|yi1,yi2)i=1k1e(xi|yi)×q(yk|yk1,yk2)e(xk|yk)

即只要让 q(yk|yk1,yk2)e(xk|yk) 最大即可。

以上便是动态规划Viterbi的思想。

3. 概率参数求解

回顾一下,模型如下:

y1,y2,...,yn=argminy1,...,yni=1n+1q(yi|yi1,yi2)i=1ne(xi|yi)

其中参数有 q(yi|yi1,yi2) e(xi|yi)

从训练数据集中,根据大数定律,用频率来近似概率,则有:

q(yi|yi1,yi2)=#(yi2,yi1,yi)#(yi2,yi1)

其中 #(yi2,yi1,yi) #(yi2,yi1) 都有可能为0,解决办法就是在week1中讲过Linear Interpolation smoothing;

然后有:

e(xi|yi)=#(xi,yi)#(yi)

其中 #(xi,yi) 也有可能为0,为0的原因是 xi 没有在训练集中出现过,解决办法是对训练数据集进行分类:

  1. 经常出现的词:保留其原名称

  2. 非常稀有的词:对这些词进行类别分类,将原有名称替换成类别名称,这样一来,对于没有出现过的 xi ,只要将其分入类别中就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值