N-gram基本原理


N-gram模型是一種語言模型(Language Model,LM),語言模型是一個基於概率的判別模型,它的輸入是一句話(單詞的順序序列),輸出是這句話的概率,即這些單詞的聯合概率(joint probability)。

 

N-gram本身也指一個由N個單詞組成的集合,考慮單詞的先后順序,且不要求單詞之間互不相同。常用的有 Bi-gram (N=2N=2N=2) 和 Tri-gram (N=3N=3N=3),一般已經夠用了。例如在上面這句話里,我可以分解的 Bi-gram 和 Tri-gram :

Bi-gram : {I, love}, {love, deep}, {love, deep}, {deep, learning}
Tri-gram : {I, love, deep}, {love, deep, learning}N-gram中的概率計算

聯合概率的簡單推導過程:A,B,C三個有順序的句子。

由於

P(C/(A,B))=P(A,B,C)/P(A,B)

P(B/A) = P(A,B)/P(B)

所以

P(C/(A,B))=P(A,B,C)/(P(B/A) *P(B))

P(A,B,C) = P(C/(A,B))*P(B/A) *P(B)

所以我們可以很容易的得到上面的多個單詞的聯合概率,但是由於存在參數空間過大等問題,我們可以僅僅考慮之前的一個或者幾個詞的前提條件的聯合概率,可以降低時間復雜度,減少計算量。

然后通過極大似然函數求解上面的概率值

是從整個數據庫中去計算上述的概率值,而不是一整句話。

1、可以用於詞性標注,類似成多分類的情況:

例如:我愛中國!

判斷愛的詞性可以通過P(詞性i/(名詞我出現,愛字出現))=P(名詞我出現,愛字不同的詞性)/P(名詞的我出現,愛字所有出現的次數)

2、可以用於垃圾短信分類:

  • 步驟一:給短信的每個句子斷句。
  • 步驟二:用N-gram判斷每個句子是否垃圾短信中的敏感句子。
  • 步驟三:若敏感句子個數超過一定閾值,認為整個郵件是垃圾短信。

3、用於分詞作用

在NLP中,分詞的效果很大程度上影響着模型的性能,因此分詞甚至可以說是最重要的工程。用N-gram可以實現一個簡單的分詞器(Tokenizer)。同樣地,將分詞理解為多分類問題:X表示有待分詞的句子,Yi表示該句子的分詞方案:
X=""

Y1={"","",""}

Y2={"","","",""}

Y3={"","",""}

 

p(Y1)=p()p()p()

p(Y2)=p()p()p()p()

p(Y3)=p()p()p()

三個概率中,“我愛”可能在語料庫中比較常見,因此p(愛∣我)p(愛|我)p(愛∣我)會比較大,然而“我愛深”這樣的組合比較少見,

於是p(愛深∣我)p(愛深|我)p(愛深∣我)和p(深∣我愛)p(深|我愛)p(深∣我愛)都比較小​ ,因此第三種分詞方案最佳。

語音識別和機器翻譯中也用到。

 

N-gram中的數據平滑方法  

      由於N-gram的N越大,模型效果越好。這在直觀意義上是說得通的,畢竟依賴的詞越多,我們獲得的信息量越多,對未來的預測就越准確。然而,語言是有極強的創造性的(Creative),當N變大時,更容易出現這樣的狀況:某些n-gram從未出現過,這就是稀疏問題。  

     n-gram最大的問題就是稀疏問題(Sparsity)。例如,在bi-gram中,若詞庫中有20k個詞,那么兩兩組合就有近2億個組合。其中的很多組合在語料庫中都沒有出現,根據極大似然估計得到的組合概率將會是0,從而整個句子的概率就會為0。最后的結果是,我們的模型只能計算零星的幾個句子的概率,而大部分的句子算得的概率是0,這顯然是不合理的。

  因此,我們要進行數據平滑(data Smoothing),數據平滑的目的有兩個:一個是使所有的N-gram概率之和為1,使所有的n-gram概率都不為0。它的本質,是重新分配整個概率空間,使已經出現過的n-gram的概率降低,補充給未曾出現過的n-gram。

為了解決稀疏問題和參數空間過大的問題,從機器學習的角度看N-gram模型:

vi*hi代表利用神經網絡學習出來的預測值,利用預測值與真實的概率值的差值作為損失函數。

 

 v和h通過上述這種網絡結構進行學習,然后經過softmax函數計算出概率值然后和目標值做差進行更新參數v,h。

每一個神經元在上一個單詞的前提下預測此單詞的概率,最終把所有的計算出來,相乘就是最終的結果。在RNN上的應用

 

RNN結構比神經網絡結構好是因為可以減少參數。

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM