天天看點

【詞性标注】一篇文章弄懂詞性标注

詞性标注概述

▶ 詞類

同一個詞類的詞具有相同的文法功能、在同樣的位置中出現

劃分詞類的目的在于描寫語句的結構規則,以基于模式自動處理成批的語料(便于自然語言處理)

詞類 = 實詞(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标注器
  • 組合标注器

本篇文中着重于理論,并未過多設計其代碼實作

這部分内容可以戳這裡>_<:《【詞性标注】詞性标注器設計》

繼續閱讀