三元隱馬爾可夫模型
三元隱馬爾可夫模型依賴二階馬爾科夫假設,包含所有詞的有限集V,以及所有標籤有限集K,以及如下兩個參數:q(s∣u,v),其中s∈K∪{STOP},u,v∈K∪{∗},STOP表示結束標籤,∗表示開始標籤,其值表示標籤s跟在標籤(u,v)後的概率。e(x∣s),其中x∈V,s∈K,其值表示標籤s對應詞x的概率。定義S表示詞序列和對應的標籤序列的集合<x1,x2,..,xn,y1,...,yn>,其中n≥0,對於任意i=1...n,xi∈V,yi∈K,並且y−1,y0∈{∗},yn+1=STOP,則任意<x1,..,xn,y1,..,yn>∈S的概率可以按如下求得:
由概率鏈式法則:p(x1,..,xn,y1,..,yn)=p(y1,..,yn)×p(x1,..,xn∣y1,..,yn)(1)由獨立假設:p(y1,..,yn)=i=1∏n+1p(yi∣yi−2,yi−1)(2)由鏈式法則以及獨立性假設可得:p(x1,..,xn∣y1,..,yn)=i=1∏np(xi∣x1,..,xi−1,y1,..,yn+1)=i=1∏np(xi∣yi)(3)
故:p(x1,..xn,y1,..,yn)=i=1∏n+1q(yi∣yi−2,yi−1)i=1∏ne(xi∣yi)(4)
對於訓練集中標籤序列(s,u,v),我們是可以計算出來的:
q(s∣u,v)=c(u,v)c(u,v,s)e(x∣s)=c(s)c(s→x)但是如果訓練集中x從未出現,那麼e(x∣s)可能會出現概率爲0的情況,那麼聯合概率都爲0,可以使用pseudo-words來替換生僻詞,例如fourDigitNum可以用來替換所有的四位數字。
維特比算法
爲了尋找最可能的標籤序列,即計算:
y∗=y1,..,yn+1argmax p(x1,..,xn,y1,..,yn+1)(5)使用暴力搜索是困難的,因爲對於長度爲n的句子,總共有∣K∣n個標籤序列。
假如我們只考慮一句話的前k個詞,定義:r(y−1,y0,...,yk)=i=1∏kq(yi∣yi−2,yi−1)i=1∏ke(xi∣yi)(6)則(4)式可以寫成:p(x1,..,xn,y1,..,yn+1)=r(∗,∗,y1,..,yn)×q(yn+1∣yn−1,yn)=r(∗,∗,y1,..,yn)×q(STOP∣yn−1,yn)(7)對於任意k∈{−1,..,n}定義Kk表示序列中第k個位置可能的標籤集合,則:Kk=K,k∈{1..n}特別地,K−1=K0={∗}
對於任意的k∈{1,..,n}以及任意u∈Kk−1,v∈Kk,定義S(k,u,v)爲序列y−1,y0,y1,..,yk的集合,此外這個集合滿足yk−1=u,yk=v,即爲以u,v結尾的長度爲k的序列。定義:
π(k,u,v)=<y−1,y0,..,yk>∈S(k,u,v)maxr(y−1,y0,y1,...,yk)(8)即π(k,u,v)爲任意長度爲k以(u,v)結尾的序列的最大概率。特別地,π(0,∗,∗)=1。
實際上,π(k,u,v)是可以遞歸定義的:π(k,u,v)=w∈Kk−2max(π(k−1,w,u)×q(v∣w,u)×e(xk∣v))(9),因此由(7)可得:y1,..,yn+1maxp(x1,..,xn,y1,..,yn+1)=u∈Kn−1,v∈Knmax(π(n,u,v)×q(STOP∣u,v))(10)式子(10)即我們最大化的目標函數。但是,我們需要的是最大的標籤序列,即式子(5),所以我們需要在算法遞推的時候每次保存“反向指針”bp(k,u,v),其記錄了使得長度爲k以(u,v)結尾的序列分數最高的先前的w。在算法結束,我們需要從後向前尋找保存的序列,具體算法流程如下,時間複雜度爲O(n∣K∣3)。
來源
Hidden Markov models and tagging (sequence labeling) problems