N-gram是機器學習中NLP處理中的一個較爲重要的語言模型,經常使用來作句子類似度比較,模糊查詢,以及句子合理性,句子矯正等. 再系統的介紹N-gram前,咱們先了解一下這幾種機率.機器學習
形如:p(W1,....,Wn); 表示的意思是: w1,...Wn同時發生的機率.列舉一個具體的例子說明:學習
P(A,B) ,表示的是A,B同時發生的機率.blog
1.1 當A,B相互獨立時,也就是交集爲空的時候,P(A,B) = P(A)P(B)事件
1.2 當A,B相關聯的時候,或者說存在交集的時候,P(A,B) = P(A)P(B|A),以下圖所示table
總的樣本數爲T,A的樣本數爲7,B的樣本數爲6,A,B相同的樣本數爲2擴展
那麼:im
P(A,B) =2/T統計
1.3 1.2處的公式簡化到通常形式:數據
P(w1,w2,w3) = P(W1)P(W2|W1)P(W3|W1,W2)圖表
通常形式爲: P(W1,W2,..,Wn) = P(W1)P(W2|W1)...(Wn|Wn-1,...,W2,W1);
抽象爲:
P(W1,W2,...,Wn) = ∏ni P(wi|w1,w2,..wi-1) (累乘)
形如: P(A|B), 當某一系列事件放生時,該事件發生的機率.,如上圖中的韋恩圖所示:
P(A|B) = P(A,B)/P(A) = 2/7
咱們將其擴展到通常形式:
P(A|B,C) = P(A,B,C) / P(B,C) = P(A,B,C) / ( P(B|C) P(C) )
N-gram是依據一個預料庫中,對於單詞的統計,來計算. N-gram常見的有1-gram(一元模型),2-gram(二元模型) ,3-gram(三元模型);
在語義上只認爲相近的幾個詞有關聯 ,若是用韋恩圖表示:
3.1 對於一元模型(1-gram),每一個詞都是獨立分佈的,也就是對於P(A,B,C) 其中A,B,C互相之間沒有交集. 因此P(A,B,C) = P(A)P(B)P(C)
好比語句:「貓,跳上,椅子」 ,P(A="貓",B="跳上",C="椅子") = P("貓")P(「跳上」)P("椅子");其中各個詞的數量數語料庫中統計的數量
貓 | 跳上 | 椅子 | |
13 | 16 | 23 |
依據這些數據就能夠求出P(A,B,C),也就是這個句子的合理的機率.
P(A,B,C) = P(A)P(B)P(C) =13/M * 16/M * 23/M
3.2 對於二元模型,每一個詞都與它左邊的最近的一個詞有關聯,也就是對於P(A,B,C) = P(A)P(B|A)P(C|B)
好比語句:「貓,跳上,椅子」 ,P(A="貓",B="跳上",C="椅子") = P("貓")P(「跳上」|「貓」)P("椅子"|「跳上」);其中各個詞的數量數語料庫中統計的數量
貓 | 跳上 | 椅子 | |
貓 | 0 | 9 | 1 |
跳上 | 0 | 3 | 15 |
椅子 | 0 | 0 | 0 |
依據這些圖表一和圖表二就能夠求出P(A,B,C),也就是這個句子的合理的機率.
P(A,B,C) = P(A)P(B|A)P(C|B)
p(A) = 13/M
P(B|A) =9/13
p(C|B) = 15/16
3.3 對於三元模型,每一個詞都與它左邊的最近的兩個詞有關聯. 計算同上.
對於一個訓練好的模型,咱們須要評估模型的好壞,N-gram經常使用的評估方式是:
pp(w1,w2,...,Wn) = p(w1,w2,...,Wn)-1/n
咱們以上面的一元模型和二元模型來爲例,進行評估計算.
pp(w1,w2,...,Wn)1 = (13/M * 16/M * 23/M)-1/3 = (12*16*23)-1/3*M 一元模型
pp(w1,w2,...,Wn)2 = (13/M * 9/13 * 15/ 16)-1/3 = (9*15/(16M))-1/3 二元模型
能夠看出二元模型比一元模型的值要小,而值越小說明模型越好.