1. 程式人生 > >對語言模型N-gram的理解

對語言模型N-gram的理解

今天我們一起來學習一下語言模型N-gram,首先我們來用數學的方法來描述一下語言的規律,這個數學模型就是我們在自然語言處理中的統計語言模型(Statistical Language Model)。在自然語言處理中,所謂的一個句子是否合理通順,就看這個句子的可能性,這裡的可能性就要用概率來衡量。同一種意思的句子,不同種的表達形式,哪種形式出現的概率最大,那麼就表示這個句子是最合理的。
在每一個句子中,我們可以用詞來做為組成句子的最小單位,我們舉個栗子,假設一個句子S是由n個詞w1、w2…wn組成的,那麼這個句子存在的可能性為P(S),很容易理解得到P(S)=P(w1,w2…wn),也就是n個詞從w1到wn依次排列的可能性,我們回顧一下概率論裡面的條件概率,這個在之前的貝葉斯理論中也介紹過,我們可以用公式來表示:

P ( A | B ) = P
( A B ) / P ( B ) P ( A B )
= A ( A | B ) P ( B )

在B的事件已經發生的情況下發生A事件的概率等於A和B事件同時發生的概率除以B事件的概率,同時我們可以得到A和B事件同時發生的概率等於B事件發生情況下A事件的概率乘以B事件的概率。有了這個公式,我們可以得到:

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 )

我們在使用百度搜索的時候會有相關的推薦搜尋,如下圖所示:
相關搜尋

當我在搜尋深圳的時候,下面列表會彈出相關的含有深圳關鍵字的搜尋,這個也可以理解成這些詞的條件概率:P(天氣|深圳)、P(房產網|深圳)、P(大學|深圳)、P(社保|深圳)都是相對來說比較高的。在這個公式中,P(w1)表示w1這個詞出現的概率,P(w2|w1)表示w2接在w1詞後面的概率,同理P(w3|w1,w2)表示詞w3接在w1和w2後面的概率。一般來說,計算詞概率的時候,都是用詞頻除以詞庫的詞數,這樣的話,P(w1)其實不難計算,但是P(w2|w1)和P(w3|w1,w2)就很難計算出來了,因為這種條件概率涉及到的變數很多了。為了解決這樣的問題,我們這裡引入一個馬爾可夫假設,具體是這樣的:我們假設一個詞wn出現的概率只和這個詞前面的詞wi-1有關,這樣就可以簡化前面的公式了:

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 )

在引入了這個馬爾可夫假設之後,計算整句話可能性機變得簡單許多。上述的這個公式所對應的統計語言模型就是二元模型(Bigram model)。同樣的道理,我們可以得到,當一個詞的概率由前面N-1個詞所決定,那麼這個就是N元模型,一般來說中文N-gram模型的N不會超過4,N越大,那麼計算量就越大。當N=1的時候,一元模型的計算可以寫成:

P ( w 1 , w 2 , . . . , w n ) = P ( w 1 ) P ( w 2 ) P ( w n )

三元模型(Trigram)可以寫成:

P ( w 1 , w 2 , . . . , w n ) = P ( w 1 ) P ( w 2 | w 1 ) P ( w 3 | w 1 , w 2 ) P ( w 4 | w 2 , w 3