jieba詞性標註

這裏首先了解下詞性標註:
中文的詞性標註一般存在很多不固定性,比如同音同形的詞在不同的場景下,其表示的語法屬性截然不用,這就爲詞性標註帶來了很大的困難。但是從另外一個方面看,整體上來說大多數的詞語,尤其是實詞,一般只有一個到兩個詞性,而其中一個詞性相對於另一個是高頻的,這時如果默認將高頻詞性作爲詞性選擇進行標註,也能有很高的準確率。這時對於大部分的場景來說,還是能滿足基本的準確度要求的。

最簡單的方法是:統計語料庫中的每個詞對應的詞性,然後將每個詞的高頻詞性作爲該詞的詞性。也就是說輸入語料必須是已經標註好詞性的語料庫。

與此同時,還可以有所提升,目前較多的做法是將詞性標註的問題轉化爲用分詞的方法,也即是將句子的詞性標註作爲一個序列標註問題來解決。這樣的話,分詞中的方法,如HMM、CRF等都可以用在詞性標註上。

詞性標註規範:
目前有北大的詞性標註集和賓州詞性標註集,這裏採用的是北大的詞性標註集。

這裏說下jieba的詞性標註:
jieba詞性標註有點類似於其分詞流程,也是基於規則和統計的方法,也就是在詞性標註的過程中,詞典匹配和HMM共同作用。

  • 首先基於正則表達式判斷是否是漢字
  • 若不是漢字,將繼續通過正則表達式進行類型判斷。
  • 若是漢字,則基於前綴詞典構建有向無環圖,再基於有向無環圖計算最大概率路徑,同時在前綴詞典中找出它所分出的詞性,若未找到,則賦予“x”,代表未知。如有未登錄詞,則會通過HMM進行詞性標註。

那麼HMM是怎樣應用於詞性標註的呢?
這裏簡單說下,就是在分詞任務中,我們用’B’、’M’、’S’、’E’四中標籤,與句子中的每個字符一一對應,而在詞性標註中jieba採用了聯合模型的方式,即將基於字標註的方法和詞性標註結合起來,使用複合標註集。比如:‘人民’,分詞爲‘BE’,而詞性爲‘n’,這時‘人’的標註就是‘B_n’,而‘民’的標註就是‘E_n’,剩下的就和HMM分詞過程一致了,但這裏要更換適合的訓練語料庫。

import jieba.posseg as psg

sent='中文分詞是文本處理不可或缺的一步!'
seg_list=psg.cut(sent)
print(''.join(['{0}/{1}'.format(w,t) for w,t in seg_list]))

運行結果:

中文/nz分詞/n是/v文本處理/n不可或缺/l的/uj一步/m!/x

這裏只是對jieba詞性標註做了一個簡單介紹,以後再深入討論。

參考:《pytho自然語言處理實戰 核心技術與算法》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章