本欄目來源於對Coursera 在線課程 NLP(by Michael Collins)的理解。課程連接爲:https://class.coursera.org/nlangp-001函數
1. 語言模型定義:測試
Model Representation:get
例如:假設c(x1x2...xn)是x1x2...xn在語料中出現的頻次,N是語料句子總數,定義 p(x1,x2,...,xn)=c(x1x2...xn)/N 可是該模型效果不好因爲其沒法預測語料中未出現的新單詞。it
2. 馬爾科夫模型(Markov Model)io
2.1 定長序列的馬爾科夫模型class
假設單詞序列x1x2...xn爲定長的n,對於聯合機率P(X1=x1,X2=x2,...Xn=xn),可見x1x2...xn有|V|n種組合。變量
所以序列x1x2...xn出現的機率爲:方法
所以序列x1x2...xn出現的機率爲:im
PS:定義x0=x-1=*,即句子序列開始符。數據
2.1 變長序列的馬爾科夫模型
假設單詞序列x1x2...xn爲可變長度的句子序列,即n爲隨機變量,此時假設xn爲STOP符惟一的表示句子的結尾。繼續使用前面的假設,對於二階馬爾科夫過程:
其中xn=STOP
計算流程爲:
3. Trigram語言模型
假設P(Xi=xi | Xi-2=xi-2,Xi-1=xi-1) = q(xi | xi-2,xi-1)
其中q(w | u,v)對任意(u,v,w)是模型的參數,w屬於集合{V,STOP},u,v屬於集合{V,*},x0 = x-1 =*,模型形式以下:
其中q(w|u,v)≥0 且
例如:句子序列 the dog barks STOP
p(the dog barks STOP)=q(the|*,*)×q(dog|*,the)×q(barks|the,dog)×q(STOP|dog,barks)
4. 極大似然估計(Maximum-Likelihood Estimates)
定義c(u,v,w)爲trigram(u,v,w)在訓練語料中出現的頻次,例如c(the,dog,barks)即 「the dog barks」序列在語料中出現的次數,同理c(u,v)爲bigram(u,v)在語料中出現的頻次,對任意u,v,w,定義:
例如:q(the,dog,barks)估計爲:
因爲詞數量龐大,該方法的問題有:
5. 語言模型評估:複雜度(Perplexity)
假設測試集爲x(1),x(2),...x(n).其中x(i)爲序列,x1(i)x2(i)...xni(i),ni爲第i個測試句子的長度並以STOP做爲結束符。一種模型的評價標準爲計算整個測試集句子出現的機率,即:
PS:機率值越大,模型對新詞的預測效果越好。
平均log機率爲:
模型複雜度定義爲 2-l ,其中
PS:複雜度越小,模型對於預測新數據的效果越好。
例如:對於語言模型 q(w|u,v)=1/N,這時該模型的複雜度爲N,可見是不好的模型。
6 Trigram模型的平滑估計
藉助bigram和unigram的結果來平滑trigram模型。可使用linear interpolation(線性插值)和discounting methods。
6.1 Linear Interpolation
定義trigram,bigram和unigram的極大似然估計爲:
其中c(w)是詞w在訓練語料中出現的次數,c()是訓練語料的總詞數。trigram,bigram和unigram有各自的優缺點。unigram不會出現算式分子或分母爲0的狀況,可是卻忽略了句子上下文的關係;相反,trigram充分利用了文本關係但不少算式結果爲0.
Linear Interpolation應用以下定義來平滑模型:
其中λ1≥0,λ2≥0,λ3≥0是模型的另外參數,且λ1+λ2+λ3=1。爲trigram,bigram和unigram的權重參數。
目標函數:
在實際應用中,當c(u,v)很大時,能夠增大λ1(因爲大的c(u,v)說明trigram更加有效);當c(u,v)=0時,令λ1=0(因爲此時qML(w|u,v)沒有定義);同理若c(u,v),c(v)都爲0,咱們就須要λ1=λ2=0(因爲trigram,bigram都無定義).
其中γ>0,該方法相對粗糙,可能並不是最優,可是很簡單。
6.2 Discounting Methods
定義discounted counts:其中任意bigram c(v,w)>0,β在0和1之間;
所以定義:
例如:對以下數據,詞"the"在語料中共出現了48次,下表列出了全部的bigram。另外咱們利用discounted count c*(x)=c(x)-β。且β=0.5 最後計算c*(x)/c(the).該定義形成了一些機率丟失,定義以下:
本例中,,
完整定義以下: A(v)={w:c(v,w)>0}且B(v)={w:c(v,w)=0}
本例中,A(the)={dog,woman,man,park,job,telescope,manual,afternoon,country,street},B(the)是此表中其他集合。
所以,若c(v,w)>0,返回c*(v,w)/c(v);不然,將α(v)成比例地分給unigram來評估qML(w)。
A(u,v)={w:c(u,v,w)>0}且B(u,v)={w:c(u,v,w)=0}
故trigram模型爲:
其中:
一般咱們爲β設置可能的數值集合(例如{0.1,0.2,0.3,...,0.9})分別計算其log似然機率,從中選出令log似然機率最大的β便可。