1. 程式人生 > >n-gram語言模型及平滑演算法

n-gram語言模型及平滑演算法

一、n-gram模型概念

n-gram模型也稱為n-1階馬爾科夫模型,它有一個有限歷史假設:當前詞的出現概率僅僅與前面n-1個詞相關,可以表示為:

                       

    當n取1、2、3時,n-gram模型分別稱為unigram、bigram和trigram語言模型。n-gram模型的引數就是條件概率P(Wi|Wi-n+1,...,Wi-1)。假設詞表的大小為100,000,那麼n-gram模型的引數數量為100,000n。n越大,模型越準確,也越複雜,需要的計算量越大。最常用的是bigram,其次是unigram和trigram,n取≥4的情況較少。

二、n-gram模型的引數估計

模型的引數估計也稱為模型的訓練,n-gram模型的引數的估計表示式如下:

一般採用最大似然估計(Maximum Likelihood Estimation,MLE)的方法對模型的引數進行估計:

 

舉個例子來說明一下,IBM Brown利用366M英語語料訓練trigram,結果在測試語料中,有14.7%的trigram和2.2%的bigram在訓練中沒有出現;根據博士期間所在的實驗室統計結果,利用500萬字人民日報訓練bigram模型,用150萬字人民日報作為測試語料,結果有23.12%的bigram沒有出現。這種問題也被稱為資料稀疏(Data  Sparseness),解決資料稀疏問題可以通過資料平滑(Data Smoothing)技術來解決。

三、平滑演算法

資料平滑是對頻率為0的n元對進行估計,典型的平滑演算法有加法平滑、Good-Turing平滑、Katz平滑、插值平滑等。

3.1 加法平滑

3.1.1  Laplace法則(加1平滑)

通過給每個n元組都加1,實現將一小部分概率轉移到未知事件上,公式如下:

3.1.2  Lidstone 法則

3.2  Good-Turing估計

3.3 Katz回退演算法

3.4. 線性插值

四、arpa檔案的各部分引數詳解