n gram 語言模型的平滑技術

2021-10-03 07:46:02 字數 3310 閱讀 4682

1. 統計語言模型

首先乙個句子的概率 p(s):

但是存在兩個問題:

2. n-gram模型

為了解決第乙個問題引入馬爾科夫假設(markov assumption):乙個詞的出現僅與它之前的若干個詞有關:

然後利用極大似然估計(maximum likelihood estimation,mle)計算每一項的頻數,例如:

3. 資料平滑處理

n-gram最大的問題就是稀疏問題(sparsity):很多詞語組合在語料庫中都沒有出現,根據極大似然估計得到的組合概率將會是0,從而整個句子的概率就會為0。最後的結果是,我們的模型只能計算零星的幾個句子的概率,而大部分的句子算得的概率是0,這顯然是不合理的。

因此,我們要進行資料平滑(data smoothing),資料平滑的目的有兩個:

資料平滑的本質是重新分配整個概率空間,使已經出現過的n-gram的概率降低,補充給未曾出現過的n-gram

主要有如下平滑處理方法:

3.1 拉普拉斯平滑(laplace smoothing)

add-one

拉普拉斯平滑-add-one,即強制讓所有的n-gram至少出現一次,只需要在分子和分母上分別做加法即可(分母上的v是n-gram句子概率的乘積項的個數,相當於加了1的總個數)。這個方法的弊端是,大部分n-gram都是沒有出現過的,很容易為他們分配過多的概率空間。

在add-one的基礎上做了一點小改動,原本是加一,現在加上乙個小於1的常數kkk。但是缺點是這個常數仍然需要人工確定,對於不同的語料庫kkk可能不同。

3.2 古德圖靈(good-turing)估計法

基本思想是:用觀察計數較高的n元語法數重新估計概率量的大小,並把它指派給那些具有零計數或者較低計數的n元語法。

c ∗=

(c+1

)nc+

1ncc^*=(c+1) \frac}

c∗=(c+

1)nc

​nc+

1​​

c*是good-turing平滑計數c是某個n元語法出現的頻數nc是出現次數為c的n-gram片語的個數,是頻數的頻數,如下所示:

n c=

∑b:c

(b)=

c1n_c=\sum\limits_ 1

nc​=b:

c(b)

=c∑​

1如何使用古德圖靈估計法,舉個例子

資料如下所示:

訓練集合:t=, |t|=8  

驗證集合:v=, |v|=12

不實用任何平滑技術來計算各單詞的概率,在訓練集合上,我們得到:

p() = p(it) = p(small) = p(?) = 1/8=0.125, 

p(what) = p(is) = 2/8=0.25,

其他為0。

如果不經過平滑處理,則驗證集上兩句子的概率分別為:

p(what is it ?) =(0.25*2)*(0.125*2)≈ 0.001  

p(it is flying .) = 0.125 * 0.25 *(0*2)= 0

現在用古德-圖靈演算法進行平滑處理,如下:

(1). 計算nc,依次為

n(0)=6, n(1)=4, n(2)=2, n(i)=0 ,i>2。

也就是說:

首先測試集中的詞有()這6個不在訓練集中的,所以n(0)=6。

測試集中的詞有(,it,small,>)這4個在訓練集出現過1次,所以n(1)=4

測試集中的詞有(what,is)這2個在訓練集出現過2次,所以n(2)=2

測試集中的詞有0個在訓練集**現次數大於2,所以n(i>2)=0。

(2). 重新估計各平滑後的值c*。

對於發生0次的事件:

c*(.)=c*(flying)=c*(birds)=c*(are)=c*(bird)=c*(a)=(0+1)*n(0+1)/n(0)=1*4/6≈0.667                

對於發生1次的事件:

c*(it)=c*(s)=c*(small)=c*(?)=(1+1)*n(1+1)/n(1)=2*2/4=1

對於發生2次的事件:

c*(what)=c*(is)=(2+1)*n(2+1)/n(2)=3*0/2=0,保持原值c*(what)=c*(is)=n(2)=2

(3). 歸一化的概率:

p`(it)=p`(s)=p`(small)=p`(?)=1/12 ≈0.083       

p`(what)=p`(is)= 2/12 ≈0.167

p`(.)=p`(flying)=p`(birds)=p`(are)=p`(bird)=p`(a) = 0.667/12≈0.056

因此

p`(what is it?) = 0.167 * 0.167 * 0.083 * 0.083 ≈ 0.00001921

p`(it is flying.) = 0.083 * 0.167 * 0.056 * 0.056 ≈ 0.0000434681

古德圖靈法屬於減值法,還有其他幾種減值法:katz後退法、絕對減值法、線性減值法。

N Gram語言模型

wikipedia上有關n gram的定義 n gram是一種統計語言模型,用來根據前 n 1 個item來 第n個item。在應用層面,這些item可以是音素 語音識別應用 字元 輸入法應用 詞 分詞應用 或鹼基對 基因資訊 一般來講,可以從大規模文字或音訊語料庫生成n gram模型。習慣上,1 ...

語言模型(N Gram)

問題描述 由於公司業務產品中,需要使用者自己填寫公司名稱,而這個公司名稱存在大量的亂填現象,因此需要對其做一些歸一化的問題。在這基礎上,能延伸出乙個 使用者填寫的公司名是否有效的模型出來。目標 問題提出來了,就是想找到一種辦法來 使用者填寫的公司名是否有效?問題分析 要想 使用者填寫的公司名稱是否有...

語言模型(N Gram)

問題描述 由於公司業務產品中,需要使用者自己填寫公司名稱,而這個公司名稱存在大量的亂填現象,因此需要對其做一些歸一化的問題。在這基礎上,能延伸出乙個 使用者填寫的公司名是否有效的模型出來。目標 問題提出來了,就是想找到一種辦法來 使用者填寫的公司名是否有效?問題分析 要想 使用者填寫的公司名稱是否有...