1. 程式人生 > >NLP ---分詞詳解(常見的五種分詞技術一)

NLP ---分詞詳解(常見的五種分詞技術一)

上一節我們簡單的介紹了分詞的起源,本節將介紹五種分詞效果比較好的分詞方法,他們都是基於統計的,分別為:N最短路徑法、基於詞的n元語法模型的分詞方法、由字夠詞的漢語分詞方法、基於詞感知機演算法的漢語分詞方法、基於字的生成模型和區分式模型相結合的漢語分詞方法。下面我們就一一的介紹他們:

N最短路徑法

N一最短路徑方法,其基本思想是根據詞典,找出字串中所有可能的詞,構造詞語切分有向無環圖。每個詞對應圖中的一條有向邊,並賦給相應的邊長(權值)。然後針對該切分圖,在起點到終點的所有路徑中,求出長度值按嚴格升序排列(任何兩個不同位置上的值一定不等,下同)依次為第1,第2,…,第i,…,第N的路徑集合作為相應的粗分結果集。如果兩條或兩條以上路徑長度相等,那麼他們的長度並列第i,都要列人粗分結果集,而且不影響其他路徑的排列序號,最後的粗分結果集合大小大於或等於N。
模型求解


設待分字串S = c_1,c_2,...,c_n其中c_i(i=1,2,…,n)為單個的字,n為串的長度,n\geq 1。建立一個節點數為n+1的切分有向無環圖G,各節點編號依次為\large V_0,V_1,V_2,...,V_n
通過以下兩種方法建立G所有可能的詞邊。
(1) 相鄰節點V_{k-1},V_k之間建立有向邊\left \langle V_{k-1},V_k \right \rangle,邊的長度值為L_k,邊對應的詞預設為c_k(k=1,2,..,n)
(2)若w =c_i,c_{i+1},...,c_j是一個詞,則節點V_{i-1},V_j之間建立有向邊\left \langle V_{i-1},V_j \right \rangle,邊的長度值為L_w,邊對應的詞為w(0< i< j\leq n)
這樣,待分字串S中包含的所有詞與切分有向無環圖G中的邊一一對應。如下圖所示:

       在非統計粗分模型中,我們假定所有的詞都是對等的,為了計算方便,不妨將詞的對應邊長的邊長均設為1。
       設NSP為V_0

V_n的N一最短路徑集合;而RS是最終的N一最短路徑粗分結果集,則RS是NSP對應的分詞結果,即我們所求的粗分結果集。因此,N一最短路徑方法詞語粗切問題轉化為如何求解有向無環圖G的集合NSP。
N一最短路徑求解與複雜度分析
求解有向無環圖G的集合NsP,可以採取貪心方法。我們使用的演算法是基於Dijk-star的一種簡單擴充套件。改進的地方在於每個節點處記錄N個最短路徑值,並記錄相應路徑上當前節點的前驅。如果同一長度對應多條路徑,必須同時記錄這些路徑上當前節點的前驅。最後通過回溯即可求出NSP。
我們以“他說的確實在理”為例,給出了3一最短路徑的求解過程。如下圖所示。

上圖,虛線是回溯出的是第一條最短路徑,對應的粗分結果為:“他/說/的/確實/在理/”,Table(2),Table(3),Table(7)分別為結點2、3、....、7對應的資訊記錄表,Table(0)、Table(1)的資訊記錄表沒有給出。每個結點的資訊記錄表裡的編號為路徑不同長度的編號,按由小到大的順序排列,編號最大不超過N。如Table(5)表示從結點0出發到達結點5有兩條長度為4的路徑(分別為0一1一2一4一5和0一1一2一3一5)和一條長度為5的路徑(0一1一2一3一4一5)。前驅(i,j)

表示沿著當前路徑到達當前結點的最後一條邊的出發結點為i,即當前結點的前一個結點為i,相應的邊為結點i的資訊記錄表中編號為j的路徑。如果j=0,表示沒有其他候選的路徑。如結點7對應的資訊記錄表Table(7)中編號為1的路徑前驅(5,1)表示前一條邊為結點5的資訊表中第1條路徑。類似地,Table(5)中的前驅(3,1)表示前驅為結點3的資訊記錄表中的第1條路徑。     Table(3)中的(2,0)表示前驅邊的出發點為結點2,沒有其他候選路徑。資訊記錄表為系統回溯找出所有可選路徑提供了依據。
 基於統計資訊的粗分模型

考慮到在非統計模型構建粗切分有向無環圖的過程中,給每個詞對應邊的長度賦值為10隨著字串長度”和最短路徑數N的增大,長度相同的路徑數急劇增加,同時粗切分結果數量必然上升。例如,當N=2時,句子“江澤民在北京人民大會堂會見參加全國法
院工作會議和全國法院系統打擊經濟犯罪先進集體表彰大會代表時要求大家要充分認識打擊經濟犯罪工作的艱鉅性和長期性”的粗切分結果居然有138種之多。這樣,大量的切分結果對後期處理以及整個分詞系統性能的提高非常不利。因此,張華平等人(2002)又給出了一種基於統計資訊的粗分模型。
      假定一個詞串W經過通道傳送,由於噪聲干擾而丟失了詞界的切分標誌,到輸出端便成了漢字串C。N一最短路徑方法詞語粗分模型可以相應地改進為:求N個候選切分W,使概率P(W|C)為前N個最大值:

                                                                       \large P(W|C) = \frac{P(W)P(C|W)}{P(C)}

其中,P(C)是漢字串的概率,他是一個常數,不必考慮,從詞串恢復到漢字串的概率P(C|W)=1(只有唯一的一種方式)。

因此,粗分的目標就是確定P(W)最大的N種切分結果。為了簡化計算,張華平等人採用一元統計模型。假設W = w_1w_2...w_m是字串S =c_1c_2...c_n的一種切分結果。w_i是一個詞,P(w_i)表示詞w_i出現的概率,在大規模語料訓練的基礎上通過最大似然估計方法求得。切分W的概率為
                                                                         \large P(W) = \prod_{i=1}^{m}P(w_i)
為了處理方便,令P*(W) = -ln(P(W)) = \sum_{i=1}^{m}[-ln(P(w_i))],這樣-lnP(w_i)就可以看做是詞w_i在切分有向無環圖中對應的邊長(做適當的資料平滑處理)。於是,求上式的最大值問題轉化為求P^*(W)的最小值問題。 針對修改了邊長後的切分有向無環圖G·,直接使用非統計粗分模型的求解演算法,就可以獲得問題的最終解。
      張華平等(2002)通過使用185192個句子進行分詞測試,在N=10的情況下,非統計粗分模型和統計粗分模型切分句子的召回率分別為99.73‰和99.94%,均高於最大匹配方法和最短路徑方法獲得的召回率。N一10時統計粗分模型的召回率比全切分方法[馬晏,1996]的召回率低0.06%,但粗分結果切分句子平均數僅為全切分方法的1/64。

分詞效能評測指標

自動分詞系統主要效能指標是分詞的精確率P和召回率R,他們的定義為:

這裡假設有已知的分詞的文字,即知道文字的正確的總分詞數假如為1200詞,然後我通過自動分詞工具進行對此分詞,假如,自動分詞把該文字分成1000詞 ,其中正確分詞的有900個詞,那麼精確率就是900/1000=0.9,召回率是把切分正確的詞除以標準文字的總詞數即為900/1200 = 0.75,這兩個是指標是有矛盾的,假如我提高召回率,只需要提高切分正確的總詞數即可,然而想要提高這個指標需要提高分詞的總詞數,但是一旦提高這個,精確率就會降低,因此這兩個指標是相互制約的,如何解決呢?

一般來說,精確率P和召回率R是相互制約的,提高召回率的措施往往導致精確率的下降,反之亦然。因此在比較兩個分詞系統的效能時,只考察這兩個指標中的一個往往是片面的。為了對比的方便,學術界經常採用P和R的調和平均值F作為第三個效能評價指
標。下面是F的計算公式,式中\beta是P的加權因子(一般令\beta=1):

下面我們繼續看看其他的分詞方法。

 基於詞的n元語法模型的分詞方法

基於詞的n元文法模型是一個典型的生成式模型,早期很多統計分詞方法均以它為基本模型,然後配合其他未登入詞識別模組進行擴充套件。其基本思想是:首先根據詞典(可以是從訓練語料中抽取出來的詞典,也可以是外部詞典)對句子進行簡單匹配,找出所有可能的詞典詞,然後,將它們和所有單個字作為結點,構造的”元的切分詞圖,圖中的結點表示可能的詞候選,邊表示路徑,邊上的”元概率表示代價,最後利用相關搜尋演算法(如Viterbi演算法)從圖中找到代價最小的路徑作為最後的分詞結果。以輸人句子“研究生物學”為例,下圖給出了基於二元文法的切分詞圖。

由於未登入詞的識別是漢語分詞過程中的關鍵問題之一,因此,很多專家認為未登入詞的識別與歧義切分應該是一體化處理的過程,而不是相互分離的。RichardSproat等人(1996)曾提出了基於加權的有限狀態轉換機(weightedfinit&statetransducer)模型與未登入詞識別一體化切分的實現方法。受這種方法的啟發,J.Gao等人(2003)提出了基於改進的信源通道模型的分詞方法。現在簡要介紹一下這種基於統計語言模型的分詞方法。
為了給自動分詞任務一個明確的定義,J,Gao等人(2003)對文字中的詞給出了一個可操作的定義,把漢語詞定義成下列4類:
(1)待切分文字中能與分詞詞表中任意一個詞相匹配的欄位為一個詞。
(2)文字中任意一個經詞法派生出來的詞或短語為一個詞,如重疊形式(高高興興,說說話、天天)、字首派生(非黨員、副部長)、字尾派生(全面性、朋友們)、中綴派生(看得出、看不出)、動詞加時態助詞(克服了、蠶食著)、動詞加趨向動詞(走出、走出來)、動詞的分離形式(長度不超過3個字,如:洗了澡、洗過澡),等等。
(3)文字中被明確定義的任意一個實體名詞(如:日期、時間、貨幣、百分數、溫度、長 度、面積、體積、重量、地址、電話號碼、傳真號碼、電子郵件地址等)是一個詞。
(4)文字中任意一個專有名詞(人名、地名、機構名)是一個詞。在這個定義中沒有考慮文字中的新詞問題。另外需要注意的是,這個定義中很多約定與《資訊處理用限定漢語分詞規範(CJB13715)》中的規定不一致,如,按照CJB13715國家分詞規範,“AAB、ABAB”重疊形式的動詞片語應予切分,例如:研究研究;按照GB137巧國家分詞規範,除了“人們、哥兒們、爺兒們”等個別分詞單位以外,僅表示前一個名詞性分詞單位複數的“們”應該單獨切分,例如,朋友們,等等。但這些定義上的差異
並不影響對分詞演算法的理解,在這裡我們更關心的是基於統計語言模型的分詞方法本身的問題。

假設隨機變數S為一個漢字序列,W是S上所有可能切分出來的詞序列,分詞過程應該是求解使條件概率P(W|S)最大的切分出來的詞序列W^*,即:

根據貝葉斯公式可得:

分母歸一化的:

 為了把4類詞納人同一個統計語言模型框架,黃昌寧等(2003)分別把專有名詞的人名(PN)、地名(LN)、機構名(ON)各作為一類,實體名詞中的日期(dat)、時間(tim)、百分數(per)、貨幣(mon)等作為一類處理,簡稱為實體名,對詞法派生詞(MM,')和詞表詞(LW)則每個詞單獨作為一類。這樣,按表7一2可以把一個可能的詞序列w轉換成一個可能的詞類序列C =c_1c_2,...,c_n,那麼,上式可被改寫成式:

其中,P(C)就是大家熟悉的語言模型,我們不妨將P(S|C)稱為生成模型。 

上面的內容大部分是宗老師書上的內容,大家找到看看就會了,很簡單的,這裡不細講了,我麼你在下一節繼續介紹其他方面的