N-gram模型

N-Gram是大詞彙連續語音識別中常用的一種語言模型,對中文而言,我們稱之爲漢語語言模型(CLM, Chinese Language Model)。漢語語言模型利用上下文中相鄰詞間的搭配信息,在需要把連續無空格的拼音、筆劃,或代表字母或筆劃的數字,轉換成漢字串(即句子)時,可以計算出具有最大概率的句子,從而實現到漢字的自動轉換,無需用戶手動選擇,避開了許多漢字對應一個相同的拼音(或筆劃串,或數字串)的重碼問題。

 

  該模型基於這樣一種假設,第n個詞的出現只與前面N-1個詞相關,而與其它任何詞都不相關,整句的概率就是各個詞出現概率的乘積。這些概率可以通過直接從語料中統計N個詞同時出現的次數得到。常用的是二元的Bi-Gram和三元的Tri-Gram。

 

     在介紹N-gram模型之前,讓我們先來做個香農遊戲(Shannon Game)。我們給定一個詞,然後猜測下一個詞是什麼。當我說“豔照門”這個詞時,你想到下一個詞是什麼呢?我想大家很有可能會想到“陳冠希”,基本上不會有人會想到“陳志傑”吧。N-gram模型的主要思想就是這樣的。

 

   對於一個句子T,我們怎麼算它出現的概率呢?假設T是由詞序列W1,W2,W3,…Wn組成的,那麼P(T)=P(W1W2W3Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)

 

 

 

補充知識:

 

 

 

 

 

 

 

 

   但是這種方法存在兩個致命的缺陷:一個缺陷是參數空間過大,不可能實用化;另外一個缺陷是數據稀疏嚴重。

 

   爲了解決這個問題,我們引入了馬爾科夫假設:一個詞的出現僅僅依賴於它前面出現的有限的一個或者幾個詞。

 

   如果一個詞的出現僅依賴於它前面出現的一個詞,那麼我們就稱之爲bigram。即

   P(T) = P(W1W2W3…Wn)=P(W1)P(W2|W1)P(W3|W1W2)…P(Wn|W1W2…Wn-1)

          ≈P(W1)P(W2|W1)P(W3|W2)…P(Wn|Wn-1)

 

   如果一個詞的出現僅依賴於它前面出現的兩個詞,那麼我們就稱之爲trigram。

 

   在實踐中用的最多的就是bigram和trigram了,而且效果很不錯。高於四元的用的很少,因爲訓練它需要更龐大的語料,而且數據稀疏嚴重,時間複雜度高,精度卻提高的不多。

 

   那麼我們怎麼得到P(Wn|W1W2…Wn-1)呢?一種簡單的估計方法就是最大似然估計(Maximum Likelihood Estimate)了。即P(Wn|W1W2…Wn-1) = (C(W1 W2…Wn))/(C(W1 W2…Wn-1))

 

剩下的工作就是在訓練語料庫中數數兒了,即統計序列C(W1 W2…Wn) 出現的次數和C(W1 W2…Wn-1)出現的次數。

 

               下面我們用bigram舉個例子。假設語料庫總詞數爲13,748

 

 

   

 

   P(I want to eat Chinese food)

=P(I)*P(want|I)*P(to|want)*P(eat|to)*P(Chinese|eat)*P(food|Chinese)

=0.25*1087/3437*786/1215*860/3256*19/938*120/213

=0.000154171                                                                                                                                                                                               

 

 

 

    ps:網上很多資料中,表1,詞與詞頻的張表是沒有的,所以造成文章表意不清。

 

     這裏還有一個問題要說,那就是數據稀疏問題了,假設詞表中有20000個詞,如果是bigram那麼可能的N-gram就有400000000個,如果是trigram,那麼可能的N-gram就有8000000000000個!那麼對於其中的很多詞對的組合,在語料庫中都沒有出現,根據最大似然估計得到的概率將會是0,這會造成很大的麻煩,在算句子的概率時一旦其中的某項爲0,那麼整個句子的概率就會爲0,最後的結果是,我們的模型只能算可憐兮兮的幾個句子,而大部分的句子算得的概率是0. 因此,我們要進行數據平滑(data Smoothing),數據平滑的目的有兩個:一個是使所有的N-gram概率之和爲1,使所有的N-gram概率都不爲0.有關數據平滑的詳細內容後面會再講到,這裏不再贅述。

 

 

 

   瞭解了噪聲信道模型和N-gram模型的思想之後,其實我們自己就能實現一個音詞轉換系統了,它是整句智能輸入法的核心,其實我們不難猜到,搜狗拼音和微軟拼音的主要思想就是N-gram模型的,不過在裏面多加入了一些語言學規則而已。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章