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