N-Gram的基本原理
1.N-Gram的介紹
N-Gram是基于一個假設(shè):第n個詞出現(xiàn)與前n-1個詞相關(guān),而與其他任何詞不相關(guān)(這也是隱馬爾可夫當(dāng)中的假設(shè))。整個句子出現(xiàn)的概率就等于各個詞出現(xiàn)的概率乘積。各個詞的概率可以通過語料中統(tǒng)計計算得到。通常N-Gram取自文本或語料庫。
N=1時稱為unigram,N=2稱為bigram,N=3稱為trigram,假設(shè)下一個詞的出現(xiàn)依賴它前面的一個詞,即 bigram,假設(shè)下一個詞的出現(xiàn)依賴它前面的兩個詞,即 trigram,以此類推。
舉例中文:“你今天休假了嗎”,它的bigram依次為:
你今,今天,天休,休假,假了,了嗎
理論上,n 越大越好,經(jīng)驗上,trigram 用的最多,盡管如此,原則上,能用 bigram 解決,絕不使用 trigram。
假設(shè)句子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 概率的模型。
以上公式難以實際應(yīng)用。此時出現(xiàn)馬爾可夫模型,該模型認(rèn)為,一個詞的出現(xiàn)僅僅依賴于它前面出現(xiàn)的幾個詞。這就大大簡化了上述公式。
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為開頭的所有句子/句 子總數(shù);p(w2|w1)=w1,w2同時出現(xiàn)的次數(shù)/w1出現(xiàn)的次數(shù)。以此類推
2.一個經(jīng)典的二元語言模型例子
語料庫中一些單詞的詞頻,統(tǒng)計出各個單詞與其他單詞的前后聯(lián)系的頻次,組成一個7*7的二維矩陣,如下圖
那么語句 ?“I want to eat Chinese food” ?的二元語言模型概率計算過程如下
3.構(gòu)建 N-Gram 語言模型
通常,通過計算最大似然估計(Maximum Likelihood Estimate)構(gòu)造語言模型,這是對訓(xùn)練數(shù)據(jù)的最佳估計,如 bigram 公式如下:
p(wi|wi?1)=fraccount(wi?1,wi)count(wi?1)——條件概率
如給定句子集“<s> I am Sam </s>
? ? ? ? ? ? ? ? ? ? ? ?<s> Sam I am </s>
? ? ? ? ? ? ? ? ? ? ? ?<s> I do not like green eggs and ham </s>”
部分 bigram 語言模型如下所示
?
count(wi)?如下:
count(wi?1,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
?
轉(zhuǎn)載于:https://www.cnblogs.com/bep-feijin/p/9430164.html
總結(jié)
以上是生活随笔為你收集整理的N-Gram的基本原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: PHP mail()可能导致的问题
- 下一篇: Jquery.tmpl
