n-gram語言模型

一、Statistical Language Model

在自然語言處理中的一個基本問題:如何計算一段文本序列在某種語言下出現的概率?之所爲稱其爲一個基本問題,是因爲它在很多NLP任務中都扮演着重要的角色。例如,"我經常會去圖書館____",預測該句後面的詞。我們會通過已有的語料或上下文,來統計預測這句話可以填某個詞的概率。將概率最大的作爲預測結果返回。再比如機器翻譯中,‘I like Tom so much.’ ===>{‘我’,‘喜歡’,‘湯姆’,‘非常’} 將這個集合裏的字詞排列組合成句子,然後用語言模型去計算形成句子的概率大小。概率越大,說明翻譯越順暢,越好,就作爲最終的答案返回。

統計語言模型給出了這一類問題的一個基本解決框架。對於一段文本序列

它的概率可以表示爲:

 即將序列的聯合概率轉化爲一系列條件概率的乘積。問題變成了如何去預測這些給定previous words下的條件概率:

由於其巨大的參數空間,這樣一個原始的模型在實際中並沒有什麼用。我們更多的是採用其簡化版本——Ngram模型: 

常見的如bigram模型(N=2)和trigram模型(N=3)。事實上,由於模型複雜度和預測精度的限制,我們很少會考慮N>3的模型。

我們可以用最大似然法去求解Ngram模型的參數——等價於去統計每個Ngram的條件詞頻。

爲了避免統計中出現的零概率問題,針對於Ngram模型有很多處理的小技巧。

 二、N-Gram語言模型

n-gram模型概率公式推導。根據條件概率和乘法公式:

得到 

如果直接這麼計算,是有很大困難的,需要引入馬爾科夫假設,即:一個item的出現概率,只與其前m個items有關,當m=0時,就是unigram,m=1時,是bigram模型,m=2時,是trigram模型。 

例如,當利用bigram模型時,P(T)=P(A1)P(A2|A1)P(A3|A2)…P(An|An-1) ,而P(An|An-1)條件概率可以通過極大似然估計求得,等於Count(An-1,An)/Count(An-1)。

 

 

 

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