语言模型里的马尔可夫假设
统计分词通过建立语言模型对分词结果进行概率运算从而得到更好的分词结果,一般有HMM(隐式马尔可夫模型)和CRF(条件随机场)。
P(S) = p(w1,w2,w3,w4,w5,w6,…,wn) = p(w1) * p(w2|w1) * p(w3|w1,w2) * … * p(wn|w1,w2,wn-1)
p(S)就是语言模型,用来计算一个句子的概率,依靠的是这个句子的各个词
可以发现计算出完美的p(S),就要计算所有词的联合概率,就要考虑每个词和这个词前面所有词的关系,显然这个计算不切实际。考虑的上文越多越容易出现稀疏性问题。
马尔可夫假设:估计上面这个不好计算的概率。不考虑这么多关系,每个词只和前面有限个词有关
零阶马尔可夫(unigram):只考虑当前词和前面0个单词有关,也就是每个单词是独立的
一阶马尔可夫(bigram):只考虑当前词和前面一个单词有关,也就是考虑当前单词和前面的单词的关系(最常用的)
二阶马尔可夫():只考虑当前词和前面二个单词有关
三阶。。。。
N阶马尔可夫(N-gram):只考虑当前词和前面n-1个单词有关
具体要怎么做到呢?
unigram:
需要一个语料库,统计各个单词在这个语料库里出现的概率,相乘即可
bigram:
需要一个语料库,统计各个单词出现在前面那个单词后面的概率,相乘即可
有等于0的情况,则借助于平滑操作,具体以后会补充
简单的做法是人工把概率为0写成一个较低的概率