詞性标注概述
▶ 詞類
同一個詞類的詞具有相同的文法功能、在同樣的位置中出現
劃分詞類的目的在于描寫語句的結構規則,以基于模式自動處理成批的語料(便于自然語言處理)
詞類 = 實詞(content) + 虛詞(function)
- 實詞——動詞、形容詞、代詞、量詞、數詞
- 虛詞——連詞、助詞、語氣詞
▶ 詞性
詞性是對具體的詞,根據其文法,兼顧其意義,将其歸類的結果
▶ 詞性标注
詞性标注( POS tagging)就是在給定的句子中,判定每個詞的文法範疇,确定詞性并加以标注的過程
- 單類詞(隻具有單一詞性的詞):可以直接查詞典
- 兼類詞(具有多種詞性的詞):要根據上下文進行推斷,即消歧
# 兼類詞
import thulac
thu = thulac.thulac()
list1 = thu.cut("他是人民代表") # 代表:n
list2 = thu.cut("他代表了人民") # 代表:v
詞性标注的難點在于:兼類詞和未登入詞的詞性标注
漢語詞性标注的特殊問題
❶ 形态标準
在英文中,-ing表示動名詞,-ed表示過去式,-s表示名詞複數…
而中文,是缺乏這種形态變化的——漢語的絕大多數詞彙不具有字首、字尾、重疊、黏附的形态變化
是以,根據形态劃分中文詞性,是行不通的。
某種意義上,雖然中文的形态變化匮乏,但也不是沒有:
美化、綠化、現代化采用“化”為字尾;小貓、小狗、小兔子采用“小”作為字首;商量商量、琢磨琢磨、漂漂亮亮、畏畏縮縮又是采用了“重複”的形态變化
隻是這些,并不具備參考意義罷了———這樣的詞又有幾個呢?
❷ 意義标準
英文中:good永遠是形容詞,fight永遠是動詞,plane永遠是名詞…
而中文,複雜太多太多——“我很好”,“這個loli好可愛”,“好”是形容詞還是副詞?“這人頂好”,“我到達了山頂”,“你不要頂嘴”,“頂”的詞性呢?
是以,脫離了文法去談詞性,是很難具有語言學價值的。
❸ 分布标準
英文中:标準的主謂賓、定語從句、主語從句…
而中文,很難像英文這樣保證某個詞分布在固定的位置。一個詞可能以一種奇怪的姿态與另一個詞組合在一起,并出現在奇怪的位置
是以,基于分布标準進行中文詞性标注也不是最好的選擇。
❹ 兼類詞
兼類詞是中文詞性标注的最大敵人———漢語中的兼類詞占比達47%(悲
詞性标注的思路
▊基于規則
- 基本思想:基于上下文指定标注規則
- 缺點:人工成本昂貴(語言學家編寫規則);移植性查(一種語言一種規則);新規則與舊規則的沖突
▊基于機器學習
- 基本思想1:有監督的機器學習(太依賴訓練語料)
- 基本思想2:無監督的機器學習(即對相似的兼類詞進行聚類)
- 基本思想3:半監督的機器學習(少量的已标注樣本 + 大量的未标注樣本)
▊基于規則和機器學習
- 基本思想:上面兩種思路的折中
- 具體過程:初始詞性标注(全部可能) -> 通過規則消歧 -> 通過機器學習消歧 -> 未登入詞推測 -> 人工校對 -> 最終詞性标注
▊感覺機
- 基本思想:感覺機好比神經網絡的一個神經元——它隻能做而分類,即輸出興奮(1)和抑制(0);用多個感覺機組成一層神經網絡,進行詞性的标注
- 補充:感覺機其實和二進制線性分類問題的常客——SVM支援向量機十分相似,算是低階版的SVM,也比SVM要年長很多
詞性标注工具
▶ thulac
import thulac
# 預設模式(如果想隻分詞不标注,設定參數seg_only=True)
thu = thulac.thulac()
list1 = thu.cut('中華人民共和國萬歲,世界人民大團結萬歲')
print(list1)

▶ jieba
import jieba
from jieba import posseg
list2 = list(jieba.posseg.cut('中華人民共和國萬歲,世界人民大團結萬歲'))
print(list2)
設計詞性标注器
- 預設标注器
- 正則标注器
- 查詢标注器
- Unigram标注器
- Bigram标注器
- 組合标注器
本篇文中着重于理論,并未過多設計其代碼實作
這部分内容可以戳這裡>_<:《【詞性标注】詞性标注器設計》