Language Modeling---NLP學習筆記

本欄目來源於對Coursera 在線課程 NLP(by Michael Collins)的理解。課程連接爲:https://class.coursera.org/nlangp-001函數

1. 語言模型定義:測試

Model Representation:get

  • V:集合V包含語料中全部單詞,例如:V={the,dog,laughs,saw,barks,cat,...};
  • x1x2...xn:x1x2...xn爲句子序列,其中n≥1,xn爲句子的STOP符(結束標誌);
  •  p(x1,x2,...,xn):集合V的一種可能的分佈,其中對任意<x1x2...xn>,p(x1,x2,...,xn)≥0,且 ∑<x1x2...xn>p(x1,x2,...,xn)=1;

例如:假設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種組合。變量

  • 在一階馬爾科夫過程當中,假設第i個單詞出現與否取決於其前面的單詞xi-1:

所以序列x1x2...xn出現的機率爲:方法

  • 在二階馬爾科夫過程當中(trigram),假設每一個單詞的出現取決於其前面的兩個單詞:

所以序列x1x2...xn出現的機率爲:im

PS:定義x0=x-1=*,即句子序列開始符。數據

2.1 變長序列的馬爾科夫模型

假設單詞序列x1x2...xn爲可變長度的句子序列,即n爲隨機變量,此時假設xn爲STOP符惟一的表示句子的結尾。繼續使用前面的假設,對於二階馬爾科夫過程:

其中xn=STOP

計算流程爲:

  • (1)初始化i=1,x0=x-1=*;
  • (2)在分佈中計算xi:P(Xi=xi|Xi-2=xi-2,Xi-1=xi-1);
  • (3)若xi=STOP,返回序列x1x2...xi。不然令i=i+1,重複步驟(2)

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)估計爲:

因爲詞數量龐大,該方法的問題有:

  • 許多詞項會出現q(w|u,v)=0因爲c(u,v,w)=0,而將未在訓練語料中出現的序列組合計算爲0是不合理的;
  • 當c(u,v)爲0時,該定義式無解;

5. 語言模型評估:複雜度(Perplexity)

 假設測試集爲x(1),x(2),...x(n).其中x(i)爲序列,x1(i)x2(i)...xni(i),ni爲第i個測試句子的長度並以STOP做爲結束符。一種模型的評價標準爲計算整個測試集句子出現的機率,即:

PS:機率值越大,模型對新詞的預測效果越好。

  • M:測試語料集詞的總數
  • ni:第i個測試句子的長度

平均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的權重參數。

  • 最優λ計算方法:咱們從訓練語料和測試語料中分離出新的集合稱爲development data,定義爲c'(u,v,w)爲development data集合中trigram(u,v,w)出現的頻次。development data集合的log似然估計爲:

目標函數:

在實際應用中,當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)。

  •  該方法也能夠用來計算trigram模型,對任意bigram(u,v)定義:

A(u,v)={w:c(u,v,w)>0}且B(u,v)={w:c(u,v,w)=0}

  • 定義trigram的discounted count:

故trigram模型爲:

其中:

  • 求解最優β:一般使用在development data上計算似然機率的方法來求解最優β。定義c'(u,v,w)爲development data中trigram(u,v,w)出現的頻次,log似然機率爲:

一般咱們爲β設置可能的數值集合(例如{0.1,0.2,0.3,...,0.9})分別計算其log似然機率,從中選出令log似然機率最大的β便可。

相關文章
相關標籤/搜索