viterbi用於中文詞性標註

2021-04-27 23:00:47 字數 1094 閱讀 8204

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 ...

中文分詞與詞性標註

概況介紹 中文分詞與詞性標註是自然語言處理的第乙個階段,是上層處理的基礎。分詞的主要研究內容是歧義切分和未登入詞識別。歧義切分是指對同乙個文字片斷具有不同的切分方式,如 結合成分子 這句話就有好幾種切分方法,但是正確的只有一種,能正確的進行歧義切分是分詞的乙個難點。分詞的另乙個難點是未登入詞識別,未...