王佳楠,梁永全
(山東科技大學(xué)計算機科學(xué)與工程學(xué)院,山東青島 266590)
隨著自然語言處理的發(fā)展,分詞作為基礎(chǔ)任務(wù)成為研究重點,中文因其復(fù)雜性和特殊性成為分詞熱點話題。中國知網(wǎng)和Web of Science 的相關(guān)論文顯示,自2010 年分詞研究達(dá)到小高峰后,中文分詞研究熱度再次緩步增長,見圖1、圖2。但是,作為自然語言處理的基礎(chǔ)任務(wù),分詞究竟有沒有必要,Li 等[1]在2019 年ACL 會議上提出此觀點,并在機器翻譯、文本分類、句子匹配和語言建模4 個NLP任務(wù)上驗證分詞的非必要性,但這并不說明分詞研究不再有意義。詞級別模型欠佳表現(xiàn)在數(shù)據(jù)稀疏、過擬合、OOV以及數(shù)據(jù)遷移能力缺乏等,要解決此類問題,提高分詞性能仍有重大意義,例如谷歌提出的知識圖譜概念。知識圖譜強大的語義關(guān)聯(lián)能力為網(wǎng)絡(luò)搜索提供便利。知識圖譜本質(zhì)是一種語義網(wǎng)絡(luò),用圖的形式描述客觀事物,由邊和節(jié)點組成。邊一般指關(guān)系和屬性,節(jié)點指概念和實體。現(xiàn)實中,書本和網(wǎng)頁中的內(nèi)容屬于非結(jié)構(gòu)化或半結(jié)構(gòu)化數(shù)據(jù),無法直接構(gòu)建知識圖譜,分詞成為構(gòu)建知識圖譜的第一步。英文通過空格區(qū)分單詞,中文則需要根據(jù)上下文信息理解分詞,但這對于計算機而言相當(dāng)困難。
Fig.1 Statistics on the number of word segmentation documents of CNKI圖1 中國知網(wǎng)分詞文獻(xiàn)數(shù)量統(tǒng)計
Fig.2 Statistics on the number of word segmentation documents in Web of Science圖2 Web of Science 分詞文獻(xiàn)數(shù)量統(tǒng)計
本文通過詳細(xì)閱讀近20 年文獻(xiàn)資料,總結(jié)歸納中文分詞的瓶頸和算法,提出新的瓶頸及改進(jìn)方向。
由于中文的復(fù)雜性,分詞時粒度的選擇尤為重要。目前分詞粒度分為粗粒度和細(xì)粒度兩類,例如“中華人民共和國”,粗粒度:中華人民|共和國;細(xì)粒度:中華|人民|共和國。
雖然人類閱讀不會發(fā)生障礙,但對于計算機來說,尤其是當(dāng)分詞用于搜索引擎時,細(xì)粒度可能導(dǎo)致搜索準(zhǔn)確率降低;當(dāng)用于知識圖譜構(gòu)建時則導(dǎo)致圖譜復(fù)雜性增加,準(zhǔn)確度降低。
歧義字段在中文中普遍存在,而歧義字段又是中文切分的一個難點。梁南元教授[2]最早對歧義字段進(jìn)行了兩種基本定義:
(1)交集型切分歧義。漢字串ASB 稱作交集型切分歧義,如果滿足AS、SB 同時為詞(A、S、B 分別為漢字串),此時漢字串S 稱作交集串。如句子“人民生活幸福”,分詞的可能結(jié)果有:
Eg1:人民|生活|幸福
Eg2:人|民生|活|幸福
如果由計算機判斷,則“人民”和“民生”皆為可能詞匯,就會造成交集型歧義。
(2)組合型切分歧義。漢字串AB 稱作多義組合型切分歧義,如果滿足A、B、AB 同時為詞,如“校友會”一詞:
Eg1:我|在|校友會|工作
Eg2:我|的|校友|會|來
“校友”和“會”可以單獨成詞,也可組合成詞,就造成了組合型歧義。
歧義字段給分詞帶來極大困擾,想要作出正確的切分判斷,需要結(jié)合上下文語境,甚至韻律、語氣、重音、停頓等,這對機器來說無疑是困難的。
未登錄詞有兩種,一種指已有的詞表中沒有收錄的詞,另一種指訓(xùn)練語料中未曾出現(xiàn)過的詞,而后一種也可被稱作集外詞(Out of Vocabulary,OOV),即訓(xùn)練集以外的詞。未登錄詞通常包含以下幾種類型:
(1)新出現(xiàn)的普通詞匯。隨著時代變遷,語言不斷發(fā)展,詞匯也在更新,尤其是網(wǎng)絡(luò)用語中層出不窮的新詞,這對分詞甚至自然語言處理都是一大挑戰(zhàn)。
(2)專有名詞。如人名、地名以及組織機構(gòu)名稱等。
(3)專業(yè)名詞和研究領(lǐng)域名稱。將分詞運用到某些特定領(lǐng)域或?qū)I(yè),需要特定的領(lǐng)域詞典。
(4)其它專用名詞。如新產(chǎn)生的產(chǎn)品名、電影名稱、書籍名稱等。
由此可見,粒度選擇、歧義消除和未登錄詞識別是干擾中文分詞的重要原因。孫茂松等[3]發(fā)現(xiàn)在真實語料庫中,由未登錄詞造成的分詞錯誤是歧義切分的5 倍以上,提高未登錄詞識別對提升分詞性能有重大影響。
基于規(guī)則的匹配方法又稱為機械分詞方法或基于字典的分詞方法,就是按照一定的規(guī)則將測試的字段與機器詞典中的詞條相匹配。
1984 年梁南元教授根據(jù)漢俄翻譯機器提到的6-5-4-3-2-1 分詞方法,利用詞典中最長詞的長度作為匹配字段長度進(jìn)行匹配,成功則輸出,失敗則去掉匹配字段中的最后一個字,繼續(xù)匹配,直到全部切分為止,稱為最大匹配法,并首次將最大匹配法用于中文分詞任務(wù),實現(xiàn)了我國第一個自動漢語分詞系統(tǒng)CDWS。除此之外,還有逆向最大匹配法和雙向最大匹配法。
基于詞典的分詞方法直觀簡單,可以通過增減詞典調(diào)整最終的分詞效果。當(dāng)詞典直接決定分詞結(jié)果的好壞時,詞典的構(gòu)造就成了重中之重,即使到現(xiàn)在詞典的作用仍然不可磨滅。
分詞的詞典機制主要有:基于整詞二分、基于TRIE 索引樹以及基于逐字二分。2000 年孫茂松等通過實驗比較3 種詞典機制,認(rèn)為基于逐字二分的分詞詞典機制簡潔、高效,能較好地滿足實用型漢語自動分詞系統(tǒng)需要;2001 年楊文峰等[4]則認(rèn)為原始的3 種詞典機制在更新時維護成本較高且效率較低,故根據(jù)PATRICIA tree 的數(shù)據(jù)結(jié)構(gòu)設(shè)計一種新的分詞詞典機制,可以實現(xiàn)快速查詢及快速更新功能;2003 年李慶虎等[5]提出雙子哈希機制,在不提升現(xiàn)有詞典機制空間復(fù)雜度和維護復(fù)雜度基礎(chǔ)上,提高了中文分詞的速度和效率。
隨后,通過改進(jìn)分詞詞典提高分詞性能的文章層出不窮。雖然基于詞典的分詞方法簡潔高效、操作簡單,但是準(zhǔn)確度不高,不能很好地處理歧義切分和未登錄詞識別。
基于統(tǒng)計的分詞方法是把每個詞看作字組成,相鄰的字在語料庫中出現(xiàn)的次數(shù)越多,就越可能是一個詞。
Mashall 于1993 年提出了CLAWS 算法,利用概率統(tǒng)計模型對語料庫的詞性進(jìn)行自動標(biāo)注;Derose[6]在CLAWS算法基礎(chǔ)上提出WOLSUNGA 算法。此后,中文分詞利用統(tǒng)計方法在詞性標(biāo)注方面取得了巨大成就。2002 年第一屆SIGHAN 會議召開后,Xue 等[7]第一次提出基于字標(biāo)注分詞,成為中文分詞領(lǐng)域的重要方法。一年后,在最大熵模型上實現(xiàn)基于字標(biāo)注的分詞系統(tǒng),在2003 年的bakeoff測評中取得好成績,之后發(fā)表論文詳細(xì)闡述了基于字標(biāo)注的分詞模型。序列標(biāo)注就是將每個中文單字標(biāo)注為B(),I(),O(),E(),S()的形式,以此進(jìn)行分詞,開啟了分詞領(lǐng)域新模式。
目前,基于統(tǒng)計的字序列標(biāo)注分詞方法最常用的步驟如下:①構(gòu)建語言模型;②對句子作單詞劃分,對劃分結(jié)果利用隱馬爾可夫(Hidden Markov Model,HMM)或條件隨機場(Conditional Random Field,CRF)等進(jìn)行概率計算,獲得概率最大分詞方式。
其中,HMM 模型是利用已分詞的訓(xùn)練集訓(xùn)練模型,得到三概率矩陣,利用維特比算法和三概率矩陣分析測試集標(biāo)簽,利用標(biāo)簽進(jìn)行分詞,最常用的結(jié)巴分詞就是基于此模型;此后,Peng 等(2004)又將CRF 引入分詞學(xué)習(xí)中。CRF 模型較于HMM 模型能更好地利用上下文信息,以及外部信息特征完成實驗。
基于統(tǒng)計的分詞方法可以很好地識別未登錄詞和消除歧義,但是統(tǒng)計模型復(fù)雜度高,運行周期長,依賴人工特征提取。隨著計算機運行速度加快,神經(jīng)網(wǎng)絡(luò)逐漸進(jìn)入分詞領(lǐng)域。
2001 年,Bengio 等[8]提出第一個神經(jīng)語言模型——前饋神經(jīng)語言模型,并誕生了詞嵌入這一概念,隨后又提出一種基于神經(jīng)網(wǎng)絡(luò)變種的概率語言模型,將神經(jīng)網(wǎng)絡(luò)引入自然語言處理任務(wù)。神經(jīng)網(wǎng)絡(luò)因其自動學(xué)習(xí)特征,避免了傳統(tǒng)的特征構(gòu)建,早在20 世紀(jì)就有學(xué)者試圖在中文分詞任務(wù)中運用神經(jīng)網(wǎng)絡(luò),但是分詞速度不理想。到了21 世紀(jì),隨著技術(shù)提升以及深度學(xué)習(xí)的發(fā)展,神經(jīng)網(wǎng)絡(luò)在中文分詞領(lǐng)域有了重大進(jìn)步。自序列標(biāo)注方法在bakeoff 測試中取得優(yōu)異成績后,將神經(jīng)網(wǎng)絡(luò)與序列標(biāo)注相結(jié)合成為中文分詞領(lǐng)域的通用框架。
2011 年Collobert 等[9]為改善以往每個NLP 任務(wù)需要設(shè)計構(gòu)造新模型的思想,提出一種可以推廣到其它多種NLP 任務(wù)中的多層神經(jīng)網(wǎng)絡(luò)體系結(jié)構(gòu);2013 年Zheng 等[10]在Collobert 的基礎(chǔ)上,為減少學(xué)習(xí)算法對特征提取的依賴性,將整個句子作為輸入進(jìn)行多層特征提取,得到抽象的特征表示,同時提出了Perceptron-Style 算法,并首次探討利用以上模型算法在中文分詞和詞性標(biāo)注任務(wù)中與CRF統(tǒng)計模型比較速度上的優(yōu)劣;2014 年,Pei 等[11]在此基礎(chǔ)上提出了最大邊緣張量神經(jīng)網(wǎng)絡(luò)模型,模型模擬了標(biāo)簽和上下文字符之間的交互,以獲得更多的語義信息,加快訓(xùn)練速度,防止過擬合,提高了準(zhǔn)確度。
但是,這些算法受限于輸入窗口大小,無法利用文本的時間序列信息進(jìn)行分詞,遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network,RNN)的分詞方法應(yīng)運而生。遞歸神經(jīng)網(wǎng)絡(luò)利用順序信息,在處理新輸入信息的同時存儲上一時刻信息。利用當(dāng)前輸入和上一時刻輸出,同時得到這一時刻輸出。利用遞歸神經(jīng)網(wǎng)絡(luò)可以在序列標(biāo)記任務(wù)中考慮序列信息,提高分詞準(zhǔn)確度。
2015 年,為了對輸入上下文進(jìn)行建模,Chen 等[12]提出門控遞歸神經(jīng)網(wǎng)絡(luò)模型,利用重置門和更新門控制信息的傳送和抽取。而為了解決神經(jīng)網(wǎng)絡(luò)利用固定窗口而忽視長距離信息問題,在Sutskever 等[13]基礎(chǔ)上提出在分詞領(lǐng)域運用長短時記憶網(wǎng)絡(luò)(Long-short-term memory,LSTM)思想,成為分詞領(lǐng)域里程碑式的進(jìn)步。
LSTM 是在RNN 基礎(chǔ)上提出的。雖然RNN 已經(jīng)在語音識別、語言建模和文本生成方面取得巨大成就,但是由于梯度消失和梯度爆炸導(dǎo)致很難訓(xùn)練長距離信息,LSTM則允許網(wǎng)絡(luò)學(xué)習(xí)何時忘記先前信息以及何時在給定信息的情況下更新存儲單元,將重要信息保留在存儲單元中以避免窗口大小限制,可以很好地應(yīng)用在分詞領(lǐng)域;Chen等[14]在一般模型(包括字嵌入層、神經(jīng)網(wǎng)絡(luò)層和標(biāo)簽推理層)基礎(chǔ)上在網(wǎng)絡(luò)層運用LSTM,從精確度(precision)、召回率(recall)、FI 值以及OVV 召回率4 個方面評估,發(fā)現(xiàn)與最新模型相比,LSTM 可以利用較小的窗口獲得最好的性能。
但是LSTM 分詞模型自提出后并沒有在分詞領(lǐng)域得到廣泛研究與應(yīng)用,直到2016 年Yao 等[15]為了充分利用上下文信息進(jìn)行分詞才提出了雙向LSTM;早在2015 年,為解決詞性標(biāo)注問題,Huang 等[16]提出雙向LSTM-CRF 模型,實驗證明該模型在詞性標(biāo)注上的準(zhǔn)確度要優(yōu)于當(dāng)前模型,最高可達(dá)到97.55%;隨后,Xu[17]提出一種基于依賴的門控遞歸網(wǎng)絡(luò),將LSTM 和門控遞歸神經(jīng)網(wǎng)絡(luò)相結(jié)合;黃丹丹等[18]將注意力機制融入雙向LSTM-CRF 模型;Zhang等[19]第一次提出將Lattice LSTM 應(yīng)用到中文實體識別中;Yang 等[20]在Zhang 的基礎(chǔ)上提出在Lattice LSTM 中加入子詞編碼,發(fā)現(xiàn)使用Lattice+word(詞)或Lattice+subword(子詞)替換字符信息后模型性能更好,并提出將具有域詞典的Lattice LSTM 結(jié)構(gòu)用于跨領(lǐng)域分詞的可行性。
2018 年,新型語言模型BERT 刷新了11 項NLP 任務(wù)的性能記錄。Huang 等[21]提出采用多準(zhǔn)則的學(xué)習(xí)方法進(jìn)行中文分詞,利用BERT 進(jìn)行預(yù)訓(xùn)練產(chǎn)生詞向量進(jìn)行特征提取,對BERT 模型進(jìn)行層級修剪來平衡分割速度和準(zhǔn)確度,同時采集不同準(zhǔn)則的數(shù)據(jù)集,捕獲每個數(shù)據(jù)集的異構(gòu)分段標(biāo)準(zhǔn)以及公共知識,最后利用CRF 推理層得到最佳標(biāo)簽序列。這種方法不僅提高了分詞性能,加快了計算速度,還減小了模型尺度。BERT 為中文分詞開創(chuàng)了新的突破口,大幅提高了分詞準(zhǔn)確度。
基于神經(jīng)網(wǎng)絡(luò)的分詞模型經(jīng)過近20 年的研究已趨于成熟,研究人員在序列標(biāo)注、網(wǎng)絡(luò)模型以及推理機制等方面不斷改進(jìn),大大提高了中文分詞的準(zhǔn)確度。但是分詞速度和跨領(lǐng)域分詞等方面仍然存在不足。
隨著計算機技術(shù)的發(fā)展,分詞領(lǐng)域的準(zhǔn)確度也隨之提高,但是通過增加模型內(nèi)部復(fù)雜度來提高準(zhǔn)確度,損害了運行速度;除此之外,未登錄詞的影響仍然存在,專業(yè)名詞的識別失誤在跨領(lǐng)域分詞中尤為明顯。
自從將神經(jīng)網(wǎng)絡(luò)應(yīng)用到中文分詞領(lǐng)域,隨著網(wǎng)絡(luò)模型的不斷改進(jìn),中文分詞的準(zhǔn)確度大大提升,歧義切分的影響逐漸縮小,但是未登錄詞的識別方法仍需改進(jìn),尤其在跨領(lǐng)域分詞任務(wù)中。
2018 年,Ma 等[22]使用雙向LSTM(Bi-LSTM)模型進(jìn)行中文分詞,但未提出新的模型或改進(jìn)模型,而是在LSTM 模型基礎(chǔ)上預(yù)訓(xùn)練字向量、Dropout 和調(diào)整超參數(shù)以達(dá)到State-of-the-art(SOTA),詳細(xì)比較了3 種技術(shù)對性能的影響。預(yù)訓(xùn)練字向量(詞向量)已經(jīng)成為NLP 任務(wù)的基礎(chǔ)工作,例如Word2vec、ELMO、BERT 等,都是對字向量訓(xùn)練的提升算法,實驗發(fā)現(xiàn)預(yù)訓(xùn)練字向量對性能優(yōu)化貢獻(xiàn)最大。針對不同的數(shù)據(jù)集調(diào)整參數(shù)可以很好地提高模型的準(zhǔn)確度。最新的分詞模型大約三分之一的錯誤來自注釋不一致問題,三分之二由詞匯不足造成,使用外部詞典或知識庫非常重要,而調(diào)整模型結(jié)構(gòu)對這類錯誤幾乎毫無用處;Zhang 等[23]提出結(jié)合字典的神經(jīng)網(wǎng)絡(luò)分詞,該方法可以解決由詞稀少引起的問題,并在模型應(yīng)用于不同的域時僅需添加額外的域特定詞典,其它參數(shù)可保持不變。該方法在跨域CWS 任務(wù)中得到明顯改進(jìn),也恰恰證明了Ma 等關(guān)于詞匯不足的重要性結(jié)論。
Zhao 等[24]提出結(jié)合未標(biāo)記和部分標(biāo)記數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)用于跨領(lǐng)域中文分詞方法。發(fā)現(xiàn)在跨域分詞中,Bi-LSMT+LM(未標(biāo)記)+PL(部分標(biāo)記)在大部分測試集中具有最佳性能,同時在域內(nèi)數(shù)據(jù)分詞中有最佳性能。未標(biāo)記和部分標(biāo)記數(shù)據(jù)的結(jié)合應(yīng)用,為跨域分詞乃至域內(nèi)分詞提供了一種新的研究方向。
跨領(lǐng)域分詞瓶頸主要來自于OOV 的原始瓶頸,專有名詞的限制使該瓶頸不可能完全消除,增加領(lǐng)域詞典可以很好地解決跨領(lǐng)域分詞問題。隨著科技進(jìn)步,強大知識庫的構(gòu)建使運用外部輔助方法變得越來越簡便。但是,不同領(lǐng)域的通用分詞算法仍需進(jìn)一步研究。
速度是任何系統(tǒng)不可避免的熱點問題,分詞模型的高準(zhǔn)確率導(dǎo)致復(fù)雜的模型層出不窮,損害了分詞速度,即使在CPU 運算速度不斷提高的情況下,LSTM 分詞模型運行時間仍可達(dá)3 天,Bi-LSTM 的時間也達(dá)17 個小時,而CRF的加入使模型運行速度更加緩慢。分詞作為自然語言處理的基礎(chǔ)步驟,不僅需要高準(zhǔn)確度,運行速度也是目前研究熱點。
2016 年,Cai 等[25]提出一種新穎的神經(jīng)網(wǎng)絡(luò)模型,構(gòu)建句子完整的切分歷史,直接在結(jié)果上進(jìn)行建??砂l(fā)現(xiàn)訓(xùn)練和測試速度慢的原因。隨后提出一種貪婪神經(jīng)詞分割器,通過去掉不必要的設(shè)計建立更有效的字符組合模型,大幅降低訓(xùn)練和運行時間[26]。
劉志明等[27]提出一種最簡門單元模型,在LSTM 基礎(chǔ)上刪除輸出門,將隱藏狀態(tài)和細(xì)胞狀態(tài)合并,輸入門和遺忘門合為更新門以簡化網(wǎng)絡(luò)結(jié)構(gòu)。結(jié)果顯示MGU 精度并無大的差異,而推理速度是LSTM 模型的3 倍,訓(xùn)練耗時則是LSTM 的1/2,證明通過簡化模型提高訓(xùn)練速度減少訓(xùn)練時間的方法是可行的。
除此之外,循環(huán)神經(jīng)網(wǎng)絡(luò)在長距離信息保存上的優(yōu)越性,使得NLP 中循環(huán)神經(jīng)網(wǎng)絡(luò)占主要地位,但實際上卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)能更好地理解語義信息,并利用稀疏連接縮短運算時間,提高效率。文獻(xiàn)[28]為改進(jìn)人工設(shè)計特征提取,采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取并取得較好效果;涂文博等[29]驗證了采用無池化卷積神經(jīng)網(wǎng)絡(luò)的速度是池化層卷積神經(jīng)網(wǎng)絡(luò)的4 倍左右;王星等[30]認(rèn)為目前的分詞模型只利用到漢字,字根和五筆等深層次特征也應(yīng)考慮在內(nèi)。采用膨脹卷積神經(jīng)網(wǎng)絡(luò),使用CRF 進(jìn)行解碼,結(jié)果表明準(zhǔn)確度和速度都高于Bi-LSTM 模型。可見,卷積神經(jīng)網(wǎng)絡(luò)早已進(jìn)入分詞領(lǐng)域。
對于分詞速度的影響因素主要有網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜性以及解碼方式。目前,分詞準(zhǔn)確度已達(dá)到相當(dāng)高的水平,因此在保證準(zhǔn)確率的前提下,速度成為分詞研究的重要方向,而卷積神經(jīng)網(wǎng)絡(luò)對速度和準(zhǔn)確率的兼顧性使其具有極大的研究價值。
分詞技術(shù)正在逐步改進(jìn)?;谠~典分詞的機械分詞方法操作簡單,實現(xiàn)快速,但利用已有的詞典直接匹配獲取存在領(lǐng)域局限性,并且歧義性和局外詞匯識別差。基于統(tǒng)計分詞的監(jiān)督學(xué)習(xí)算法改進(jìn)了歧義等問題,將分詞轉(zhuǎn)換為序列標(biāo)注問題,CRF 模型和HMM 模型成為統(tǒng)計分詞的主要方法。近年,神經(jīng)網(wǎng)絡(luò)的出現(xiàn)使分詞準(zhǔn)確度有了極大提高,但在Bi-LSTM+CRF 算法應(yīng)用于分詞領(lǐng)域后,準(zhǔn)確度的提升空間逐步變小,如表1 所示。
Table 1 F1 value of participle in each document表1 各文獻(xiàn)分詞F1 值
雖然各文獻(xiàn)所用方法存在外部差異,如外加字典、預(yù)處理、Dropout 等,但結(jié)果波動不大。由此可見,目前分詞領(lǐng)域研究已經(jīng)趨于成熟,作為基礎(chǔ)任務(wù)可滿足絕大部分NLP問題研究。但是,分詞性能和速度存在不一致性,而卷積神經(jīng)網(wǎng)絡(luò)由于速度優(yōu)勢,近年也常應(yīng)用于自然語言處理領(lǐng)域并取得顯著成效。
中文分詞研究應(yīng)該兼顧準(zhǔn)確度與速度,在兩者之間選擇平衡點,卷積神經(jīng)網(wǎng)絡(luò)在速度上的優(yōu)勢勢必會給分詞領(lǐng)域帶來重大改進(jìn)。