周 慧,徐名海,許曉東
(南京郵電大學通信與信息工程學院,江蘇 南京 210003)
中文分詞是在中文領域中處理自然語言[1](Natural Language Processing, NLP)過程最為基礎的一步,是為進一步進行詞性標注、機器翻譯、信息檢索的基礎。但是中文的語言體系相對復雜,詞與詞之間的界限不夠清晰,存在一詞多義、未登錄詞、語句歧義的現(xiàn)象,只有結合上下文信息以及語境才能夠準確地進行分詞。通過中文分詞模型能夠較好地解決歧義問題,提高信息檢索、機器翻譯等工作搜索和翻譯結果的準確性,從而提高人們的工作效率。
自然語言作為人類最重要的交際工具,是人類進行溝通交流的最主要表達方式。隨著計算機科學的深入發(fā)展,計算機已經(jīng)深入各個領域,如何使人與計算機之間用自然語言進行更直觀、更有效的通信成為一個重要的問題,于是誕生了自然語言處理。自然語言處理應用在各個領域,而在進行中文的語言處理中,第一步就是要對中文文本進行分詞處理,中文分詞主要有3種方式:基于自然語言規(guī)則的處理方式、基于概率統(tǒng)計模型的處理方式和基于深度學習網(wǎng)絡模型的處理方式。
國內(nèi)學者對如何進行中文分詞以及如何提高分詞結果的準確率進行研究。在基于自然語言規(guī)則處理中文分詞的方法中,主要有正向最大匹配算法[2]、逆向最大匹配算法[3]、雙向最大匹配算法[4-5]等。其中,張玉茹[6]針對中文分詞算法之最大匹配算法進行研究,詳細分析用該算法的長詞優(yōu)先原則進行分詞切分,分析最大匹配算法的分類和用最簡單的例子闡明算法思想。在基于統(tǒng)計的中文分詞方法中,Xue[3]首先提出將語料標注為(B,M,E,S)的四標注集,并基于最大熵(Maximum Entropy, ME)模型實現(xiàn)了中文分詞。王威[7]采用條件隨機場(Conditional Random Field, CRF)作為分詞模型,通過對中文分詞預處理和中文分詞算法的分析,提出了一種復合詞位標記集合來使模型在引入少量參數(shù)的前提下,能夠在分詞的同時更好地識別出語句中的命名實體。此外有人提出將基于規(guī)則的分詞方法與基于統(tǒng)計的分詞方法進行結合,楊貴軍等人[8]提出了一種基于最大匹配算法的似然導向中文分詞方法,在分詞階段將訓練數(shù)據(jù)的統(tǒng)計信息融入到基于規(guī)則的最大分詞算法中,通過最大似然原理確定最優(yōu)分詞模型并提高分詞準確率。以上提出的中文分詞方法是基于規(guī)則和傳統(tǒng)的機器學習的算法模型,這些模型都受到一定的限制,基于規(guī)則的匹配算法受到詞典的不靈活特性的限制,只有出現(xiàn)在詞典中的詞才能匹配,對于未出現(xiàn)過的詞即未登錄詞則受到限制;而對于傳統(tǒng)的機器學習模型,對于模型的訓練是基于人為設置的特征,針對的場景不夠全面,不具有廣泛而全面的適用性。
隨著人工智能的深入研究,神經(jīng)網(wǎng)絡逐漸成為研究的主要方向,深度神經(jīng)網(wǎng)絡可從原始數(shù)據(jù)中自動提取深層次抽象特征的優(yōu)勢,避免了人工設計特征的復雜性,在語音識別[9]、情感識別[10]、計算機視覺[11]等領域取得了顯著的效果。由于神經(jīng)網(wǎng)絡可以自動學習特征,避免了傳統(tǒng)的特征工程。在NLP任務中,深度學習也展現(xiàn)出特有的優(yōu)勢[12]。Bengio等人[13]提出了一種基于神經(jīng)網(wǎng)絡變種的概率語言模型。之后,Collebert等人[14]將神經(jīng)網(wǎng)絡應用到自然語言處理中。Zheng等人[15]首先將神經(jīng)網(wǎng)絡引入到中文分詞領域,并利用感知器算法加速訓練的過程。Pei等人[16]在文獻[15]的基礎上,利用標簽嵌入和基于張量的轉換,提出了名為MMTNN的神經(jīng)網(wǎng)絡模型[17-18]的方法用于中文分詞任務。Chen等人[19]首次在門循環(huán)神經(jīng)網(wǎng)絡(Gated Recurrent Neural Network, GRNN)網(wǎng)絡模型基礎上改進了記憶單元的長短期記憶網(wǎng)絡(Long Short-Term Model, LSTM)模型用于中文分詞,利用門單元實現(xiàn)了對歷史信息的選擇,解決了長距離信息依賴的問題。例如,刁琦[20]基于LSTM模型并采用六詞位標注集進行中文分詞,論文結果表明LSTM能夠有效解決梯度爆炸和數(shù)據(jù)稀疏的問題。2016年,Yao等人[21]提出采用雙向的LSTM(Bidirectional Long Short-Term Memory, BILSTM)模型進行中文分詞,從過去和未來2個方向獲取上下文的信息,提高分詞效果。由于LSTM神經(jīng)網(wǎng)絡模型較為復雜,存在訓練和預測時間長的問題,為了解決這些問題,采取了門限循環(huán)單元(Gated Recurrent unit, GRU)神經(jīng)網(wǎng)絡的中文分詞方法。GRU模型和LSTM模型都是RNN的變體,相對于LSTM的3個門,GRU模型只有3個門控制單元,模型更加簡單,從而運行時間效率更高。Jozefowicz等人[22]對比了GRU和LSTM模型,發(fā)現(xiàn)GRU與LSTM的分詞方法也具有相似的分詞效果,準確率相差不大,但是GRU的運行速度相對于LSTM更快。因此,GRU模型被越來越多地應用在自然語言處理領域中。例如,李雪蓮等人[23]提出基于GRU的中文分詞方法,繼承了LSTM模型可自動學習、克服長距離信息依賴的優(yōu)點,還提高了分詞速率。車金立等人[24]在此基礎上提出了一種改進的雙向門限循環(huán)單元條件隨機場(BIGRU-CRF)模型,通過雙向門限循環(huán)單元有效利用上下文信息,而且可以通過條件隨機場層聯(lián)合考慮相鄰標簽間的相關性,考慮全局最優(yōu)的標記結果。但是,這里只考慮了GRU輸出層相鄰標簽的相關性,沒有考慮輸入和輸出之間的相關性的重要性。此外,黃丹丹等人[25]提出將Attention機制與BILSTM-CRF模型結合,在BILSTM-CRF中文分詞的模型中融合Attention機制,通過注意機制計算BILSTM模型的輸入和輸出之間的相關性的重要性,并根據(jù)重要程度獲得文本的整體特征。但是,BILSTM-CRF的運行時間相對較長,所以在接下來的研究中可以考慮提高分詞的運行速度。
LSTM在中文分詞中已經(jīng)取得了較大的進展,分詞效率也比較高,GRU與LSTM的分詞方法也具有相似的分詞效果,但是GRU的運行速度相對于LSTM更快。為了在不影響中文分詞的準確率的條件下,進一步提高中文分詞的速度,本文將基于BIGRU-CRF模型,提出了將BIGRU-CRF模型與Attention機制結合的中文分詞算法,BIGRU能夠充分利用上下文的信息,CRF能夠使用標簽信息,Attention機制能夠充分考慮不同字對輸出結果的影響程度,綜合利用多種信息。利用改進的Attention-BIGRU-CRF模型,在MSRA corpus和人民日報2014公開數(shù)據(jù)集上進行實驗。
中文分詞一般應用在自然語言處理的過程中,比如場景1:用戶通過在醫(yī)院的問診平臺描述自己的癥狀,問診平臺根據(jù)用戶癥狀輸出可以就診的科室。問診平臺將輸入的中文文本,首先進行中文分詞,將句子劃分成一個個的詞語,再通過這些詞進行判斷,獲得就診科室的相應信息。場景2:當用戶想要通過搜索引擎[26]獲取搜索結果,先要在對話框中輸入請求,搜索引擎第一步將文本進行分詞,提取請求中的關鍵字,再進行搜索。場景3:目前市面上比較廣泛應用的智能音箱[27](如蘋果的Siri、百度的小愛同學等)通過接收語音的方式,獲取語音后,將其進行語音識別轉換成自然語言文本,然后再對中文文本進行處理。根據(jù)以上的應用場景,本文通過圖1來表示中文分詞的功能。
圖1 一般應用場景
結合以上描述和圖1可知,中文分詞就是將一個中文文本劃分成一個個的詞語,再對這些詞語進行關鍵詞的提取或者分類,從而實現(xiàn)搜索引擎、語音識別、機器翻譯等操作。
需求分析:將中文文本(文檔、句子等)劃分成一個個的字,通過中文分詞模型,得到讓每個字獲取到位置標簽的概率。
中文分詞可以看成字的序列標注問題,將分詞過程轉化為每個字在序列中標注的過程。在中文文本中,由于一個詞語中每個字在文本中都占一個確定的詞位,因此可以將分詞過程視為學習這個字的詞位信息的機器學習的過程。本文主要采用四詞位標注信息(B、M、E、S),當該字出現(xiàn)在單詞的第一位時用詞位B(Begin)表示,中間位置用詞位M(Middle)表示,詞的末尾用E(End)表示,獨立的字用詞位S(Single),最后根據(jù)CRF最后輸出的概率大小來判斷詞位標簽。
目前,神經(jīng)網(wǎng)絡的算法在中文分詞方法中表現(xiàn)十分優(yōu)越,有利于提高分詞結果的準確率。目前常用在中文分詞領域的方法如表1所示。
表1 傳統(tǒng)中文分詞方法優(yōu)缺點
由表1可知,神經(jīng)網(wǎng)絡具有自動學習、克服長距離信息依賴的優(yōu)點,還提高了分詞效率。但引入attention機制后,運行速率會降低,為了從分詞效率和分詞速率2個方面考慮,對Attention-BILSTM-CRF模型進行改進。
根據(jù)以上現(xiàn)有處理中文分詞模型的分析,可以得出2個結論:1)GRU模型的參數(shù)比LSTM模型參數(shù)少,分詞速度快;2)引入attention模型能夠提高模型分詞結果的準確率。
3.2.1 驗證GRU模型的參數(shù)比LSTM參數(shù)少
LSTM模型的原理:LSTM是RNN模型的一種變體,通過門控機制來控制信息傳遞的路徑。通過遺忘門f、輸入門i、輸出門o分別來控制上一個時刻的內(nèi)部狀態(tài)需要遺忘多少信息,控制當前時刻的候選狀態(tài)保存多少信息,以及控制當前時刻內(nèi)部狀態(tài)有多少信息要輸出給隱藏狀態(tài)h。LSTM網(wǎng)絡的單元結構如圖2所示。
圖2 LSTM網(wǎng)絡單元結構
圖2中x=(x1,x2,…,xn)為輸入數(shù)據(jù),h=(h1,h2,…,hn)是LSTM單元的輸出,LSTM網(wǎng)絡單元的計算公式如下:
ft=σ(Wf·[ht-1,xt]+bf)
it=σ(Wi·[ht-1,xt]+bi)
ot=σ(Wo·[ht-1,xt]+bo)
ht=ot⊙g(ct)
GRU模型的原理:GRU模型是RNN模型的一種,GRU和LSTM相似,也是用門控機制控制輸入、記憶等信息而在當前時間做出預測。也可以解決RNN網(wǎng)絡中的長期依賴問題,有效利用長距離的上下文信息。GRU網(wǎng)絡的單元結構如圖3所示。
圖3 GRU網(wǎng)絡單元結構
圖3中x=(x1,x2,…,xn)為輸入數(shù)據(jù),h=(h1,h2,…,hn)是GRU單元的輸出,GRU網(wǎng)絡單元的計算公式如下:
rt=σ(Wr·[ht-1,xt]+br)
zt=σ(Wz·[ht-1,xt]+bz)
根據(jù)上述的原理以及2個模型的公式可以得出GRU的參數(shù)少于LSTM的參數(shù),訓練和測試相同的文本,參數(shù)越少,計算速度越快,分詞時間則越短。
3.2.2 引入Attention機制的必要性
Attention機制就是從人腦的注意力機制演化來的,深度學習中的注意力機制從本質上講和人類的選擇性視覺注意力機制類似,核心目標也是從眾多信息中選擇出對當前任務目標更關鍵的信息。注意力是一種資源分配方案,將有限的計算資源用來處理更重要的信息,是解決信息超載問題的主要手段。
Attention機制是一種模擬人腦的注意力機制模型,可以看成一個組合函數(shù),通過計算記憶力的概率分布,來突出某個關鍵輸入對輸出的影響。Attention機制如圖4所示。
圖4 Attention機制
本文引入Attention模型對BIGRU層的輸入與輸出之間的相關性進行重要程度計算,根據(jù)重要程度獲取文本整體特征,以突出特定的字對于整個文本的重要程度。
BIGRU-CRF模型是將BIGRU網(wǎng)絡和CRF模型結合起來,即在BIGRU網(wǎng)絡的隱藏層后加一層CRF線性層。該模型通過雙向GRU結合上下文的特征,并且經(jīng)由CRF層有效地考慮句子前后的標簽信息,提高標簽預測的準確率。Attention機制能夠考慮BIGRU層的前后輸入與當前輸出之間的相關性,進一步提高分詞的準確率。
本文提出融合Attention與BIGRU-CRF的模型,模型如圖5所示。
圖5 Attention-BIGRU-CRF模型
由圖5可以得到在本文提出的Attention-BIGRU-CRF模型中,第1層是將原始文本序列進行向量化,用一個固定長度的向量表示每一個字。文本向量化就是將自然語言表示的中文文本轉換成機器能讀懂的數(shù)字。這里的文本向量化采用分布式表示法,獲得每一個字對應的向量[x1,x2,…,xj,…,xn]。第2層是BIGRU層,通過一個前向和一個后向的GRU模型對輸入的文本向量進行處理,通過保留和去除上下文的信息,從而對當前輸出字有一個較為準確的預測。第3層是Attention層,Attention機制是獲取當前的目標字與輸入文本中的所有字的相似性概率值,即詞向量層的每一個輸入[x1,x2,…,xj,…,xn]與目標向量xt之間的相關性。第4層是組合層,將BIGRU層的輸出與Attention層的輸出進行組合,獲取信息更加充分的字特征。第5層是CRF層,將組合層獲取的值作為CRF的輸入,預測對應字獲取的標簽的概率。
本文將Attention機制放置在在BIGRU層和CRF層之間,用于計算BIGRU前后輸入hj與當前輸入ht之間的相似性,根據(jù)相似性判斷輸入與輸出之間的相關性,得到注意力權重系數(shù)αtj,將得到的權重系數(shù)與BIGRU對應輸出hj點乘,表示BIGRU前后輸入對當前輸出的影響。注意力權重系數(shù)αtj計算方法如下:
用一個變量ut表示在t時刻對BIGRU的輸出經(jīng)過Attention機制處理,獲取權重系數(shù)的加權求和的值,即注意力值。
把經(jīng)過注意力機制的注意力值ut與BIGRU層的輸出ht重新組合成一個向量zt,這個新的向量表示既考慮字向量在通過BIGRU時前后字符的關系又考慮每個字對于整個句子的重要性,從而能夠更準確地進行分詞操作。
zt=[ut;ht]
接下來,把zt作為CRF的觀測序列,狀態(tài)序列在本文主要是用于表示輸出為標簽B、M、E、S這4個狀態(tài)的概率。首先,對打分函數(shù)進行定義:
其中,A表示轉移分數(shù)矩陣,Ai,j表示從標簽i轉移到標簽j的分數(shù)。Pn×k是前面幾層輸出的得分矩陣,n是該句話中漢字的個數(shù),k為標簽的個數(shù),Pi,j表示第i個字被標記為第j個標簽的概率。
在訓練過程中,要最大化正確標簽序列的似然概率,具體如下:
其中,YX是指一個輸入序列的對應的所有可能標簽序列。在解碼時,利用動態(tài)規(guī)劃算法,如Viterbi算法,通過以下公式預測其最大得分的輸出序列為:
本文首先對語料庫進行預處理,切分詞語的部分信息,不需要詞性標注信息。隨后對原語料庫進行讀取并標注,將每個中文字符標注為4種類型。分別為S(0)、B(1)、M(2)、E(3),其中S代表單個字,B代表詞的第一個字,M代表詞的中間部分字,E代表詞的最后一個字。同時將語料庫進行劃分,將90%作為訓練集,10%作為測試集評估模型。
本文將比較Attention-BIGRU-CRF模型與BIGRU-CRF、BILSTM-CRF、Attention-BILSTM-CRF模型的分詞效果,以及比較測試相同的數(shù)據(jù)集下本文模型與Attention-BILSTM-CRF模型兩者的訓練速率。
本文實驗模型基于Python3.7和TensorFlow1.14版本,實驗數(shù)據(jù)采用MSRA corpus和人民日報2014公開數(shù)據(jù)集。MSRA corpus數(shù)據(jù)集參數(shù)設置如表2所示。
表2 參數(shù)設置
本文采用準確率(Precision)、召回率(Recall)和F1測量值作為評估指標,指標的計算方式如下:
準確率:P=正確分詞的個數(shù)/識別文本的詞語數(shù)
召回率:R=正確分詞的個數(shù)/文本中總詞語個數(shù)
F1值=2×P×R/(P+R)
準確率和召回率是一般多用于信息檢索、機器學習領域的2個度量值,用來評價結果的質量。在本文中,準確率和召回率分別從不同角度表現(xiàn)了模型的分詞性能,兩者的指標是負相關的,而F1值綜合考慮了兩者,所以模型的效果將優(yōu)先看F1值表現(xiàn)。
分詞速度主要是觀察不同模型分詞的用時,以KB/s為單位計算。
為了對本文提出的模型做出更加客觀的評價,本文分別對人民日報語料和MSRA語料進行測評,具體實驗結果如表3和表4所示。對人民日報語料庫中進行分詞速度的測試,結果如表5所示。
表3 人民日報語料測試結果
表4 MSRA語料測試結果
表5 分詞速率
根據(jù)圖6和圖7,首先比較BIGRU-CRF和Attention-BIGRU-CRF這兩者的實驗結果,后者的F1值在人民日報語料和MSRA語料庫上比前者分別高出2.08個百分點和2.05個百分點。由此可見,Attention能夠利用BIGRU網(wǎng)絡的輸入輸出相關性,提高分詞的效果。
圖6 人民日報語料測試結果對比
圖7 MSRA語料測試結果對比
此外,通過實驗計算出人民日報語料測試集前50輪的F1值的更新時間,通過表5可以得知,Attention-BIGRU-CRF訓練同樣的數(shù)據(jù)花費的時間要少于Attention-BILSTM-CRF,由此可以說明Attention-BIGRU-CRF模型有更高的訓練效率。
針對中文分詞的準確率,本文在BIGRU-CRF的模型上,提出了一種Attention-BIGRU-CRF分詞模型,該模型不僅繼承了BIGRU模型可以同時利用雙向上下文的信息與相鄰標簽間的相關性進行分詞,還考慮到BIGRU層的輸入輸出之間的關系,從而進一步提高分詞效率。通過該模型在人民日報和MSRA語料庫上進行測試,結果表明Attention-BIGRU-CRF在分詞效率上優(yōu)于BIGRU-CRF,在訓練效率上優(yōu)于Attention-BILSTM-CRF。說明本文的模型不僅在分詞效果上有優(yōu)越性,分詞的訓練速率也具有優(yōu)越性。如今分詞效率已經(jīng)獲取了較大的進步,但是仍然存在一些不足,可以考慮在詞向量層進行改進,利用BERT語言預處理模型來表征詞向量,能夠在詞向量層描述字符級、詞級、句子級甚至句間關系特征,進一步提高分詞結果的準確率。