统计语言模型(Statistical Language Model)
自然語言處理的一個基本問題就是為其上下文相關(guān)的特性建立數(shù)學(xué)模型,即統(tǒng)計語言模型(Statistical Language Model),它是自然語言處理的基礎(chǔ)。
1 用數(shù)學(xué)的方法描述語言規(guī)律
假定S表示某個有意義的句子,由一連串特定順序排列的詞ω1,ω2,...,ωn組成,這里n是句子的長度。現(xiàn)在,我們想知道S在文本中出現(xiàn)的可能性,即S的概率P(S),則P(S)=P(ω1,ω2,...,ωn)。
利用條件概率的公式:
P(ω1,ω2,...,ωn)=P(ω1)?P(ω2|ω1)?P(ω3|ω1,ω2)???P(ωn|ω1,ω2,...,ωn-1)? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1.1)
由于條件概率P(ωn|ω1,ω2,...,ωn-1)難以估算,可利用馬爾可夫假設(shè):假設(shè)任一個詞ωi出現(xiàn)的概率只同它前面的詞ωi-1有關(guān),則公式(1.1)可簡化為:
P(S)=P(ω1,ω2,...,ωn)=P(ω1)?P(ω2|ω1)?P(ω3|ω2)???P(ωn|ωn-1)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1.2)
公式(1.2)對應(yīng)的統(tǒng)計語言模型是二元模型(Bigram Model)。假設(shè)一個詞由前面N-1個詞決定,對應(yīng)的模型稱為N元模型。
接下來的問題是如何估計條件概率P(ωi|ωi-1),根據(jù)它的定義:
$ P(\omega_i|\omega_{i-1})=\frac{P(\omega_{i-1},\omega_i)}{P(\omega_{i-1})}?$? ? ? ? ? (1.3)
估計聯(lián)合概率P(ωi-1,ωi) 和邊緣概率P(ωi-1) ,可利用語料庫(Corpus),只要數(shù)一數(shù)ωi-1,ωi這對詞在統(tǒng)計的文本中前后相鄰出現(xiàn)的次數(shù)#(ωi-1,ωi),以及ωi-1本身在同樣的文本中出現(xiàn)的次數(shù)#(ωi-1),然后用兩個數(shù)分別除以語料庫的大小 #,即可得到二元組的相對頻度:
$ f(\omega_i,\omega_{i-1})=\frac{\#(\omega_{i-1},\omega_i)}{\#} $? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1.4)
$ f(\omega_{i-1})=\frac{\#(\omega_{i-1})}{\#} $? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1.5)? ? ? ?
根據(jù)大數(shù)定理,只要統(tǒng)計量足夠,相對頻度等于頻率,因此:
$ P(\omega_i|\omega_{i-1})\approx\frac{\#(\omega_{i-1},\omega_i)}{\#(\omega_{i-1})} $? ?(1.6)? ? ? ? ? ? ?
2 統(tǒng)計語言模型的工程訣竅
2.1 高階語言模型
假定文本中的每個詞ωi和前面的N-1個詞有關(guān),而與更前面的詞無關(guān),這樣當(dāng)前詞ωi的概率只取決于前面N-1個詞P(ωi-N+1,ωi-N+2,...,ωi-1)。因此:
P(ωi|ω1,ω2,...,ωi-1)=P(ωi|ωi-N+1,ωi-N+2,...,ωi-1)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2.1)
公式(2.1)的這種假設(shè)稱為N-1階馬爾可夫假設(shè),對應(yīng)的語言模型稱為N元模型(N-Gram Model)。實際應(yīng)用最多的是N=3的三元模型。
為什么N取值一般都這么小呢?主要有兩個原因。首先,N元模型的大小(空間復(fù)雜度)幾乎是N的指數(shù)函數(shù),即0(|V|N),這里|V|是一種語言詞典的詞匯量,一般在幾萬到幾十萬。而使用N元模型的速度(時間復(fù)雜度)也幾乎是一個指數(shù)函數(shù),即0(|V|N-1)。因此,N不能很大。當(dāng)N從1到2,再從2到3時,魔性的效果上升顯著。而當(dāng)模型從2到4時,效果的提升就不是很顯著了,而資源的耗費卻顯著增加。
最后還有一個問題,三元或四元甚至更高階的模型是否能覆蓋所有的語言現(xiàn)象呢?答案顯然是否定的。這就是馬爾可夫假設(shè)的局限性,這時要采取其他一些長程的依賴性(Long distance Dependency)來解決這個問題。
2.2 模型的訓(xùn)練、零概率問題和平滑方法
第1章中所述的模型訓(xùn)練方法存在一定問題。比如對于二元模型(1.2),就是拿兩個數(shù)字,(ωi-1,ωi)在語料中同現(xiàn)的次數(shù)#(ωi-1,ωi)和(ωi-1)在語料中同現(xiàn)的次數(shù)#(ωi-1),計算一下比值即可。但問題是,如果同現(xiàn)的次數(shù)#(ωi-1,ωi)=0,是否就意味著條件概率P(ωi|ωi-1)=0?反之,如果#(ωi-1,ωi)和#(ωi-1)都只出現(xiàn)了一次,能否得出P(ωi|ωi-1)=1的絕對性結(jié)論?這就涉及到統(tǒng)計的可靠性問題。
解決該問題,一個直接的辦法就是增加數(shù)據(jù)量,但即便如此,仍會遇到零概率或統(tǒng)計量不足的問題。因此,如果用直接的比值計算概率,大部分條件概率依然是零,這種模型我們稱之為“不平滑”。
1953年古德(I.J.Good)在圖靈(Alan Turing)的指導(dǎo)下,提出在統(tǒng)計中相信可靠的統(tǒng)計數(shù)據(jù),而對不可信的統(tǒng)計數(shù)據(jù)打折扣的一種概率估計方法,同時將折扣的那一部分概率給予未出現(xiàn)的事件(Unseen Events),古德和圖靈還給出了重新估算概率的公式,稱為古德-圖靈估計(Good-Turing Estimate)。
下面以統(tǒng)計詞典中每個詞的概率為例,來說明古德-圖靈估計公式。
假定在語料庫中出現(xiàn)r次的詞有Nr個,特別地,未出現(xiàn)的詞數(shù)量為N0。語料庫大小為N。那么,很顯然
? ? ? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2.2)
出現(xiàn)r次的詞在整個語料庫中的相對頻度(Relative Frequency)則是rNr/N。現(xiàn)在假定當(dāng)r比較小時,它的統(tǒng)計可能不可靠。因此在計算那些出現(xiàn)r此的詞的概率時,要用一個更小一點的次數(shù)dr(而不直接使用r),古德-圖靈估計按照下面的公式計算dr:
dr=(r+1)?Nr+1/Nr? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2.3)
顯然:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ?(2.4)
一般來說,出現(xiàn)一次的詞的數(shù)量比出現(xiàn)兩次的多,出現(xiàn)兩次的比出現(xiàn)三次的多,這種規(guī)律稱為Zipf定律(Zipf's Law),即Nr+1<Nr? 。因此,一般情況下,dr<r,而d0>0。在實際的自然語言處理中,一般對出現(xiàn)次數(shù)超過某個閾值的詞,頻率不下調(diào),只對出現(xiàn)次數(shù)低于這個閾值的詞,頻率才下調(diào),下調(diào)得到的頻率總和給未出現(xiàn)的詞。
基于這種思想,估計二元模型概率的公式如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2.5)
?其中,T是一個閾值,一般在8~10左右,函數(shù)fgt()表示經(jīng)過古德-圖靈估計后的相對頻度,而
$?Q(w_{i-1})=\frac{1-\sum_{w_i\hspace{2pt}seen}P(w_i|w_{i-1})}{\sum_{w_i\hspace{2pt}unseen} f(w_i)} $? ?(2.6)
這種平滑的方法,最早由前IBM科學(xué)家卡茨(S.M.Katz)提出,故稱卡茨退避法(Katz backoff)。類似地,對于三元模型,概率估計公式如下:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(2.7)
用低階語言模型和高階語言模型進行線性插值來達到平滑的目的,這種方法稱為刪除差值(Deleted Interpolation),詳見下面的公式。該公式中三個λ均為正數(shù)且和為1。線性插值效果比卡茨退避法略差,故現(xiàn)在較少使用。
P(ωi|ωi-2,ωi-1)=λ(ωi-2,ωi-1)???f(ωi|ωi-2,ωi-1)+λ(ωi-1)???f(ωi|ωi-1)?+λ(ωi)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2.8)
2.3 語料的選取問題
1、訓(xùn)練語料和模型應(yīng)用的領(lǐng)域要一致。
2、訓(xùn)練數(shù)據(jù)通常越多越好。
3、訓(xùn)練語料的噪音高低也會影響模型的效果。
?
參考
1、吳軍 :《數(shù)學(xué)之美(第二版)》
轉(zhuǎn)載于:https://www.cnblogs.com/yxdz-hit/p/7899594.html
總結(jié)
以上是生活随笔為你收集整理的统计语言模型(Statistical Language Model)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vue.js项目文件搭建
- 下一篇: Docker基础-Docker数据管理