tag:詞性標註,viterbi,解碼演算法
【今天看一篇分詞和詞性標註一體化的文章,解碼問題又折騰了老半天,才想起來複習下viterbi】
該演算法解決的是hmm經典問題中最優狀態序列的選擇問題。詞性標註問題對映到隱馬模型可以表述為:模型中狀態(詞性)的數目為詞性符號的個數n;從每個狀態可能輸出的不同符號(單詞)的數目為詞彙的個數m。假設在統計意義上每個詞性的概率分布只與上乙個詞的詞性有關(即詞性的二元語法),而每個單詞的概率分布只與其詞性相關。那麼,我們就可以通過對已分詞並做了詞性標註的訓練語料進行統計,需要統計如下矩陣:
ü狀態轉移(詞性到詞性的轉移)概率矩陣。詞性之間的轉移概率:
p(ti|ti-1) =
訓練語料中ti
出現在ti-1
之後的次數/ 訓練語料中ti-1
出現的次數
ü從狀態(詞性)觀察到輸出符號(單詞)的概率分布矩陣。已知詞性標記ti
下輸出詞語wi
的概率:
p(wi|ti) =
訓練語料中wi
的詞性被標記為ti
的次數 / 訓練語料中ti
出現的總次數
viterbi
演算法方案簡介:設給定詞串w=w1 w2 … wk,si(i=1,2…n)表示詞性狀態(共有n種取值,其中n為詞性符號的總數,可以通過語料庫統計出來),t=1,2…k表示詞的序號(對應hmm中的時間變數),viterbi 變數v(i,t)表示從w1的詞性標記集合到wt的詞性標記為si的最佳路徑概率值,存在的遞迴關係是v(i,t)=max[v(i,t-1) * aij]*bj(wt),其中1≤t≤k, 1≤i≤n ,1≤j≤n,aij表示詞性si到詞性sj的轉移概率,對應上述p(ti|ti-1) ,bj(wt)表示wt被標註為詞性sj的概率,即hmm中的發射概率,對應上述p(wi|ti),這兩種概率值均可以由語料庫計算。每次選擇概率最大的路徑往下搜尋,最後得到乙個最大的概率值,再回溯,因此需要另乙個變數用於記錄到達si的最大概率路徑。
初始化引數
:v(i,1)=p(i)* bi(w1),p(i)表示經語料庫統計計算得到該詞性si出現的頻率,即p(i)=si出現的總次數/所有詞性出現總次數n,bi(w1)表示詞w1被標記為si的概率,計算方式與前面相同。
NLTK中文詞性自動標註
學習自然語言處理,一定會參考nltk,主要是學習它的思路,從設計地角度看看能做什麼.其本質就是把語言看成字串,字串組,字串集,尋找其間規律 nltk是多語言支援的,但目前網上的例程幾乎沒有用nltk處理中文的,其實可以做。比如標註功能,它自身提供了帶標註的中文語庫 繁體語料庫sinica treeb...
python nltk中文 NLTK中文詞性標註
1.說明 學習自然語言處理,一定會參考nltk,主要是學習它的思路,從設計地角度看看能做什麼.其本質就是把語言看成字串,字串組,字串集,尋找其間規律 nltk是多語言支援的,但目前網上的例程幾乎沒有用nltk處理中文的,其實可以做。比如標註功能,它自身提供了帶標註的中文語庫 繁體語料庫sinica ...
中文分詞與詞性標註
概況介紹 中文分詞與詞性標註是自然語言處理的第乙個階段,是上層處理的基礎。分詞的主要研究內容是歧義切分和未登入詞識別。歧義切分是指對同乙個文字片斷具有不同的切分方式,如 結合成分子 這句話就有好幾種切分方法,但是正確的只有一種,能正確的進行歧義切分是分詞的乙個難點。分詞的另乙個難點是未登入詞識別,未...