熊 健, 翟紫姹
(廣州大學 經(jīng)濟與統(tǒng)計學院, 廣東 廣州 510006)
隨著信息時代的來臨,自然語言處理作為一門涉及語言學、數(shù)學、計算機科學等多領域的綜合性學科,被廣泛運用于計算機、人工智能等領域,致力于實現(xiàn)人與計算機之間的有效通信.中文信息處理是自然語言處理的一個重要分支,在搜索引擎[1]、信息抽取[2]、語音識別[3]、機器翻譯[4]等新興領域中被廣泛運用.詞作為漢語中最小的可獨立活動的語義單位,是自然語言處理系統(tǒng)中基本的操作單元和不可替代的知識載體[5].中文分詞是中文信息處理的前提和基礎,其算法的精度和效果直接影響中文信息處理技術后續(xù)工作的實用性與有效性.在英文中,詞與詞之間皆有空格相隔,而中文文本是連續(xù)的字串,詞語之間沒有明顯分隔符,詞語的邊界難以確定;此外,由于漢語一直沒有一個統(tǒng)一的構詞標準,故造成中文的分詞歧義繁多.如何提高中文分詞精度,解決分詞歧義問題和未登錄詞的識別問題,成為廣大學者研究的熱點.
目前,中文分詞方法大體分為三類方向:基于語義理解、基于詞典,以及基于統(tǒng)計的分詞方法.
基于語義理解的分詞方法指依據(jù)待切分文本的句法、語義信息,模仿人的閱讀理解方式,從而對文本進行切分[6].該方法不僅需要很好的漢語分詞詞典,還需要融入語義和句法的知識.但由于漢語語義規(guī)則的復雜性和籠統(tǒng)性,使得將各種語義和句法信息轉成計算機可直接讀取的形式較為困難.
基于詞典的分詞方法指通過漢語分詞詞典與切分規(guī)則來對中文字符串進行切分,該過程也被稱為機械匹配分詞.根據(jù)分詞時對中文字符串的掃描方向以及詞典匹配時所選的詞長大小,基于詞典的分詞方法可分為正向匹配法、逆向匹配法、雙向匹配法、最大匹配法以及最小匹配法.但該方法的有效性依賴于所使用詞典覆蓋的詞匯量,且當漢語語義存在歧義時,正向與逆向匹配法的切分結果將存在差異,影響分詞的效果.目前,一些學者針對最大匹配法提出改進.莫建文等[7]提出一種結合雙字哈希結構和改進的正向最大匹配法的中文分詞方法,提高了分詞速度以及分詞精度.熊志斌等[8]提出一種改進Trie樹結構對詞典進行改進,優(yōu)化正向最大匹配法,提高了分詞速度.陳之彥等[9]提出一種新的詞典構造方法,以要開始進行匹配的字作為索引項,利用單字索引表得到與該字相關的詞語開始位置,并設計了相應的雙向最大匹配算法.麥范金等[10]提出一種結合最大匹配與HMM的分詞模型,利用隱馬爾可夫模型對正向和逆向最大匹配方法的分詞結果進行消歧,得到較為準確的分詞結果.楊貴軍等[11]提出一種基于最大匹配算法的似然導向中文分詞方法,將訓練語料的統(tǒng)計信息與最大匹配分詞方法相結合,并基于最大似然原理確定最優(yōu)的分詞模式,從而提高分詞準確率.
基于統(tǒng)計的分詞方法的主要思想是通過統(tǒng)計相鄰漢字在語料訓練集中出現(xiàn)的頻率,來判斷相鄰漢字或相鄰詞是否能夠組合成新的詞.近年來,基于統(tǒng)計的分詞算法逐漸成為自然語言處理的主流方法,分詞中常用的統(tǒng)計模型有隱馬爾可夫模型、最大熵模型、條件隨機場模型等.張梅山等[12]通過將詞典信息以特征的方式融入到條件隨機場模型,實現(xiàn)領域自適應性.周祺[13]結合條件隨機場模型識別新詞的優(yōu)勢、t-測試和雙向最大匹配法歧義消除及切分速度的優(yōu)勢,改進了條件隨機場算法的解碼方式,并提出一種基于哈希算法的詞典組織方法.劉善峰等[14]提出一種改進的HMM分詞方法,將鄰近的兩個字作為觀察單元來代替?zhèn)鹘y(tǒng)的單字作為觀察單元,通過加寬處理,結合詞位信息,較好地解決了由于HMM算法的獨立性問題而導致分詞準確率不高的問題.周曉輝[15]提出一種基于HMM的法律命名實體識別模型,通過串聯(lián)多個HMM模型,先使用N-gram模型進行分詞,以低層HMM模型的輸出作為高層HMM模型的輸入,從淺至深層次地對文本進行實體識別.這些方法以大量語料庫作為分詞的基礎,能有效利用訓練語料的信息,具有較好的歧義處理能力.
以上方法對中文分詞研究的發(fā)展有著重要貢獻,然而在實際的應用中,漢語切分歧義和未登錄詞識別仍然是提高分詞精度的主要困難[16-17].鑒于此,為減少切分歧義,提高分詞準確率,本文主要針對漢語歧義的問題,綜合基于詞典的分詞方法和基于統(tǒng)計的分詞方法的優(yōu)勢,提出一種基于詞性標注和分詞消歧的中文分詞方法.該方法首先基于正向和逆向最大匹配法及隱馬爾可夫模型對中文文本進行初次分詞,并利用Viterbi算法對初步的三種分詞結果進行詞性標注,然后基于詞信息和詞性信息,對三種分詞結果進行對比消歧,最后得到較為準確的分詞結果.
最大匹配法是指以詞典為依據(jù),設置最長單詞字數(shù)作為第一次取字數(shù)量,切分出單字串并同詞典進行對比.最大匹配算法主要包括正向最大匹配法(Maximum Matching Method,F(xiàn)MM法)和逆向最大匹配法(Reverse Maximum Matching Method,RMM法),分詞過程中一般采用減字的方式進行匹配.FMM法的分詞過程如下:
假設待切分句子為O,其長度為n,設置最大詞長為Max_len.
(1)取Max_len和n中的較小值,設為L.
(2)從O的開頭第一個字往右截取L個字作為待匹配字符串W.
(3)W與詞典進行匹配,若匹配成功,則把W從O中切分出來,O剩余的部分作為新的O,重復前面步驟;若匹配不成功,則從O的開頭第一個字往右截取L-1個字作為待匹配字符串W,重復第(3)步,直到W匹配成功或W減至一個字為止.若W只剩下一個字,則從S中切分出W,剩余的部分作為新的O,重復三個步驟,直到O被完全切分.由于漢字具有重要信息后置的特征,RMM分詞的準確率要比FMM分詞的稍好,根據(jù)相關研究表明,F(xiàn)MM分詞與RMM分詞的錯誤切分率分別為1/169、1/245[18].這兩種方法原理簡單,易于實現(xiàn),但對于存在切分歧義的語句,這兩種方法往往得到不同的切分結果.
隱馬爾可夫模型[19]是關于時序的概率模型,描述由一個隱藏的馬爾可夫鏈隨機生成不可觀測的狀態(tài)隨機序列,再由各個狀態(tài)生成一個觀測而產生觀測隨機序列的過程.隱馬爾可夫模型需要大量的訓練語料來達到較高的標注準確率,常用于隨機序列數(shù)據(jù)的統(tǒng)計模型.隱馬爾可夫模型的基本表達為μ=(Q,O,A,B,π),其中Q={q1,…,qn}為所有狀態(tài)的集合,O={O1,…,Om}為所有觀測序列的集合,分別是狀態(tài)轉移概率矩陣、觀測概率矩陣和初始狀態(tài)概率向量,其中ti為i時刻隨機過程所處的狀態(tài).
A=[aij]n×n=[P(tk+1=qj|tk=qi)]n×n=
(1)
B=[bj(Ok)]n×m=[P(Ok│ti=qj)]n×m=
(2)
(3)
在中文分詞中,給定待切分字符串O,狀態(tài)集合則為{B,M,E,S},其中,B表示詞首,M表示詞中間,E表示詞尾,S表示單字成詞.字符串中所有的字串,包括標點符號組成的集合稱為觀測狀態(tài)集合.而在詞性標注中,給定待標注的文本O=O1O2…Om,狀態(tài)集合為詞性集{q1,q2,…,qn∈G},觀測狀態(tài)集則是文本中所有切分好的詞O1、O2、…Om.要計算狀態(tài)轉移概率矩陣A以及觀測概率矩陣B,首先需要對語料庫進行統(tǒng)計.狀態(tài)t出現(xiàn)的概率為
(4)
由馬爾可夫性可得,
(5)
但鑒于分詞系統(tǒng)的訓練語料集的局限性,比如訓練語料不夠全面、涉及領域不夠廣泛,或語料年限較為久遠,導致一些本該出現(xiàn)的語料沒有出現(xiàn)或一些本該大量出現(xiàn)的語料出現(xiàn)的次數(shù)卻很少,從而造成語料信息不全的問題.由于訓練樣本不足所導致估計不可靠的問題即數(shù)據(jù)稀疏(Data sparseness)問題.在自然語言處理中,由于語料有限,無論怎樣擴大訓練樣本,都不可能保證所有的詞都能出現(xiàn),數(shù)據(jù)稀疏問題總是存在,可采用數(shù)據(jù)平滑技術,將訓練語料的概率值進行折扣,并將該折扣值重新分布給零概率語料詞,可以保證每個語料詞的概率均大于零,并且可以使得模型參數(shù)概率分布趨向更加均勻[20].常見的數(shù)據(jù)平滑法有加法平滑(Additive smoothing)[21]、Good-Turing平滑[22]、Katz 平滑技術[23]、線性差值平滑法(Linear interpolation smoothing)[24]等.
本文采用的平滑法在基于Add-δ平滑技術[25]的基礎上稍作調整,對模型中本該出現(xiàn)但沒有出現(xiàn)事件的出現(xiàn)次數(shù)上添加δ,并統(tǒng)計總添加次數(shù)V,其中δ=0.5,即對于零概率事件Ok-1=ti,Ok=tj:
(6)
(7)
給定觀測序列O=O1O2…Om和模型λ=(A,B,π),如何利用隱馬爾可夫模型計算出該觀測序列最優(yōu)的狀態(tài)序列,是HMM中的解碼問題[26].
Viterbi算法[27]通過動態(tài)規(guī)劃求得概率最大路徑(最優(yōu)路徑),解決HMM模型的解碼問題.該算法從第i=1個觀測開始,遞推地計算在第i個觀測狀態(tài)為t的各條部分路徑的最大概率,直到第m個觀測狀態(tài)為t的各條路徑的最大概率.給定觀測O=O1O2…Om與隱馬爾可夫模型μ=(Q,O,A,B,π):
(1)第1個觀測處于狀態(tài)t的概率為
δ1(t)=πtbt(O1),i=1,2,…,n
(8)
(2)第i個觀測處于狀態(tài)t的概率為
(9)
HMM到達第i個狀態(tài)ti=t的最大概率路徑(t1,t2,…,ti=t)的前一個狀態(tài)ti-1為
(10)
(3)對于觀測Om的狀態(tài)tm,最優(yōu)的狀態(tài)為
(11)
(12)
(13)
在中文分詞中,若一個待切分的中文語句中存在多種切分結果,則表明該語句存在切分歧義[28].常見的切分歧義類型有組合型切分歧義以及交集型切分歧義.組合型切分歧義指中文字串“AB”即可切分成“A|B”,亦可作為整體而不切分,如中文字串“墻面會不會太平了”中的“太平”即為組合型歧義字段,既可切分成“太|平”,也可以不作切分;交集型切分歧義指中文字串‘ABC’即可切分為‘AB|C’又可切分成‘A|BC’,如中文字串“出現(xiàn)在”,正向最大匹配和HMM分詞的切分結果為“出現(xiàn)|在”,而逆向最大匹配的切分結果則為“出|現(xiàn)在”.
可見,由于切分歧義的存在,正向、逆向最大匹配法以及HMM分詞三種分詞的結果往往會存在不同之處,本文旨在找出三種分詞結果的歧義之處,并對歧義部分進行消歧,從而提高分詞的精度.
設待切分中文文本為O,已知語料庫C共有M個詞,詞性集G共有n種詞性,表示為q1,q2,…,qn∈G.假設對一段文本O進行分詞的結果為O=O1O2…Om,共分成m個詞,需要對這段文本標注詞性:T=t1t2…tm,其中,詞O1的詞性為t1,詞Om的詞性為tm.
定義count(q)為詞性q∈G在語料庫C中出現(xiàn)的次數(shù),count(o)為在C中詞o出現(xiàn)的次數(shù),count(ti-1,ti)為有序連續(xù)詞性ti-1,ti在C中出現(xiàn)的次數(shù),count(t,o)為在C中詞o的詞性為t出現(xiàn)的次數(shù).
(14)
(15)
對于詞o,以極大似然估計來評估詞o的成詞可能性:
(16)
funo,t=P(ti|ti-1)×P(oi)×P(oi|ti)
(17)
基于分詞消歧與詞性標注的中文分詞方法主要流程如圖1所示.
圖1 分詞流程
(1)首先在輸入端輸入待切分語料S,并得到基于正向最大匹配法、逆向最大匹配法、HMM分詞的結果.對于待切分語句O∈S,正向最大匹配法、逆向最大匹配法以及HMM分詞三種方法的切分結果分別記為O1,O2,O3.
(2)通過比較三種分詞結果,得到三種分詞結果中不全相同的部分,即作為歧義部分.歧義部分可分為兩種情況:第一種情況是O1≠O2=O3∩O1=O2≠O3,即三種分詞結果中有任意兩種結果是相同的,并且不與第三種情況相同;第二種情況是O1≠O2≠O3,即三種分詞結果中兩兩皆不相同.
(3)對初步分詞歧義部分中的第一種情況進行初次消歧.鑒于本次實驗初步分詞結果中,正向最大匹配法的正確率高于逆向最大匹配法以及HMM分詞的正確率:如果O1與O2相同,無論O1與O3是否相同,皆以O1作為最終切分;如果O2與O3相同且與O1不同,并且PML(O2)>PML(O1),則以O2作為最終切分;否則,依然以O1作為最終切分.
(4)對歧義部分的第二種情況進行二次消歧.首先,利用HMM分別對三種分詞結果進行詞性標注,并篩選得到分詞結果中兩兩皆不相同的歧義部分;計算得到使得評估函數(shù)funOi,T最大化的切分方法,并以該切分作為最終切分,即最優(yōu)切分為
(18)
本文中的訓練集和測試集來自哈爾濱工業(yè)大學提供的中文樹庫語料.在進行實驗之前,由于最大匹配法的需要,首先建立一個分詞詞典.本文所用的分詞詞典共有10萬個詞,不包括標點符號、字母和數(shù)字.該詞典包含了現(xiàn)代漢語詞典中的所有語料.詞性標注所用的訓練語料是中文樹庫語料中的訓練集,共783 294個字.
樹庫語料中的測試語料總共31 622字,對本文所提出的方法進行測試.
評價中文分詞的指標主要有:準確率(Precision)、召回率(Recall)、F測度(F-measure)[27],各指標的計算公式如下:
(19)
(20)
(21)
其中,取β=1,此時F值又稱為F1值.
本次實驗中,將測試集中出現(xiàn)切分歧義的語句作為該測試集的歧義集.為了更好地展示本文提出的分詞方法的有效性,在測試集進行測試的同時,也對歧義集的測試結果進行比較分析,見表1.
表1 實驗結果與評價
將本文所用方法的最終分詞效果與正向最大匹配法(FMM)、逆向最大匹配法(RMM)、隱馬爾可夫模型(HMM)的最終分詞效果進行對比(表1).從表1可以看出,與其他常見的分詞方法相比較,本文提出的方法分詞效果更好.在歧義集中,分別相較于FMM、RMM、HMM,本文提出的方法其準確率提高了3.08%、11.05%、8.31%,召回率提高了3.07%、10.54%、13.80%,F(xiàn)測度值提高了3.07%、10.79%、11.29%;在測試集中,相比于其他方法,本文的方法在分詞效果上也有所提高.本次實驗是在三種常用分詞方法的基礎上,結合隱馬爾可夫模型標注詞性,利用詞信息與詞性信息對切分歧義集進行消歧,選出最優(yōu)切分,該方法具備了機械匹配分詞的速度以及統(tǒng)計分詞的精度,對解決中文分詞中的歧義問題具有較好的效果,能夠有效地消除分詞結果中的交集型歧義和組合型歧義,具有一定的實用性.
與正向、逆向最大匹配法、隱馬爾可夫模型相對比,本文的分詞方法雖然在準確率等指標上有所提高,但仍然沒有達到精確分詞的效果.原因如下:①未登錄詞識別的問題對本文的實驗準確率影響較大.本文提出的分詞方法并未對解決未登錄詞識別問題產生效果,無法識別未登錄詞不僅會出現(xiàn)錯誤切分或者遺漏切分,使得切分效果大打折扣,也會影響對未登錄詞詞性的標注,嚴重影響詞性標注的精度;②漢語分詞的歧義問題尚未得到完全解決.盡管本文的分詞方法能夠通過識別三種分詞結果中的歧義之處,從而解決部分切分歧義問題,但并未考慮三種分詞結果相同部分中存在切分歧義的可能性,對三種切分皆不正確的情況也未作處理,從而直接影響分詞的效果.
機械分詞速度快、原理簡單且容易實現(xiàn),但無法識別中文分詞中的切分歧義以及消減歧義問題[29].統(tǒng)計分詞能有效識別分詞歧義,但需要大量的訓練語料,訓練時間較長.本文提出一種基于分詞消歧與詞性標注的中文分詞方法,首先識別出正向、逆向最大匹配以及隱馬爾可夫模型分詞結果中的歧義集,通過隱馬爾可夫模型對分詞結果進行詞性標注,并通過定義的評估函數(shù)對歧義集進行消歧,最終得出較為準確的分詞結果.從測試結果可以看出,該方法能夠有效利用語料庫中的詞信息以及詞性信息,綜合了機械匹配分詞與統(tǒng)計分詞的優(yōu)點,能較好地解決分詞中的歧義問題,提高了分詞效果.但該方法仍存在不足之處,無法識別未登錄詞,在識別分詞歧義方面也不夠全面.在下一步的工作中,將考慮如何有效地識別切分結果中的未登錄詞,不斷更新詞庫,以解決中文分詞的未登錄詞問題;進一步改進切分歧義識別方法,更全面地識別除正向、逆向最大匹配法、隱馬爾可夫模型分詞結果歧義集以外的可能存在切分歧義之處,提高分詞精度.