在上一篇N-gram模型中提到稀疏問題,即某些在文本中通常很少出現的詞,在某一局部文本中突然大量地出現,本篇主要討論它的解決辦法--數據平滑(data smoothing)。
問題描述
N-gram存在問題,訓練語料畢竟是有限的,這樣導致很多事件,如trigram中,w1 w2 w3根本沒有出現過。根據最大似然估計,這些事件的概率為零。然而這些事件的真實概率並不一定為零。這個問題被成為數據稀疏問題。
-- MLE給訓練樣本中未觀察到的事件賦以0概率。
-- 若某n-gram在訓練語料中沒有出現,則該n-gram的概率必定是0。
-- 解決的辦法是擴大訓練語料的規模。但是無論怎樣擴大訓練語料,都不可能保證所有的詞在訓練語料中均出現。
-- 由於訓練樣本不足而導致所估計的分布不可靠的問題,稱為數據稀疏問題。
-- 在NLP領域中,數據稀疏問題永遠存在,不太可能有一個足夠大的訓練語料,因為語言中的大部分詞都屬於低頻詞。
Zipf 定律:
(1)告訴我們語言中只有很少的常用詞,語言中大部分詞都是低頻詞(不常用的詞)。
(2)解釋是Principle of Least effort(講話的人和聽話的人都想省力的平衡);說話人只想使用少量的常用詞進行交流;聽話人只想使用沒有歧義的詞(量大低頻)進行交流。
(3)對於語言中的大多數詞,它們在語料中的出現是稀疏的.只有少量詞語料庫可以提供它們規律的可靠樣本。
定義
把在訓練樣本中出現多的事件的概率適當減小,把減小得到的概率密度分配給訓練語料中沒有出現過的事件。這個過程有時也稱為減值(Discounting)。
--減值法
修改訓練樣本中的事件的實際計數,是樣本中不同時間的概率之和小於1,剩余的概率量分配給未見概率。
--調整方法:最大似然規則
(1)他可保證模型中任何概率均不為0;
(2)數據平滑使模型參數概率分布趨向於更加均勻。低概率(包括0概率)被調高,高概率被調低。
--數據平滑技術
(1)加法平滑
Add-one
1.每一種情況出現的次數加1。
2.規定任何一個n-gram在訓練語料至少出現一次(即規定沒有出現過的n-gram在訓練語料中出現了一次),則: new_count(n-gram) = old_count(n-gram) + 1
3.沒有出現過的n-gram的概率不再是0
例如,對於uni-gram,設w1, w2, w3 三個詞,概率分別為:1/3, 0, 2/3,加1后情況?
2/6, 1/6, 3/6
Add-delta平滑
Lidstone’s 不是加1,而是加一個小於1的正數 , 通常= 0.5,此時又稱為Jeffreys-Perks Law或ELE 效果比Add-one好,但是仍然不理想。
(2)Good-turning平滑
基本思想:利用高頻率n-gram的頻率調整低頻的n-gram的頻率。
具體操作:假設N 是樣本數據的大小, nr是在N元模型的訓練集中正好出現r 次的事件的數目(在這里,事件為N元對 ),nr表示有多少個N元對出現了r次
Good-Turing估計適合單詞量大並具有大量的觀察數據的情況下使用,在觀察數據不足的情況下,本身出現次數就是不可靠的,利用它來估計出現次數就更不可靠了。缺乏利用低元模型對高元模型進行線性插值的思想。
(3)Backing-off平滑
(4)Jelinek-mercer平滑
線性插值平滑(Linear Interpolation Smoothing)方法通常也被稱作Jelinek-Mercer 平滑。Jelinek 和Mercer 在1980 年首先提出了這種數據平滑算法的思想,Brown 在1992 年給出了線性插值的平滑公式:
該參數平滑技術的基本思想是利用低元n-gram 模型對高元n-gram 模型進行線性插值。用降元的方法來彌補高元的數據稀疏問題,數據估計有一定的可靠性。但是參數估計較困難。
(5)Katz平滑
(6)Church-gale平滑