先简单介绍下分词,分词就是要把一个句子分成各个单独的词汇。对于西方语言来说,它们具有天然的分隔符(也就是空格),但是东方语言多基于characeter(也就是字符),不同的字符之间的组合可能会有多种不同的意思,这就造成了东方语言分词特有的困难。

1. 基于词典的分词

最简单也是最直接的方法就是查词典,我们从左到右扫面一遍句子,遇到可以在词典中可以知道的词汇就把它分出来。这种方法当然是比较快捷的,但是同时它没有考虑到不同汉字组合会给句子带来歧异的问题,例如,按照基于词典的分词方法,“发展中国家”应该分词为“发展\中国\家”,这显然是有歧异的,正确的分词应该是“发展\中\国家”。

怎样克服该类问题呢,这时候我们考虑引入统计语言模型,从概率的角度解决分词问题。

2. n-gram分词模型

考虑使用概率模型为分词建模,假定一个句子S可以有三种分词方法:

                                                                    

机器学习分词原理 分词理论_文本挖掘

那么分词最好的方法应该有最大的概率,举个例子,如果A序列是最好的分词方法,那么必须有    

                                       

机器学习分词原理 分词理论_机器学习分词原理_02

这样,我们可以知道基本最优分词是一个求最值问题,可以表示为

机器学习分词原理 分词理论_文本挖掘_03

,series 表示分词序列。一个已经句子出现的概率怎样去计算呢?按照马尔可夫假设,我们可以将像A序列这样的句子发生概率表示为:                                     

机器学习分词原理 分词理论_搜索_04

而P(A(k)|A(k-1))可以通过对于语料的统计方法(也就是n-gram方法)获取。可以看出,找到最优的分词现在转化为了一个搜索问题。当然,利用暴力搜索是不现实的,我们在这里使用动态规划算法搜索出最优分词。

3. 词性标记模型

除了上面介绍的分词方法,hmm也可以应用到分词当中,我们可以把分词转化为类似词性标注的问题。例如我们现在定义几个类别:B(词首)、M(词中)、E(词尾)、S(单独成词),于是“我爱北京天安门”的分词“我\爱\北京\天安门”可以标注为:       “SSBEBME”。既然是词性标注问题,我们当然可以使用HMM或者CRF的方法来解决。

如果标注序列X是HMM中的隐含变量,具体词汇O是HMM中的观察序列,那么原始分词问题转化为:

已知观察序列O,

已知HMM的三要素 

机器学习分词原理 分词理论_搜索_05

 (这里AB还有pi都是可以提前通过其它语料统计得出)

求取最可能的隐藏状态变量X。

很明显,这就是HMM的预测问题。该类问题可以使用维特比算法来解决,我在博客隐马尔科夫知识点(HMM)总结中已有介绍,在此不赘述。

参考文献:

[1] 文本挖掘的分词原理

[2] 数学之美 -- 吴军