系統學習NLP(十)--詞性標註演算法綜述

Eason.wxd發表於2019-03-09

      詞性標註:將句子中兼類詞的詞性根據上下文唯一地確定下來。詞性(part-of-speech)是詞彙基本的語法屬性,通常也稱為詞類。詞性標註就是在給定句子中判定每個詞的語法範疇,確定其詞性並加以標註的過程,是中文資訊處理面臨的重要基礎性問題。

      和分詞一樣,中文詞性標註也存在著很多難點,比如一詞多詞性,未登入詞處理等諸多問題。通過基於字串匹配的字典查詢演算法和基於統計的詞性標註演算法,可以很好的解決這些問題。一般需要先將語句進行分詞,然後再進行詞性標註。

詞性標註難點

詞性作為詞語基本的語法屬性,是詞語和語句的關鍵性特徵。詞性種類也很多,ICTCLAS 漢語詞性標註集歸納的詞性種類及其表示:

ICTCLAS 漢語詞性標註集

程式碼 名稱 幫助記憶的詮釋
Ag 形語素 形容詞性語素。形容詞程式碼為a,語素程式碼g前面置以A。
a 形容詞 取英語形容詞adjective的第1個字母。
ad 副形詞 直接作狀語的形容詞。形容詞程式碼a和副詞程式碼d並在一起。
an 名形詞 具有名詞功能的形容詞。形容詞程式碼a和名詞程式碼n並在一起。
b 區別詞 取漢字“別”的聲母。
c 連詞 取英語連詞conjunction的第1個字母。
Dg 副語素 副詞性語素。副詞程式碼為d,語素程式碼g前面置以D。
d 副詞 取adverb的第2個字母,因其第1個字母已用於形容詞。
e 嘆詞 取英語嘆詞exclamation的第1個字母。
f 方位詞 取漢字“方” 的聲母。
g 語素 絕大多數語素都能作為合成詞的“詞根”,取漢字“根”的聲母。
h 前接成分 取英語head的第1個字母。
i 成語 取英語成語idiom的第1個字母。
j 簡稱略語 取漢字“簡”的聲母。
k 後接成分  
l 習用語 習用語尚未成為成語,有點“臨時性”,取“臨”的聲母。
m 數詞 取英語numeral的第3個字母,n,u已有他用。
Ng 名語素 名詞性語素。名詞程式碼為n,語素程式碼g前面置以N。
n 名詞 取英語名詞noun的第1個字母。
nr 人名 名詞程式碼n和“人(ren)”的聲母並在一起。
ns 地名 名詞程式碼n和處所詞程式碼s並在一起。
nt 機構團體 “團”的聲母為t,名詞程式碼n和t並在一起。
nz 其他專名 “專”的聲母的第1個字母為z,名詞程式碼n和z並在一起。
o 擬聲詞 取英語擬聲詞onomatopoeia的第1個字母。
p 介詞 取英語介詞prepositional的第1個字母。
q 量詞 取英語quantity的第1個字母。
r 代詞 取英語代詞pronoun的第2個字母,因p已用於介詞。
s 處所詞 取英語space的第1個字母。
Tg 時語素 時間詞性語素。時間詞程式碼為t,在語素的程式碼g前面置以T。
t 時間詞 取英語time的第1個字母。
u 助詞 取英語助詞auxiliary 的第2個字母,因a已用於形容詞。
Vg 動語素 動詞性語素。動詞程式碼為v。在語素的程式碼g前面置以V。
v 動詞 取英語動詞verb的第一個字母。
vd 副動詞 直接作狀語的動詞。動詞和副詞的程式碼並在一起。
vn 名動詞 指具有名詞功能的動詞。動詞和名詞的程式碼並在一起。
w 標點符號  
x 非語素字 非語素字只是一個符號,字母x通常用於代表未知數、符號。
y 語氣詞 取漢字“語”的聲母。
z 狀態詞 取漢字“狀”的聲母的前一個字母。

詞性標註中的難點主要有:

  1. 相對於英文,中文缺少詞形態變化,不能從詞的形態來識別詞性
  2. 一詞多詞性很常見。統計發現,一詞多詞性的概率高達22.5%。而且越常用的詞,多詞性現象越嚴重。比如“研究”既可以是名詞(“基礎性研究”),也可以是動詞(“研究電腦科學”)。
  3. 詞性劃分標準不統一。詞類劃分粒度和標記符號等,目前還沒有一個廣泛認可的統一的標準。比如LDC標註語料中,將漢語一級詞性劃分為33類,而北京大學語料庫則將其劃分為26類。詞類劃分標準和標記符號的不統一,以及分詞規範的含糊,都給詞性標註帶來了很大的困難。jieba分詞采用了使用較為廣泛的ICTCLAS 漢語詞性標註集規範。
  4. 未登入詞問題。和分詞一樣,未登入詞的詞性也是一個比較大的課題。未登入詞不能通過查詢字典的方式獲取詞性,可以採用HMM隱馬爾科夫模型等基於統計的演算法。
     

一、基於規則的詞性標註方法

1.原理

  利用事先制定好的規則對具有多個詞性的詞進行消歧,最後保留一個正確的詞性。基於規則的詞性標註方法是人們提出較早的一種詞性標註方法,其基本思想是按兼類詞(擁有多種可能詞性的詞)搭配關係和上下文語境建造詞類消歧規則,早期的規則一般由人編寫。然而隨著語料庫規模的逐步增大,以人工提取規則的方式顯然是不現實的,於是人們提出了基於機器學習的規則自動提取方法。

        基於規則的錯誤驅動的機器學習方法的基本思想是,首先運用初始狀態標註器標識未標註的文字,由此產生已標註的文字。文字一旦被標註以後,將其與正確的標註文字進行比較,學習器可以從錯誤中學到一些規則,從而形成一個排序的規則集,使其能夠修正已標註的文字,使標註結果更接近於參考答案。

         這樣,在所有學習到的可能的規則中,搜尋那些使已標註文字中的錯誤數減少最多的規則加入到規則集,並將該規則用於調整已標註的文字,然後對已標註的語料重新打分(統計錯誤數)。不斷重複該過程,直到沒有新的規則能夠使已標註的語料錯誤數減少。最終的規則集就是學習到的規則結果。

          這種方法的標註速度要快於人工,但仍然存在著學習時間過長的問題,改進方法是,在演算法的每次迭代過程中,只調整受到影響的小部分規則,而不需要搜尋所有的轉換規則。因為每當一條獲取的規則對訓練語料實施標註後,語料中只有少數詞性會發生改變,而只有在詞性發生改變的地方,才影響與該位置相關的規則的得分。

2.步驟

  ①對詞性歧義建立單獨的標註規則庫

  ②標註時,查詞典,如果某個詞具有多個詞性,則查詢規則庫,對具有相同模式的歧義進行排歧,否則保留。

  ③程式和規則庫是獨立的兩部分。

3.例子

  TAGGIT系統

二、基於統計的詞性標註方法

1、原理

  先對部分進行手工標註,然後對新的語料使用統計方法進行自動標註。

2、語言模型

  (1)一個語言句子的資訊量

 一個句子s = w1w2……wn的資訊量量可以用熵來表示:H = - ∑p(w1,w2,…,wn) log p(w1,w2,…,wn),概率p(s)的大小反映了這個詞串在該語言中的使用情況。

  (2)n元語法模型

①一元語法,wi的出現獨立於歷史

  p(w1,w2,…,wn) = p(w1)*p(w2)*p(w3)…p(wn)

②二元語法,wi的出現決定於wi-1

  p(w1,w2,…,wn) = p(w1)*p(w2|w1)*p(w3|w2)…p(wn|wn-1)

③三元語法,wi的出現決定於wi-1,wi-2

  p(w1,w2,…,wn) =p(w1)*p(w2|w1)*p(w3|w2,w1)…p(wn|wn-1,wn-2)

  (3)資料平滑——Laplace法則

3、詞性標註模型

①另W=w1w2….wn是由n個片語成的詞串,T=t1t2…tn是詞串W對應的標註串,其中tk是wk的詞性標註。

②根據HMM模型,計算使得條件概率p(T|W)值最大的那個T’= argmaxp(T|W)

③根據貝葉斯公式:p(T|W) = P(T)*P(W|T)/P(W)。由於詞串不變,p(W)不影響總的概率值,因此繼續簡化為:

      p(T|W) = P(T)*P(W|T),其中p(T) = p(t1|t0)*p(t2|t1,t0)…p(ti|ti-1),

根據一階HMM獨立性假設,可得:p(T) = p(t1|t0)*p(t2|t1)…p(ti|ti-1),

即P(ti|ti-1) = 訓練語料中ti出現在ti-1之後的次數/訓練語料中ti-1出現的總次數。

③根據貝葉斯公式:p(W|T) = p(w1|t1)*p(w2|t2,t1)…p(wi|ti,ti-1,…,t1)。根據一階HMM獨立性假設,可得p(W|T) = p(w1|t1)*p(w2|t2)…p(wi|ti)。所以

4、詞典的預處理

  將已標註好詞性的訓練語料集整理出:①每個詞在不同詞性下出現的次數;②每個詞性在語料集中出現的總次數。

演算法介紹

  一、CLAWS演算法(Contituent-Likelihood Automatic Word-tagging System 成分似然性自動詞性標註系統) 

1、介紹

  早在60年代,國外學者就開始研究英語文字的自動詞類標註問題,提出了一些消除兼類詞歧義的方法,建立了一些自動詞性標註系統。1983年,裡奇(G. Leech)和加塞德(R. Garside)等人建立了CLAWS系統,用概率統計的方法來進行自動詞性標註,他們使用了133×133的詞類共現概率矩陣,通過統計模型來消除兼類詞歧義,自動標註的正確率達到了96%.

2、主要原理

  先從待標註的LOB語料庫中選出來部分語料,叫做“訓練集”(Training Set), 對訓練集中的語料逐詞進行詞性的人工標註, 然後利用計算機對訓練集中的任意兩個相鄰標記的同現概率進行統計,形成一個相鄰標記的同現概率矩陣。

  進行自動標註時,系統從輸入文字中順序地擷取一個有限長度的詞串,這個詞串的首詞和尾詞的詞性應該是唯一的,這樣的詞串叫做跨段(span),記為W0,W1,W2,…,Wn,Wn+1。其中, W0和Wn+1 都是非兼類詞, W1,W2,…,Wn 是n個兼類詞。

  利用同現概率矩陣提供的資料來計算這個跨段中由各個單詞產生的每個可能標記的概率積,並選擇概率積最大的標記串作為選擇路徑(path),以這個路徑作為最佳結果輸出。

3、演算法描述

①一個句子首先用全分割法或Viterbi演算法分割成N個詞;

②這N個詞,首先查詞典,標上所有可能的詞類;

③N個相鄰的詞每一種詞類的排列叫做一條路徑;

④求出具有最大似然估計值的那條路徑,即最佳路徑;

⑤最佳路徑上所對應的標註為這N個詞的標註。

4、舉例分析

句子:一把青菜

①用全分割法或Viterbi法將句子分割成: 一,把,青菜

②找出每個詞包含的詞性:一/s  把/n/v/l  青菜/n

③計算每一條路徑的概率:

  P(s,n,n|一,把,青菜) =P(一|s)* P(把|n)*P(青菜|n)

  P(s,v,n|一,把,青菜) =P(一|s)* P(把|v)*P(青菜|n)

  P(s,l,n|一,把,青菜) =P(一|s)* P(把|l)*P(青菜|n)

其中:

④取概率最大的那條路徑為結果。

5、優點分析

  通過統計模型來消除兼類詞歧義,自動標註的正確率達到了96%.

6、缺點分析

      需要複雜的資料結構來儲存路徑,儲存概率結果,空間複雜度和時間複雜度都非常高,路徑數是一個句子中的所有詞包含的詞性個數相乘的結果。

7、改良方向

      1988年,德洛斯(S. J. DeRose)對CLAWS系統作了一些改進,利用線性規劃的方法來降低系統的複雜性,提出了VOLSUNGA演算法,大大地提高了處理效率,使自動詞性標註的正確率達到了實用的水平。

  二、VOLSUNGA 詞性標註演算法 

1、主要原理

  VOLSUNGA演算法從左到右,對於當前考慮的詞,只保留通往該詞的每個詞類的最佳路徑,然後繼續將這些路徑與下個詞的所有詞類標記進行匹配,分別找出通往這個詞的每個標記的最佳路徑,後面的詞依次重複。本質上相當於貪心演算法中的單源最短路徑Dijkstra演算法。

2、演算法描述

①一個句子首先用全分割法或Viterbi演算法分割成N個詞

②這N個詞,首先查詞典,標上所有可能的詞類

③N個相鄰的詞中每一種詞類的排列叫做一條路徑

④遍歷所有詞,每個詞都計算各個詞性下的一階HMM值,取值最大的為最終詞性,儲存該詞性和概率,捨棄其他詞性。

3、優點分析

①對CLAWS演算法的改進主要有兩個方面:

(a)在最佳路徑的選擇方面,不是最後才來計算概率積最大的標記串,而是沿著從左至右的方向,採用“步步為營”的策略,對於當前考慮的詞,只保留通往該詞的最佳路徑,捨棄其他路徑,然後再從這個詞出發,將這個路徑同下一個詞的所有標記進行匹配,繼續找出最佳的路徑,捨棄其他路徑,這樣一步一步地前進,直到整個跨段走完,得出整個跨段的最佳路徑作為結果輸出。

(b)根據語料庫統計出每個詞的相對標註概率(Relative Tag Probability),並用這種相對標註概率來輔助最佳路徑的選擇。

②VOLSUNGA演算法大大地降低了CLAWS演算法的時間複雜度和空間複雜度,提高了自動詞性標註的準確率。

4、缺點分析

  CLAWS演算法和VOLSUNGA演算法都是基於統計的自動標註方法,僅僅根據同現概率來標註詞性。但是,同現概率僅只是最大的可能而不是唯一的可能,以同現概率來判定兼類詞,是以捨棄同現概率低的可能性前提的。

5、改進方向

  為了提高自動詞性標註的正確率,還必須輔之以基於規則的方法,根據語言規則來判定兼類詞。

總結:

1.詞性標註(Part-Of-Speech tagging, POS tagging)也被稱為語法標註(grammatical tagging)或詞類消疑(word-category disambiguation),是語料庫語言學(corpus linguistics)中將語料庫內單詞的詞性按其含義和上下文內容進行標記的文字資料處理技術 。

2.詞性標註主要被應用於文字挖掘(text mining)和NLP領域,是各類基於文字的機器學習任務,例如語義分析(sentiment analysis)和指代消解(coreference resolution)的預處理步驟。

3.詞性標註的機器學習演算法主要為序列模型,包括HMM、最大熵馬爾可夫模型(Maximum Entropy Markov Model, MEMM)、條件隨機場(Conditional random fields,CRFs)等廣義上的馬爾可夫模型成員 ,以及以迴圈神經網路(Recurrent Neural Network, RNN)為代表的深度學習演算法 。此外,一些機器學習的常規分類器,例如支援向量機(Support Vector Machine, SVM)在改進後也可用於詞性標註  。

相關文章