1. 程式人生 > >NLP --- 詞性標註

NLP --- 詞性標註

上前幾節我們簡單介紹了命名體識別的演算法,其實主要的方法就是HMM和CRF了,因為可以轉換為標註問題,這裡都可以使用HMM和CRF,本節我們將介紹另外一個重要的知識點即詞性標註,同樣的在宗老師的書裡都有詳細的講解,這裡就簡單的講解一下,那麼我們下面就開始:

Part-of-speech,是重要的基礎性工作,為後續的句法分析等進一步工作提供基礎。分詞,命名實體識別,詞性標註並稱漢語詞法分析“三姐妹”。

詞性標註即在給定的句子中判定每個詞最合適的詞性標記。詞性標註的正確與否將會直接影響到後續的句法分析、語義分析,是中文資訊處理的基礎性課題之一。常用的詞性標註模型有 N 元模型、隱馬爾科夫模型、最大熵模型、基於決策樹的模型等。其中,隱馬爾科夫模型是應用較廣泛且效果較好的模型之一。這裡主要以HMM為主進行講解即基於隱馬爾科夫模型的詞性標註方法。

漢語詞性標註的困難

作為一種孤立語,漢語的特點是缺乏嚴格意義上的形態標誌和形態變化,漢語詞性標註的困難在於:
①漢語缺乏詞的形態變化,不能像印歐語那樣,直接從詞的形態變化上來判別詞的類別;
②常用詞的兼類現象嚴重。兼類詞使用頻度高,兼類現象複雜多樣,覆蓋面廣,又涉及漢語中大部分詞類,使得詞類歧義排除的任務困難重重;
③研究者本身的主觀因素也會造成兼類詞處理的困難。據統計,常見的漢語兼類現象具有以下的分佈特徵:其一,在漢語詞彙中,兼類詞數量不多,約佔總詞條數的 5- 11% 。其二,兼類詞的使用頻率很高,越常用的詞,其詞性兼類現象越嚴重。其三,兼類現
象分佈不均。如何高效地進行兼類詞排歧是目前詞性標註面臨的主要困難之一。

那什麼是詞性標註呢?就是在句子中的分詞後加上詞的性質如名詞(n)、動詞(v)、等等。下面給出一個矩陣就是上面麼的一句話的詞性標註,大家來看看,這裡大家也可以自己試試,網址入口

基本上就是這樣的形式,這裡我們就知道了什麼是詞性了,那麼下面我們就開始看看上面的分詞的原理,上面的分詞原理是基於HMM進行分詞的,下面我們就詳細來看看他是怎麼做的,其實我們應該很熟悉了,這裡的分詞稱為可視狀態,現在我們給他們標註詞性就是隱藏狀態了。求出隱藏狀態就可以了,這就是HMM演算法呀。
 

基於HMM的詞性標註演算法

實現基於HMM的詞性標註方法時,模型的引數估計是其中的關鍵問題。根據前面的介紹,我們可以隨機地初始化HMM的所有引數,但是,這將使詞性標註問題過於缺乏限制。因此,通常利用詞典資訊約束模型的引數。假設輸出符號表由單詞構成(即詞序列為HMM的觀察序列),如果某個對應的“詞彙一詞性標記”對沒有被包含在詞典中,那麼,就令該詞的生成概率(符號發生概率)為0,否則,該詞的生成概率為其可能被標記的所有詞性個數的倒數,即

                                                                          \large b_{j,l} = \frac{b^*_{i,l}C(w^l)}{\sum _{w^m}b^*_{j,m}C(w^m)}

其中,\large b_{j,l}為詞\large l由詞性標註\large j生成的概率,\large C(w^l)為詞\large w^l出現的次數,分母為在詞典中所有詞彙範圍的求和,而:

該式中\large T(w^j)為詞\large w^j允許標記的詞性個數。

這種方法是1985年由F.Jelinek提出的,我們不妨稱它為Jelinek方法。這種方法等同於用最大似然估計來估算概率\large P(w^k|t^i)以初始化HMM,並假設每個詞與其每個可能的詞性標記出現的概率相等[Manning and Schütze,1999]。
大傢俱體的請參考宗老師的課本吧,我這裡直接介紹HMM的詞性標註了:

對於詞性標註任務來說,已知的單詞序列\large w_1,w_2,...,w_m為觀察值序列,詞性序列\large t_1,t_2,...,t_m便為隱含著的狀態序列。訓練過程實際就是統計詞性轉移矩陣\large [a_{ij}]和詞性到單詞的輸出矩陣\large [b_{ik}],而求解的過程實際上就是用維特比演算法求可能性最大的狀態序列。
現在假設\large W是分詞後的詞序列,\large T\large W某個可能的詞性標註序列,其中\large T^*為最終的標註結果,即概率最大的詞性序列,則有:

 根據貝葉斯定理:

則有:

對於一個給定的詞序列,其詞序列的概率\large P(W)對於任意一個標記序列都是相同的,因此我們可以在計算\large T^*時忽略它,則:

進行N元語法假設,可以得出:

在此,我們利用二元語法模型即一階隱馬爾可夫模型,則有:

所以:

其中,\large P(W_i|t_i)指的是詞性為\large t_i的詞\large w_i的概率,\large P(t_i|t_{i-1})則是指詞性\large t_{i-1},到詞性\large t_i的轉移概率。我們可以利用最大似然度估計從相對頻度來估計這兩個概率:

\large c(w_i,t_i)是指語料庫中,詞\large w_i詞性為\large t_i的出現次數,\large c(t_i)表示詞性的出現次數,\large c(t_{i-1},t_i)則是相鄰兩個詞性為\large t_{i-1},t_i的次數。
下面是一個詞性標註的例項:“人們的要求與願望”
例子:人民(n,非兼類)的(u,非兼類)要求(n/v,兼類)與(c,非兼類)願望(n,非兼類)
對兼類詞標註的計算資料:

我們在計算\large T^*的值時,需要用到公式:\large P(w_i|t_i) = c(w_i,t_i)/c(t_i)\large P(t_i|t_{i-1}) = c(t_{i-1})/c(t_{i-1}).其中\large c(w_i,t_i),c(t_i),c(t_{i-1},t_i)的資料都需要從語料庫中獲得。

語料庫是按照一定原則組織在一起的真實自然語言資料包括書面語和口語集合,土要用於研究自然語言的規律,特別是統計語言學模型的訓練以及相關係統的評價和評測。語料庫分為生語料庫和熟語料庫,生語料是指那些沒有經過處理的原始文字,而熟語料是經過分詞和詞性標註之後的語料。因為計算所用資料需要詞及其詞性資訊,所以必須利用熟語料庫進行資料統計,如下例子:



通過計算分別求出上面的概率,然後通過維特比演算法求出模型即可,這裡不再詳細敘述,詳情請檢視宗老師的書相關章節。