汪文妃,徐豪杰,楊文珍,吳新麗
(浙江理工大學 機械與自動控制學院, 浙江 杭州 310018)
隨著信息時代的到來,中文信息處理技術(shù)與人類現(xiàn)代化生活的聯(lián)系日益緊密,它廣泛應用于搜索引擎[1]、漢外機器翻譯[2]、語音識別[3]、信息抽取[4]等新興領(lǐng)域.無論是搜索引擎技術(shù)還是漢外機器翻譯都大大便利了人們的生活,應用搜索引擎能夠從龐大的數(shù)據(jù)資源里快速檢索特定的需求信息.中文分詞是中文信息處理技術(shù)的基礎(chǔ)和前提,其實現(xiàn)算法的好壞直接影響中文信息處理技術(shù)的可靠性和實用性[5].
相比于英文分詞,中文分詞要復雜很多.中文句子中的詞由多個獨立的漢字組成并且字與字之間沒有任何分割標記符,此外,漢字的開放性使得中文分詞難有一個統(tǒng)一的構(gòu)詞標準,由此造成中文分詞的歧義繁多.如何提高中文分詞的正確率,盡可能地解決歧義消除和未登錄詞識別問題,已經(jīng)成為廣大學者的關(guān)注熱點.
在中文分詞中,如果一個待切分語句存在多個分詞結(jié)果,則該語句存在切分歧義,被稱為切分歧義句[6].待切分文本所含有的每個詞如果也同樣存在于分詞系統(tǒng)詞典中,則都有可能從文本中被切分出來.引起這種切分歧義的情況繁多,其中由漢字串引起的切分歧義可以劃分為兩種類型,即交集型切分歧義和組合型切分歧義.交集型切分歧義指漢字串“ABC”可以切分成“A|BC”和“AB|C”,比如漢字串“出現(xiàn)在”,有“出|現(xiàn)在”、“出現(xiàn)|在”這兩種切分結(jié)果.組合型切分歧義漢字串“AB”可以作為整體不切分,也可以切分成“A|B”,比如“中國人民”,可以不切分,也可以切分為“中國|人民”.這兩種切分歧義類型同時出現(xiàn)的交叉型切分歧義也很常見,比如“南京市長江”,同時包含“南京|市長”的組合型切分歧義和“市長|江”、“市|長江”的交集型切分歧義.此外,在歧義中還存在由自然語言的二義性引起的切分歧義,這類歧義產(chǎn)生的多個切分結(jié)果在語法和語義上都是正確的,比如“羽毛球/拍賣/光了”和“羽毛球拍|賣|光了”,這種情況只能結(jié)合上下文才能消除切分歧義.
由中文分詞的歧義類型可見,徹底消除切分歧義非常之難,部分漢字串的切分歧義可以通過修改和擴充詞庫來逐步消解.同時,還可以利用詞頻、詞長以及詞的上下文關(guān)系[7]進一步地進行歧義消解.
未登錄詞指的是沒有收錄到分詞系統(tǒng)詞典中的詞.對于漢語而言,詞組的構(gòu)造沒有固定不變的標準,隨著人們言語表達需要的變化,新的詞組接連不斷地出現(xiàn)在語料中,比如人名、地名以及各類專業(yè)術(shù)語[8],如今還有普遍流行的網(wǎng)絡新詞.文獻[9]選取50萬字的《人民日報》作為中文語料對各主要類型未登錄詞所占比例進行了統(tǒng)計,統(tǒng)計結(jié)果顯示,在總計24萬個漢字詞中,未登錄詞共有15 048個,在總詞數(shù)中所占比例為6.27%.各主要類型未登錄詞分別在漢字詞、未登錄詞中的分布情況如表1所示.
表1 未登錄詞的分布情況 %
從表1可以明顯看出,中國人名、中國地名和外國譯名(包括外國地名和外國人名)在未登錄詞中占主要部分,是未登錄詞中需要重點識別的內(nèi)容.雖然未登錄詞在漢語文本中所占的比例并不大,但是在中文分詞處理中,如果未登錄詞沒有被識別出來以至于對其錯誤切分或者遺漏切分,則最終的分詞準確率會大打折扣.因此,未登錄詞識別是提高分詞效率的重點之一.由于未登錄詞本身的多樣性,未登錄詞識別問題基本不可能完全得到解決,但是可以從詞庫、詞頻以及詞的上下文關(guān)系等方面來提高未登錄詞的識別率.
在中文分詞中,僅通過已知詞典與字符串逐一匹配進而將語句切分成詞的過程被稱為機械匹配分詞(即基于詞典的分詞).按照分詞時對中文句子的掃描順序以及與詞典匹配時所選詞長的大小,基于詞典的分詞算法可分為正向匹配算法、逆向匹配算法、雙向匹配算法、最大匹配算法和最小匹配算法.由于一個詞的詞長與它所涵蓋的信息量往往是正相關(guān)的,在基于詞典的分詞算法中,一般都是用最大匹配算法,這樣從一個句子中分割出來的詞匯量是最小的.因此,常用的基于詞典的分詞算法可以分為正向最大匹配算法(FMM)、逆向最大匹配算法(RMM)和雙向最大匹配算法.
為了使算法實現(xiàn)起來更加簡便,在FMM、RMM分詞過程中一般都采用減字的方式進行匹配.FMM分詞的大致過程為:假設待切分句子為S,其長度為Wordlen,詞典中最大詞長為Maxlen.首先比較Maxlen和Wordlen,取較小值為Len.然后從S的開頭第一個字往右截取Len個字作為待匹配字符串W,W與詞典進行匹配,若匹配成功,則把W從句子S中切分出來,并將S剩余字符串作為S,重新進行同樣的切分;若匹配不成功,則將W末尾減去一個字再與詞典匹配,一直減到匹配成功或者只剩下一個字為止,如果W減為一個字,則同樣從S中切分出這個字并將S的剩余字符串作為S,重新進行切分.反復循環(huán)這樣的過程,直到整個句子被完全切分.
RMM分詞過程與FMM分詞大同小異,二者的主要區(qū)別體現(xiàn)在掃描順序上.RMM分詞是從S的末尾最后一個字往前截取W,若匹配不成功,則都是從W起始處開始逐一減字.由于中文句子本身具有重要信息后置的特點, RMM的分詞正確率往往要高于FMM.相關(guān)統(tǒng)計結(jié)果表明,單純使用FMM的錯誤率為1/169,單純使用RMM的錯誤率為1/245[10].
雙向最大匹配算法是指對待切分句子分別使用FMM和RMM進行分詞,然后對切分結(jié)果不重合的歧義句進行進一步的處理.通??蓪煞N方法得到的詞匯數(shù)目進行比較,根據(jù)數(shù)目的相同與否采取相應的措施,以此來降低歧義句的分詞錯誤率.Sun M等對測試語料集分別使用FMM和RMM進行切分,其切分結(jié)果的統(tǒng)計實驗表明:90%左右的句子切分結(jié)果完全重合且正確;9%的句子切分結(jié)果不同,但其中必有1個是正確的;不到1%的句子切分結(jié)果重合卻是錯誤的或者不重合但兩個都是錯誤的[11].因此,雙向最大匹配算法作為歧義檢測的輔助算法被廣泛用于其他中文分詞算法當中.
分詞詞典是基于詞典分詞算法中的核心要素,詞典的結(jié)構(gòu)機制會直接影響基于詞典分詞算法的匹配效率.為了提高基于詞典分詞算法的分詞效率,設計一個具有一定時間和空間效率的分詞詞典機制是十分重要的.孫茂松等[12]通過實驗對比了整詞二分、Trie索引樹及逐字二分這3種典型的分詞詞典機制,在匹配分詞中的時間和空間效率.實驗表明,基于逐字二分的分詞詞典機制是一種相對簡潔、高效的詞典組織模式.由于逐字二分并沒有改進整詞二分的數(shù)據(jù)結(jié)構(gòu),在實際查找匹配中不是完全意義上的逐字匹配,因此在時間效率上并沒有獲得最大限度的提升.李慶虎等[13]在3種典型分詞詞典的基礎(chǔ)上,根據(jù)漢語中雙字詞語較多的特點提出了一種雙字哈希詞典機制.該詞典機制采用前兩字逐個哈希索引、剩余字串有序排列的結(jié)構(gòu),查詢過程采用逐個匹配方法,進一步提高了自動分詞的時間效率.趙歡等[14]提出了一種改進的雙數(shù)組Trie索引樹分詞算法.該算法為減少沖突而優(yōu)先處理分支節(jié)點多的節(jié)點,然后構(gòu)造一個空狀態(tài)序列,最后將沖突的節(jié)點放入哈希表中,不需要重新分配節(jié)點.莫建文等[15]對中文分詞詞典的雙字哈希結(jié)構(gòu)及正向最大匹配算法進行了改進.改進后的雙字哈希結(jié)構(gòu)除了含有首字哈希表、次字哈希表以及詞語剩余字符串的哈希表,還增加了詞長索引表,用于存儲詞典中每個詞語的詞長.對于待匹配字符串,改進后的正向最大匹配算法將其每個漢字作為首字在詞典中進行查找而得到最大詞長,并比較每個所得詞長的大小,依次從對應詞長較大的漢字開始,正向截取字符串進行查找匹配,進一步加大了最大分詞中長詞優(yōu)先原則的落實度,在一定程度上增加了正向最大匹配的正確率.此外,在查詞匹配中,利用詞典機制中的詞長索引表可以快速獲取對應詞長的詞,大大減少了匹配次數(shù),提高了分詞效率.該算法的整體分詞效果有顯著提高,但由于僅僅是對正向最大匹配算法的改進,因此其歧義消除能力還有待提高.
詞典是中文分詞系統(tǒng)不可或缺的組成部分.經(jīng)過研究者不斷改進和完善,尤其是對詞典結(jié)構(gòu)和索引方法的逐步改進,詞典機制在時間效率、空間效率以及查詞覆蓋率上都得到了一定程度的提升.但是,單獨依賴現(xiàn)有詞典,對各領(lǐng)域的語料進行分詞是存在明顯缺陷的,尤其是處理歧義消除和未登錄詞識別的能力不足.
在中文句子中,雖然沒有任何的分詞標記符,但是詞由漢字組成,相鄰的兩個漢字或者相鄰的兩個詞是否能夠組合成詞,可以利用相鄰漢字在語料集中出現(xiàn)的頻率作為判斷依據(jù).
近年來,基于統(tǒng)計的分詞算法在中文分詞系統(tǒng)中已成為主流.該算法通過訓練大量已經(jīng)過人工分詞的語料庫獲取經(jīng)驗信息,將語言知識轉(zhuǎn)化為統(tǒng)計信息,建立起能反映相鄰漢字或詞的互信度的概率模型,從而識別新詞并將句子切分成詞.統(tǒng)計分詞算法通常可分為基于有向圖的全切分算法和基于字標注的機器學習算法.
(1) 基于有向圖的全切分算法是指從待切分句子中構(gòu)造出所有可能的切分路徑,即有向無環(huán)圖,然后在所有切分路徑中利用統(tǒng)計語言模型獲取最優(yōu)的切分結(jié)果.最經(jīng)典的統(tǒng)計語言模型是N-gram模型,即認為第n個詞的出現(xiàn)只與前n-1個詞相關(guān),整個句子的概率是每個詞出現(xiàn)概率的乘積.假設某個自然語句S由詞語W1、W2…Wn組成,則整個句子的概率P(S)=P(W1)P(W2/W1)…P(Wn/W1W2…Wn-1).從該計算式可以看出,隨著n的增大,參數(shù)空間越大,數(shù)據(jù)稀疏也越嚴重,在詞頻統(tǒng)計中不具備實用性.由此引入馬爾科夫模型,在一個中文句子中,前詞出現(xiàn)的概率僅與其前一個或幾個詞有關(guān),與其他任何詞無關(guān).基于馬爾科夫統(tǒng)計的語言模型通常有bigram和trigram.
(2) 基于字標注的機器學習算法是指將中文分詞的過程,轉(zhuǎn)化為對一串漢字序列中每個字在詞中所處位置進行標記,并利用人工分詞的語料集建立模型的參數(shù).目前,廣泛應用于分詞任務的機器學習模型有隱馬爾科夫模型(HMM)、最大熵模型(ME)、條件隨機場模型(CRF)等.
與基于詞典的匹配分詞算法相比,基于統(tǒng)計的分詞算法的優(yōu)勢在于,利用對大量人工標記的、涵蓋多領(lǐng)域知識的語料庫進行漢語詞頻統(tǒng)計,獲取計算機詞典以及漢字信息庫,因而不受待處理文本的領(lǐng)域限制,也不需要預先提供一個機器可讀的詞典.但是由于需要以大量的訓練文本建立模型參數(shù),基于統(tǒng)計的分詞算法存在計算量大、分詞精度難以把握等缺點.因此,為了提高分詞的精度,統(tǒng)計分詞算法常常與詞典匹配算法結(jié)合起來使用.二者的結(jié)合在歧義消除和未登錄詞識別方面表現(xiàn)出較強的處理能力,吸引了眾多學者,并獲得了不斷創(chuàng)新和改進.
在基于有向圖的全切分算法中,為了不漏掉可能的切分結(jié)果,應把每個漢字都當成一個詞來對待,隨著待切分句子的字數(shù)變多,所構(gòu)造的有向圖就會爆炸式增長,選擇最優(yōu)路徑的統(tǒng)計運算自然也會非常繁瑣.為了簡化全切分算法,孫曉等[16]提出基于最長次長匹配的方法,建立了漢語切分路徑的有向圖,利用動態(tài)最小代價路徑算法,以詞頻為統(tǒng)計量,求出了最優(yōu)的切分路徑.這種算法減小了所需存儲空間,提高了分詞速度.
Xue N[17]提出了一種基于字位信息的中文分詞算法,根據(jù)漢字在詞中所處位置將其分為4類,并且利用最大熵模型對語料庫進行標注,但是這種分詞算法由于依據(jù)的是部分歸一化思想而容易產(chǎn)生標記偏差.李家福等[18]根據(jù)詞的出現(xiàn)概率提出了一種簡單的漢語自動分詞的概率模型——零階規(guī)則隱馬爾科夫模型.但是,此概率模型基于這樣一個假設:當前漢字是否是一個詞的組成部分僅與上一個詞有關(guān),而與其他詞無關(guān).很顯然,這種獨立性假設并不是很符合構(gòu)詞的邏輯,不可避免地降低了分詞的正確率.為了克服這樣的缺陷,劉善峰等[19]提出了一種基于詞位信息的HMM中文分詞算法,將由字構(gòu)詞的分詞方法與HMM結(jié)合起來,對觀察序列進行加窗處理.在該方法的分詞過程中,觀察值不再是一個一個的漢字,而是兩兩組合的漢字.實驗表明這種改進的分詞算法不僅能很好地結(jié)合上下文的統(tǒng)計信息,而且在正確率和召回率上都有明顯提升,同時在未登錄詞識別上也有一定的提升.該方法的缺陷在于訓練語料的大小和覆蓋率對分詞結(jié)果的影響較大.針對分詞過程中未登錄詞的識別問題,鄭曉剛等[20]提出了一種詞典匹配與基于統(tǒng)計的中文組合型分詞算法.該算法主要按以下3個步驟來實現(xiàn):步驟一,采用雙向最大匹配算法對輸入文本進行分詞,對正、逆雙向匹配的分詞結(jié)果一致的句子做一個簡單的假設,即判定2個及2個以上單字連續(xù)組成的字符串為一個新詞,以此來識別出句中的新詞;步驟二,對分詞結(jié)果不一致的句子中多次出現(xiàn)的字符串,采用詞頻統(tǒng)計的方法預設新詞的閾值,從而確定新詞;步驟三,對分詞結(jié)果不一致的句子中只出現(xiàn)一次的字符串,利用HMM分詞方法進行新詞的識別.該算法利用雙向最大匹配算法對切分歧義句進行篩選,頗有針對性地選取3種不同的分詞策略,從而達到提取新詞的目的.盡管與基于詞頻以及傳統(tǒng)的HMM分詞算法相比,該算法具有較高的未登錄詞識別率,但是由于其所采用的分詞方法在判別未登錄詞方面仍有局限,尤其是基于簡單假設的方式判定2個單字連續(xù)組成的字符串為新詞,但事實上它未必一定是詞語,因此其消歧能力不足.
CRF是一種結(jié)合了最大熵模型和隱馬爾科夫模型特征的無向圖模型.趙海等[21]提出了一種基于有效子串標注的中文分詞算法,并對CRF進行了改進.該算法為尋找更長的標注單元,提出了子串標注一般化框架的兩個步驟:首先設計一種迭代最大匹配過濾算法,用于確定有效子串詞典;其次利用雙詞典最大匹配算法在給定文本中實現(xiàn)字串單元識別.但是由于子詞詞典和子詞標注的不確定性,一些標注可能被遺漏,從而達不到滿意的分詞效果.為提高基于CRF分詞算法的正確率,一些研究者嘗試使用了多層模型.黃德根等[22]提出了一種雙層CRF中文分詞算法,該方法首先利用第一層CRF模型識別待測語料中的子詞并實現(xiàn)基于字的序列標注,然后建立第二層CRF模型來學習基于子詞的序列標注,提高了對詞的識別率.為了減少第一層CRF分詞的跨越標記錯誤,該算法對待測語料的子詞進行過濾,去除了不必要的詞語,提高了分詞的正確率.Zhou J S等[23]基于CRF提出了一種混合式分詞算法.該算法由以下三部分組成:系統(tǒng)對輸入文本進行基于CRF的基本分詞;利用CRF識別出未登錄詞;使用統(tǒng)計方法和語法規(guī)則對分詞結(jié)果進行修正.使用CRF進行分詞時難免會產(chǎn)生錯誤的標記,為此,有學者提出了基于子詞標注模型與詞典結(jié)合的組合分詞算法,如Dong S等[24]采用一種選舉算法,在詞典和子詞標注模型之間實行多數(shù)表決.為了盡可能識別詞典中所含詞串,進一步降低跨越標記引起的錯誤率,一些研究人員對基于CRF的分詞結(jié)果進行了修正.Kikui G等[25]通過HMM互信度對CRF分詞結(jié)果進行了適當?shù)男拚?羅彥彥等[26]通過優(yōu)化CRF分詞的邊緣概率對錯誤的分詞結(jié)果進行了修正.該方法針對CRF分詞中錯誤標記問題,對標記后測試語料中邊緣概率低的漢字進行重組,得到后處理字符串,并利用邊緣概率高的候選詞作為詞典,對重組詞進行正向最大匹配,從而優(yōu)化CRF邊緣概率,減少錯誤標記.修正邊緣概率低的標記結(jié)果是解決CRF錯誤標記問題的有效途徑,該方法只是做了簡單的修正.為了進一步提高分詞正確率,也可采用更好的方法進行修正.
基于語義理解的分詞算法指根據(jù)待切分文本的句法、語義信息,按照人的閱讀理解方式對文本進行切分.人為分詞與機器自動分詞有很大的區(qū)別.人通??吹揭痪湓挷⒉粫胫⒓磳λM行分詞而是先根據(jù)慣用的語法語境去理解,而后才去分詞.例如,對于歧義字串“南京市長江大橋”,基于熟練的語法知識一眼就能切分出“南京市”“長江大橋”,但是計算機基于正向最大匹配算法就會誤切成“南京市長”“江”“大橋”.基于語義理解的分詞算法可以模仿人類思維方式進行分詞,有可能獲得消除歧義的效果.
“分詞和理解,孰先孰后”是中文自動分詞面臨的困難之一[27].由于中文句法語義規(guī)則的復雜性,單獨從語義分析的角度進行中文分詞是十分困難的,但是仍有研究人員嘗試利用語義理解進行中文分詞.Wu A[28]指出基于詞典的中文分詞算法缺乏全局信息,而基于統(tǒng)計的分詞算法忽視了上下文信息,并認為自然語言理解是文本分析的基礎(chǔ);基于“先理解后分詞”的技術(shù)路線提出了基于語義分析器NLPwin的中文分詞算法,先對待切分語句進行語義分析,然后再分詞.實驗表明,NLPwin在自選的小規(guī)模歧義句文本中很好地解決了歧義句問題,分詞正確率達到了99%,但是隨著歧義句測試集的擴充,誤切分的可能性也會變大.這是NLPwin特定的句法-語義規(guī)則在中文句法語義多樣性大環(huán)境下所具有的局限性造成的.事實上,語義分析器NLPwin認為句法語義分析正確的句子,其切分結(jié)果未必是正確的.比如“樹新風”,通過語義分析切分出來“樹”“新風”,而實際上“樹新風”本身就是一個詞.因此,對于計算機而言,“先理解后分詞”技術(shù)路線的可信度并不高.
隨著機器學習知識的研究和應用,一些學者將表示語義的特征加入訓練模型中,如劉春麗等[29]基于條件隨機場模型提出了一種基于表示學習的中文分詞算法.該算法首先使用Skip-gram模型和K-means聚類算法從文本中得到詞向量聚類,并將聚類結(jié)果作為CRF模型的特征進行訓練,然后運用該語言模型進行中文分詞.實驗測試表明,該算法能夠有效提高基準CRF中文分詞算法的分詞性能,在微博評測語料中分詞的未登錄詞召回率和F值(正確率和召回率的調(diào)和平均值)分別達到了94.78%和95.67%.楊曉恝等[30]提出了基于本體和句法分析領(lǐng)域的復合式分詞方法.該分詞方法首先對輸入文本進行基于詞典的雙向匹配粗切分,并對粗切分得到的單詞序列進行基于隱馬爾科夫模型的詞性標注,然后基于本體知識對處理過的句子進行句法分析,最后進行歧義的消除和未登錄詞的識別.實驗表明:該方法在歧義消除和未登錄詞識別上都有較好的表現(xiàn);與正向最大匹配算法相比,該算法的分詞正確率和召回率都提高了3%以上.沈翔翔等[31]提出一種基于無監(jiān)督學習的中文分詞改進算法,旨在解決中文分詞的未登錄詞識別問題.該改進算法在未標注的語料中利用基準分詞器訓練出詞向量,并使用詞向量結(jié)果來發(fā)現(xiàn)未登錄詞,從而對分詞結(jié)果進行修正.實驗表明,該改進算法可以提高未登錄詞識別的正確率,特別是在互聯(lián)網(wǎng)語料上的提升效果更加明顯,其正確率相對于傳統(tǒng)算法取得了約5%的提升.這一改進算法也證實,通過句法分析實現(xiàn)分詞雖然不能完全取代傳統(tǒng)的機械自動分詞,但是為提高分詞算法的消歧和未登錄詞識別能力提供了新的思路.隨著深度學習模型的研究和興起,一些研究人員將能夠體現(xiàn)句法語義信息的字詞向量應用到基于字標注序列的深度學習分詞算法中,以期進一步提高分詞的精度.
深度學習指的是一種特征學習算法,其核心思想是在簡單非線性模型組合而成的網(wǎng)絡內(nèi)部通過BP算法進行參數(shù)的調(diào)整,從而找到原始數(shù)據(jù)中更高層次的抽象表達.這些參數(shù)也被稱為特征.這些特征不需要人工設計而是從原始數(shù)據(jù)中學到的.因此,深度學習可以有效地利用無監(jiān)督數(shù)據(jù),同時可避免繁瑣的人工特征抽取.
隨著大數(shù)據(jù)時代的到來,基于深度學習的分詞算法應運而生.對于英文而言,命名實體識別以及詞性標注等自然語言處理任務都可以看作是給各個單詞貼上標簽的序列標注過程.基于此,Collobert R等[32]提出一種通用的神經(jīng)網(wǎng)絡結(jié)構(gòu),并將其用于解決自然語言處理中的序列標注問題.Zheng X等[33]用Perceptron-Style算法替換最大似然算法來訓練神經(jīng)網(wǎng)絡結(jié)構(gòu).實驗表明,這種算法能加速訓練過程.在傳統(tǒng)的基于特征的線性模型中,標記-標記的關(guān)聯(lián)、標記-詞的關(guān)聯(lián)以及詞-詞的關(guān)聯(lián)都會作為特征來提取.而Collobert R與Zheng X提出的神經(jīng)網(wǎng)絡結(jié)構(gòu)只是在特定大小的窗口內(nèi)對上下文向量進行簡單的拼接,因而不能像傳統(tǒng)模型那樣提取復雜的特征.Pei W等[34]在神經(jīng)網(wǎng)絡結(jié)構(gòu)中添加標簽嵌入層和張量變換層來模擬標記和詞之間的復雜關(guān)聯(lián).該方法盡管能夠提取較多的特征,但是其最終模擬效果并沒有傳統(tǒng)方法好.Chen X等[35]提出將廣義回歸神經(jīng)網(wǎng)絡GRNN模型用于中文分詞.該模型含有重置門和更新門,用來組合一定大小窗口的上下文關(guān)聯(lián)特征.實驗表明,該神經(jīng)網(wǎng)絡結(jié)構(gòu)可以有效模擬傳統(tǒng)的特征提取方式.在中文分詞的深度學習模型中,窗口大小即拼接漢字個數(shù)的選取是影響分詞消歧效果的一個重要因素.對于句子“通知說明天下午”,“說明”這一處如何做切分與后面幾個詞都有關(guān)系,如果窗口太小,則很有可能切分成“通知|說明|天下|午”,反之窗口太大,在待測語料訓練中容易產(chǎn)生過擬合.因此,針對標注序列中存在的長距離依賴問題, Chen X等[36]又提出使用長短期記憶(LSTM)神經(jīng)網(wǎng)絡模型來實現(xiàn)中文分詞,該模型能記住每個詞之前的上下文信息.為了完善LSTM模型,使之具備獲得一個詞前面和后面的上下文信息的能力,Yao Y等[37]和胡婕等[38]都提出使用雙向長短期記憶(Bi-LSTM)神經(jīng)網(wǎng)絡來實現(xiàn)中文分詞.實驗表明,該方法能夠提高分詞的正確率.張子睿等[39]基于Bi-LSTM神經(jīng)網(wǎng)絡提出了一種雙向長短期記憶條件隨機場(Bi-LSTM-CRF)模型,不僅保留了Bi-LSTM能夠有效利用上下文信息的特性,同時能夠通過CRF層考慮輸出標簽的前后依賴關(guān)系.實驗對比發(fā)現(xiàn),在未使用復雜的字嵌入向量和不增加神經(jīng)網(wǎng)絡層數(shù)的前提下,該模型具有較好的分詞性能.因此,該模型在中文分詞的神經(jīng)網(wǎng)絡模型中具有一定的優(yōu)越性.
對于深度神經(jīng)網(wǎng)絡分詞以及傳統(tǒng)的機器學習分詞而言,如果在有監(jiān)督的語料訓練中加入語義信息更為豐富的字向量,則對其分詞效果大有裨益.來斯惟等提出了一種基于表示學習的中文分詞方法.該方法在大規(guī)模無監(jiān)督中文語料中利用3層神經(jīng)網(wǎng)絡結(jié)構(gòu)學習字的語義向量表示,以各個字的語義向量作為神經(jīng)網(wǎng)絡模型的初始值,應用于基于神經(jīng)網(wǎng)絡的有監(jiān)督中文分詞,突破了傳統(tǒng)的字表示特征,嘗試對中文文本中每個字進行建模,并自動抽取能體現(xiàn)更豐富語義信息的字向量[40].實驗證明,這種通過無監(jiān)督訓練得到的字向量能有效提高深度學習分詞算法的分詞性能,并且,語料庫越大,其效果越明顯.
從中文分詞算法近年來的研究進展可以看出,3類典型的中文分詞算法各有優(yōu)勢,同時也存在各自的缺點和不足.3類分詞算法的性能對比如表2所示.
表2 3類分詞算法的性能對比
(1) 基于詞典的分詞算法運算簡單、易于實現(xiàn).在詞典具備一定覆蓋率和利用率的前提下可以達到較高的分詞正確率.隨著詞典機制的不斷改進,尤其是雙字哈希詞典機制的出現(xiàn),該類算法可以較好地兼顧時間效率和空間效率.但是,基于詞典的分詞算法的歧義消除和未登錄詞識別能力較低,其分詞正確率很難有大的突破.因此,基于詞典的分詞算法往往作為文本粗分、歧義句識別的過濾環(huán)節(jié),與基于統(tǒng)計、基于語義理解這兩類分詞算法結(jié)合在一起使用,以提高整體分詞的正確率以及分詞速率.
(2) 基于統(tǒng)計的分詞算法利用統(tǒng)計語言概率模型,從大量人工標記的語料庫中獲取有利于分詞的統(tǒng)計量,根據(jù)這些統(tǒng)計數(shù)據(jù)進行合理分詞,具有一定的消除歧義和未登錄詞識別能力.CRF模型綜合了HMM和最大熵特征,是目前基于統(tǒng)計分詞算法的主流訓練模型.基于字標注的無向圖算法將分詞任務抽象為序列標注問題,其分詞過程采用靈活性較強的機器學習算法,隨著研究的深入,往往能訓練出較好的特征參數(shù),具有比較滿意的分詞性能.此類算法由于低頻詞或者語料庫規(guī)模不足所產(chǎn)生的錯誤標記難免,往往需要對其標記結(jié)果做進一步的修正處理,因此也具有一定的改進空間.
(3) 基于語義理解的分詞算法更加注重對句法語義信息的獲取,具有更強的消除歧義能力.隨著網(wǎng)絡新詞和專業(yè)跨領(lǐng)域新詞的不斷出現(xiàn)以及語言形式的改變,傳統(tǒng)上人工提取特征的方式愈顯復雜,每次更新都意味著對特征的重新設計.深度學習使用的神經(jīng)網(wǎng)絡算法有助于解決這種繁瑣問題,讓機器自動對大規(guī)模語料庫進行特征抽取,比如,雙向長短期記憶(Bi-LSTM)神經(jīng)網(wǎng)絡模型.未來基于深度學習的中文分詞將越來越重視上下文語義,對神經(jīng)網(wǎng)絡結(jié)構(gòu)以及網(wǎng)絡的目標函數(shù)進行探索和優(yōu)化,得到更加實用的中文分詞算法,從而在學習特征的過程中更加符合人類的思考過程.此外,在當前大數(shù)據(jù)環(huán)境下,隨著對專業(yè)跨領(lǐng)域中文文本分詞需求的加大,從大規(guī)模語料中無監(jiān)督學習而得到更加豐富的詞向量,將成為中文分詞的一個新視角.
中文分詞算法服務于中文分詞系統(tǒng),需要從分詞正確率、運行效率、通用性和適用性等多方面來考慮,這幾個因素相輔相成,互相制約.在中文分詞算法實現(xiàn)的過程中,以往只關(guān)注分詞的正確率而忽視了其分詞效率,今后應當在保證分詞正確率的前提下,注重權(quán)衡運行效率、通用性和適用性等因素.本文對中文分詞算法20年來的重要研究成果進行了綜述,并對各類算法的優(yōu)缺點進行了總結(jié)分析,為3類中文分詞算法的進一步研究提供了新的思路.