概率语言模型分词方法

4.6  概率语言模型的分词方法

从统计思想的角度来看,分词问题的输入是一个字串C=C1,C2,……,Cn,输出是一个词串S=W1,W2,……,Wm,其中m<=n。对于一个特定的字符串C,会有多个切分方案S对应,分词的任务就是在这些S中找出概率最大的一个切分方案,也就是对输入字符串切分出最有可能的词序列。

 

例如对于输入字符串C"有意见分歧",有S1和S2两种切分可能。

S1:有/  意见/  分歧/

S2:有意/  见/  分歧/

计算条件概率P(S1|C)和P(S2|C),然后采用概率大的值对应的切分方案。根据贝叶斯公式,有 。

其中P(C)是字符串在语料库中出现的概率,只是一个用来归一化的固定值。从词串恢复到汉字串的概率只有唯一的一种方式,所以P(C|S)=1。因此,比较P(S1|C)和P(S2|C)的大小变成比较P(S1)和P(S2)的大小。

概率语言模型分词的任务是:在全切分所得的所有结果中求某个切分方案S,使得P(S)最大。那么,如何来表示P(S)呢?为了容易实现,假设每个词之间的概率是上下文无关的,则:

 

其中,对于不同的S,m的值是不一样的,一般来说m越大,P(S)会越小。也就是说,分出的词越多,概率越小。这符合实际的观察,如最大长度匹配切分往往会使得m较小。计算任意一个词出现的概率如下:

 


因此

 

从另外一个角度来看,计算最大概率等于求切分词图的最短路径。但是这里不采用Dijkstra算法,而采用动态规划的方法求解最短路径。

常用的词语概率表如表4-3所示。

表4-3  词语概率表

词语

概率

0.0180

有意

0.0005

意见

0.0010

0.0002

分歧

0.0001

P(S1) = P(有)   P(意见)   P(分歧) = 1.8 × 10-9

P(S2) = P(有意)   P(见)   P(分歧) = 1×10-11

可得P(S1) > P(S2),所以选择S1对应的切分。

如何尽快找到概率最大的词串?因为假设每个词之间的概率是上下文无关的,因此满足用动态规划求解所要求的最优子结构性质和无后效性。在动态规划求解的过程中并没有先生成所有可能的切分路径Si,而是求出值最大的P(Si)后,利用回溯的方法直接输出Si。

到节点Nodei为止的最大概率称为节点Nodei的概率:

 

如果Wj的结束节点是Nodei,就称Wj为Nodei的前驱词。这里的prev(Nodei)就是节点i的前驱词集合。

比如上面的例子中,候选词"有"就是节点1的前驱词,"意见"和"见"都是节点3的前驱词。

StartNode(wj)是wj 的开始节点,也是节点i的前驱节点。

因此切分的最大概率max(P(S))就是P(Nodem)=P(节点m的最佳前驱节点) P(节点m的最佳前驱词)。

按节点编号,从前往后计算如下:

P(Node0)=1

P(Node1)= P(有)

P(Node3)= P(Node1) P(意见)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值