在自然語言處理中的乙個基本問題:如何計算一段文字序列在某種語言下出現的概率?之所為稱其為乙個基本問題,是因為它在很多nlp任務中都扮演著重要的角色。例如,"我經常會去圖書館____",**該句後面的詞。我們會通過已有的語料或上下文,來統計**這句話可以填某個詞的概率。將概率最大的作為**結果返回。再比如機器翻譯中,『i like tom so much.』 ===> 將這個集合裡的字詞排列組合成句子,然後用語言模型去計算形成句子的概率大小。概率越大,說明翻譯越順暢,越好,就作為最終的答案返回。
統計語言模型給出了這一類問題的乙個基本解決框架。對於一段文字序列
它的概率可以表示為:
即將序列的聯合概率轉化為一系列條件概率的乘積。問題變成了如何去**這些給定previous words下的條件概率:
由於其巨大的引數空間,這樣乙個原始的模型在實際中並沒有什麼用。我們更多的是採用其簡化版本——ngram模型:
常見的如bigram模型(n=2)和trigram模型(n=3)。事實上,由於模型複雜度和**精度的限制,我們很少會考慮n>3的模型。
我們可以用最大似然法去求解ngram模型的引數——等價於去統計每個ngram的條件詞頻。
為了避免統計**現的零概率問題,針對於ngram模型有很多處理的小技巧。
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)。
N Gram語言模型
wikipedia上有關n gram的定義 n gram是一種統計語言模型,用來根據前 n 1 個item來 第n個item。在應用層面,這些item可以是音素 語音識別應用 字元 輸入法應用 詞 分詞應用 或鹼基對 基因資訊 一般來講,可以從大規模文字或音訊語料庫生成n gram模型。習慣上,1 ...
語言模型(N Gram)
問題描述 由於公司業務產品中,需要使用者自己填寫公司名稱,而這個公司名稱存在大量的亂填現象,因此需要對其做一些歸一化的問題。在這基礎上,能延伸出乙個 使用者填寫的公司名是否有效的模型出來。目標 問題提出來了,就是想找到一種辦法來 使用者填寫的公司名是否有效?問題分析 要想 使用者填寫的公司名稱是否有...
語言模型(N Gram)
問題描述 由於公司業務產品中,需要使用者自己填寫公司名稱,而這個公司名稱存在大量的亂填現象,因此需要對其做一些歸一化的問題。在這基礎上,能延伸出乙個 使用者填寫的公司名是否有效的模型出來。目標 問題提出來了,就是想找到一種辦法來 使用者填寫的公司名是否有效?問題分析 要想 使用者填寫的公司名稱是否有...