用动态规划建立中文分词的语言模型

===============================================================================

如有需要可以转载,但转载请注明出处,并保留这一块信息,谢谢合作!

部分内容参考互联网,如有异议,请跟我联系!

作者:刀剑笑(Blog:http://blog.csdn.net/jyz3051)

Email:jyz3051 at yahoo dot com dot cn('at'请替换成'@','dot'请替换成'.' )

===============================================================================

 

关键词:中文分词,中文分词语言模型,动态规划

 

前面的文章中(详细请参见"中文分词的语言模型"),我们给出了能够融合三种分词算法的语言模型,该模型能够融合目前出现的所有三种分词算法,并将该语言模型用一个统一的概率模型表示出来:给出原子系列,最有可能出现的中文词语系列就是我们需要的最终分词结果,可表示如下:

W* = max P(W)/P(A) = max P(w1w2w3……wk)/P(A)

最后,我们给出了求解该模型的网络示意,中文分词就成为求解最大概率的路径,中文分词过程就变成了以下的两个过程:

找出所有可能的从"S##S"到"E##E"的路径;

找出所有路径中,有最大可能出现的路径;

下面我将这种介绍如何建立动态规划模型。

最优路径指从"S##S"到"E##E"最有可能出现的词语系列,这包括两个方面的问题:1)这些词语同时出现的概率,同时出现的概率越大,则该系列越有可能;2)这些词语以这个顺序出现的概率,以这个顺序出现的概率越大,则该系列越有可能;这中间还有一个隐含的问题没有揭露出来,即假设这些组合(原子或词语)就是所有的可能,所以并没有涉及到未登录词识别的问题。因为我要建立一个统一的分词框架,故应该还包括第三个问题:3)这些词语(或原子)出现的概率,词语(或原子)出现的可能性越大,则越有可能出现,成为最优路径。当然问题1)和问题2)可以合并,从而得到以下的两个问题:

  1. 这些词语(或原子)本身出现的概率多大;
  2. 这些词语(或原子)以这个顺序同时出现的概率多大;

两者综合的概率越大,则越有可能形成这个系列,从而越有可能成为我们的最优分词结果。

综合这两个问题,某个路径L出现的概率可以表示为:

P(L) = P(w2|w1)P(w3|w1w2) P(w4|w1w2w3) ……P(wk|w1w2w3…w(k-1))

*P(w1) P(w2) P(w3)…… P(wk)

如路径L1"李/胜利///确实/在理/ E##E"中,词语系列W={李,胜利,说,的,确实,在理},则这条路径出现的概率可以表示为:

P(L1) = P(胜利|) * P(|李胜利) * P(|李胜利说) * P(确实|李胜利说的)

* P(在理|李胜利说的确实)

* P() P(胜利) P() P() P(确实) P(在理)

此时,需要得到各个词语的概率P(W),以及"李胜利"、"李胜利说"、"李胜利说的"、"李胜利说的确实"的概率。在实际应用系统中,前一种概率完全是可以穷举得到的,就是词典中词语出现的概率,而后一种字符串是无穷无尽的,全部计算它们的概率是几乎不可能的,故在实际应用中常常进行简化,即只认为后一个词语wi+1仅仅与前面一个词语wi相关,仅仅受wi的影响,而不受wi-1wi-2……w1等的影响,实践证明这种方法是一种很有效的方法。

在这个假设下,路径L的概率计算公式为:

P(L) = P(w2|w1) * P(w3|w2) * P(w4|w3) *……* P(wk|w(k-1))

*P(w1) * P(w2) * P(w3)…… * P(wk)

结合上面出现的"动态规划路径图"可以看出,p(wi|wi-1)表示在前一个词出现的情况下,后一个词出现的概率,即图形中"边"的权重,而P(wi)则表示某个词语出现的概率,即图中"结点"的权重。

此时,可以得到一个标注权重的"动态规划路径图",示意图如下:

经过这个转换之后,我们就把中文分词过程(找出最大概率的词语系列)转换成了寻找一条从"S##S"到"E##E"最大可能路径的问题,很明显这是一个动态规划问题。其中:

  1. 结点上的权重表示该结点出现的可能性;
  2. 边上的权重表示两个"结点"按照该顺序出现的可能性;

 

 

 

posted on 2008-11-01 22:48  刀剑笑  阅读(660)  评论(0)    收藏  举报

导航