N-Gram的基本原理


1.N-Gram的介紹

N-Gram是基於一個假設:第n個詞出現與前n-1個詞相關,而與其他任何詞不相關(這也是隱馬爾可夫當中的假設)。整個句子出現的概率就等於各個詞出現的概率乘積。各個詞的概率可以通過語料中統計計算得到。通常N-Gram取自文本或語料庫。

N=1時稱為unigram,N=2稱為bigram,N=3稱為trigram,假設下一個詞的出現依賴它前面的一個詞,即 bigram,假設下一個詞的出現依賴它前面的兩個詞,即 trigram,以此類推。

舉例中文:“你今天休假了嗎”,它的bigram依次為:

你今,今天,天休,休假,假了,了嗎

理論上,n 越大越好,經驗上,trigram 用的最多,盡管如此,原則上,能用 bigram 解決,絕不使用 trigram。

假設句子T是有詞序列w1,w2,w3...wn組成,用公式表示N-Gram語言模型如下:

P(T)=P(w1)*p(w2)*p(w3)***p(wn)=p(w1)*p(w2|w1)*p(w3|w1w2)** *p(wn|w1w2w3...) 
p(T) 就是語言模型,即用來計算一個句子 T 概率的模型。

以上公式難以實際應用。此時出現馬爾可夫模型,該模型認為,一個詞的出現僅僅依賴於它前面出現的幾個詞。這就大大簡化了上述公式。

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)

一般常用的N-Gram模型是Bi-Gram和Tri-Gram。分別用公式表示如下: 

Bi-Gram:  P(T)=p(w1|begin)*p(w2|w1)*p(w3|w2)***p(wn|wn-1) 
Tri-Gram: P(T)=p(w1|begin1,begin2)*p(w2|w1,begin1)*p(w3|w2w1)***p(wn| wn-1,wn-2)

注意上面概率的計算方法:P(w1|begin)=以w1為開頭的所有句子/句 子總數;p(w2|w1)=w1,w2同時出現的次數/w1出現的次數。以此類推

2.一個經典的二元語言模型例子

語料庫中一些單詞的詞頻,統計出各個單詞與其他單詞的前后聯系的頻次,組成一個7*7的二維矩陣,如下圖

那么語句  “I want to eat Chinese food”  的二元語言模型概率計算過程如下

3.構建 N-Gram 語言模型

通常,通過計算最大似然估計(Maximum Likelihood Estimate)構造語言模型,這是對訓練數據的最佳估計,如 bigram 公式如下:

p(wi|wi1)=fraccount(wi1,wi)count(wi1)——條件概率

如給定句子集“<s> I am Sam </s>

                       <s> Sam I am </s>

                       <s> I do not like green eggs and ham </s>”

部分 bigram 語言模型如下所示

 

count(wi) 如下:

count(wi1,wi) 如下:

則 bigram 為:

那么,句子“<s> I want chinese food </s>”的概率為:

p(<s>Iwantchinesefood</s>) =p(I|<s>)P(want|I)p(chinese|want)p(food|chinese)p(</s>|food)=.000031

 


免責聲明!

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



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