统计语言模型-词向量-中文分词-jieba/wordcloud-分类算法
目录
一、基本理论
1.统计语言模型
假设一个句子为S,它由 w 1 , w 2 , . . . , w n w_1,w_2,...,w_n w1,w2,...,wn这n个词语组成,如果我们由人类历史上出现的全部语言和文字资料(称之为语料库),只要看一下S这个句子在整个预料库中出现的次数就可知道这句话出现的概率,显然,这样的预料库是不可能存在的,那么我们就需要通过概率方法对S的出现概率进行估计:
P ( S ) = P ( w 1 , w 2 , . . . , w n ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 , w 2 ) ⋅ ⋅ ⋅ P ( w n ∣ w 1 , w 2 , . . . , w n − 1 ) ( 1 ) P(S)=P(w_1,w_2,...,w_n)=P(w_1)P(w_2|w_1)P(w_3|w_1,w_2)···P(w_n|w_1,w_2,...,w_{n-1}) (1) P(S)=P(w1,w2,...,wn)=P(w1)P(w2∣w1)P(w3∣w1,w2)⋅⋅⋅P(wn∣w1,w2,...,wn−1)(1)
然而这种方法存在一个弊端,就是条件越多的概率涉及的变量越多,越难计算。于是马尔可夫提出了一个假设:任意一个词语 w i w_i wi出现的概率只同它前面的词 w i − 1 w_{i-1} wi−1有关。那么上面的公式可以重写为:
P ( S ) = P ( w 1 , w 2 , . . . , w n ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 2 ) ⋅ ⋅ ⋅ P ( w n ∣ w n − 1 ) ( 2 ) P(S)=P(w_1,w_2,...,w_n)=P(w_1)P(w_2|w_1)P(w_3|w_2)···P(w_n|w_{n-1}) (2) P(S)=P(w1,w2,...,wn)=P(w1)P(w2∣w1)P(w3∣w2)⋅⋅⋅P(wn∣wn−1)(2)
模型(2)称为"二元模型",(1)称为”n元模型”。看似2元模型相比n元模型由很多的不合理的情况,但是在实际情况种二元模型的成本收益比要远远好于n元模型。
P ( w i ∣ w i − 1 ) = f ( w i − 1 , w i ) f ( w i − 1 ) ( 3 ) P(w_i|w_{i-1})=\frac{f(w_{i-1},w_i)}{f(w_{i-1})} \, (3) P(wi∣wi−1)=f(wi−1)f(wi−1,wi)(3)
但是由公式(3)可以看到,这样的公式存在一个漏洞那就是 f ( w i − 1 , w i ) = 0 f(w_{i-1},w_i)=0 f(wi−1,wi)=0,也就是无论语料库多大也会存在不包含的词语。
古德-图灵设计
对于没有观测到的事件,不能认维它发生的概率就是0,而应当从概率总量种分配一个很小的比例给这些没有观察的事件,既然要给这部分没有观测到的事件分配概率,那么就一定有一部分观测到的事件发生的概率要衰消减,被消减的这部分就是“可信度小的”,对这些观测出现的概率“打折扣”。
齐夫定律(zipf定律)
在自然语言的语料库里,一个单词出现的频率与它在频率表里的排名成反比。所以,频率最高的单词出现的频率大约是出现频率第二位的单词的2倍,而出现频率第二位的单词则是出现频率第四位的单词的2倍。这个定律被作为任何与幂定律概率分布有关的事物的参考。
对于二元组 ( w i , w i − 1 ) (w_i,w_{i-1}) (wi,<