通俗理解N-gram語言模型。(轉)
N-gram語言模型
考慮一個語音識別系統,假設用戶說了這麽一句話:“I have a gun”,因為發音的相似,該語音識別系統發現如下幾句話都是可能的候選:1、I have a gun. 2、I have a gull. 3、I have a gub. 那麽問題來了,到底哪一個是正確答案呢?
一般的解決方法是采用統計的方法。即比較上面的1、2和3這三句話哪一句在英語中出現的概率最高,哪句概率最高就把哪句返回給用戶。那麽如何計算一個句子出現的概率呢?說白了就是“數數”的方法。但是即使是“數數”也有很多種數法,其中,最簡單的策略如下:
給定一個語料庫,數出其中所有的長度為4的句子的個數,設為N,然後再看在這N個長度為4的句子中,“I have a gun”出現了多少次,不妨設為N0
上述的這種數數方法,從邏輯上講是完全OK的,但是因為自然語言的靈活多變性,以及語料庫的規模總是有限的,對於一個稍長一點的句子,很可能語料庫中根本就沒有。比如說下面這個句子:“I am looking for a restaurant to eat breakfast”,直觀上看,這句話在語料庫中應該出現次數很多吧?但是如果把這句話輸入到Google的搜索框中,點擊搜索,你會發現返回的結果中根本就沒有完全匹配上的。所以,我們需要提出更加有效的“數數”方法。
為了把事情說清楚,需要引入一些簡單的數學符號。
1、word序列:w1
2、鏈式規則:P(w1, w2, w3, … , wn)=P(w1)P(w2|w1)P(w3|w1w2)P(w4|w1w2w3)…P(wn|w1w2…wn-1)
好了,我們想要計算“I have a gun”的概率,也就是計算P(I,have,a,gun),按照鏈式規則,則有:
P(I,have,a,gun)=P(I)P(have|I)P(a|I,have)P(gun|I,have,a)
但是事情並沒有得到簡化,例如要計算P(gun|I,have,a),按照條件概率公式展開:
P(gun|I,have,a) = P(I,have,a,gun)/P(I,have,a)
發現了什麽?為了計算P(gun|I,have,a),我們需要先計算P(I,have,a,gun)和P(I,have,a)。哎?P(I,have,a,gun)不就是我們一開始想要計算的值嗎?所以繞了一圈,我們又回到了原地?
好了,現在我們來整理一下思路。
對於一個句子,其可以表示為一個word序列:w1, w2, w3, … , wn。我們現在想要計算句子出現的概率,也就是計算P(w1, w2, w3, … , wn)。這個概率我們可以直接用數數的方法求解,但是效果並不好,所以我們利用鏈式規則,把計算P(w1, w2, w3, … , wn)轉化為計算一系列的乘積:P(w1)P(w2|w1)P(w3|w1w2)P(w4|w1w2w3)…P(wn|w1w2…wn-1)。但是轉化之後,問題並沒有變得簡單。怎麽辦?
N-gram這時候就派上用場了。
對於1-gram,其假設是P(wn|w1w2…wn-1)≈P(wn|wn-1)
對於2-gram,其假設是P(wn|w1w2…wn-1)≈P(wn|wn-1,wn-2)
對於3-gram,其假設是P(wn|w1w2…wn-1)≈P(wn|wn-1,wn-2,wn-3)
依次類推。
所以:
在1-gram模型下:
P(w1, w2, w3, … , wn)=P(w1)P(w2|w1)P(w3|w1w2)P(w4|w1w2w3)…P(wn|w1w2…wn-1)
≈P(w1)P(w2|w1)P(w3|w2)P(w4|w3)…P(wn|wn-1)
在2-gram模型下:
P(w1, w2, w3, … , wn)=P(w1)P(w2|w1)P(w3|w1w2)P(w4|w1w2w3)…P(wn|w1w2…wn-1)
≈P(w1)P(w2|w1)P(w3|w1w2)P(w4|w2w3)…P(wn|wn-2wn-1)
在3-gram模型下:
P(w1, w2, w3, … , wn)=P(w1)P(w2|w1)P(w3|w1w2)P(w4|w1w2w3)…P(wn|w1w2…wn-1)
≈P(w1)P(w2|w1)P(w3|w1w2)P(w4|w1w2w3)…P(wn|wn-3wn-2wn-1)
假設我們采用的是1-gram模型,那麽:
P(I,have,a,gun)=P(I)P(have|I)P(a|have)P(gun|a).
然後,我們再用“數數”的方法求P(I)和其他的三個條件概率:
P(I)=語料庫中I出現的次數 / 語料庫中的總詞數
P(have|I) = 語料庫中I和have一起出現的次數 / 語料庫中I出現的次數。
總結,本文只是對N-gram做了非常簡單的介紹,目的在於簡單易懂,但是不夠嚴謹。感興趣的同學可以進一步查閱相關的資料。在任何一本關於自然語言處理的書上都能夠找到N-gram的內容。
通俗理解N-gram語言模型。(轉)