涂文博,袁貞明,俞 凱
1.杭州師范大學 信息工程學院,杭州311121
2.移動健康管理系統教育部工程研究中心,杭州311121
單詞,是能夠獨立存在且承載語義的最小語言單元。相對于單字來說,單詞能夠表達的語義更加豐富。以英語為代表的一些語言,單詞之間以空格作為自然分隔符,而漢語等大部分東亞語言文字,則以單字作為基本的語言單位,詞語之間沒有明顯的分隔標記。因此,在中文信息處理中,分詞是一個十分關鍵且困難的基本任務。很多中文自然語言處理(Natural Language Processing,NLP)的任務都需要先進行分詞,再根據分好的單詞繼續完成任務。
分詞的方法,大多采用有監督的機器學習方法。文獻[1]基于字標注學習的方法,首次將分詞任務形式化為對字位的序列標注學習任務。這種方法使用一個字在單詞中的四種相對位置的標簽,即BMES(開始,中間,結束,單字)(如表1 所示)等字位,來表示該字所攜帶的單詞切分標注信息。

表1 字位標注示例
之后,文獻[2]使用最大熵(Maximum Entropy,ME)Markov模型第一次將序列標注學習方法應用到分詞任務中,表2顯示不同的序列標注集。文獻[3]和文獻[4]又將標準的序列標注學習方法——條件隨機場(Conditional Random Field,CRF)引入到分詞學習任務當中。自此以后,CRF的各種變種方法便成為主流的非深度學習分詞模型,這些模型構成了傳統的分詞方法。然而,傳統的分詞方法的表現十分依賴于人工處理的特征。

表2 各類字位標注集
最近幾年,隨著深度學習技術和詞嵌入技術(Word Embedding)的發展,很多學者開始將神經網絡方法用于自然語言處理。由于神經網絡方法能夠極大地減少特征工程的工作量,中文分詞的方法也從傳統的非神經網絡方法遷移到基于神經網絡方法上來。文獻[5]提出了使用滑動窗口提取窗口內文字特征,然后對應窗口來解決標簽分類問題的神經網絡方法。在其基礎上,文獻[6]提出了使用神經網絡做中文分詞,并首次驗證了在中文分詞任務上使用神經網絡的可行性。文獻[7]在文獻[6]的模型上引入標簽向量來更精細地刻畫標簽之間的轉移關系。文獻[8]提出了一種帶有自適應門結構的遞歸神經網絡(Gated Recursive Neural Network,GRNN)。針對滑動窗口的局部性,文獻[9]提出用長短時記憶神經網絡(Long Short-Term Memory Neural Networks,LSTM)來捕捉長距離依賴。文獻[10]將GRNN和LSTM結合起來進行更深入的特征提取。
盡管現在大多數現有的工作在準確性方面取得了較好的成績,但它們也有模型過于復雜、過于依賴人工處理的特征、對新詞表現不佳等缺點。本文提出一種基于卷積神經網絡(Convolutional Neural Networks,CNN)的分詞模型——PCNN(Pure CNN)模型,該模型使用字向量結合上下文字向量的方式來對字進行標簽分類。該模型結構簡單,不依賴人工處理的特征,在性能方面具有很高的準確率。并且,根據不同的字向量模型,對不同領域的文本分詞任務也有很好的表現。
在做自然語言處理任務時,需要把字或詞用數字化的形式表示,傳統的方法如One-hot編碼表示,是建立一個詞庫并對詞庫內每一個詞編號。采用這種方法編碼,每個詞就是一個很長的向量,向量的維度與詞庫大小相同,向量中,只有該詞的對應位置上的數字為1,其他位置均為0。這種方法有兩個主要缺點,一是詞向量十分稀疏,二是詞與詞之間沒有任何關聯,比如它并不能表現出近義詞之間的相似性。
為了解決One-hot編碼所出現的問題,文獻[11]首次提出分布式表示(Distributed Representation)方法來表示詞,它的基本思想是使用統計學方法通過訓練把句子中的每個詞映射成K 維的實數向量,通過詞與詞的實數向量之間的距離(如歐氏距離、余弦距離等)來描述詞之間的語義相似性,即相似文本擁有相似的向量。之后,文獻[12]提出了神經網絡語言模型,該模型首次使用了詞向量這一方法。自此,眾多學者參與到詞向量研究當中,并且使用詞向量方法在很多NLP任務中獲得很大效果提升。后來,谷歌公司的學者在文獻[13]提出Word2vec,這是一種使用神經網絡的詞向量的訓練工具,它使得詞向量的訓練變得更容易,繼而被廣泛應用于自然語言處理中。和以詞為句子基本單位的英文不同,中文句子中對詞并無明顯的劃分,因而在中文NLP任務中,尤其是分詞領域,需要用字代替詞來訓練字向量表示句子。
卷積神經網絡(CNN)現在被廣泛應用于計算機視覺中。隨著詞向量和深度學習技術的發展,現在很多學者開始在自然語言處理任務中使用CNN。文獻[14]提出了一種改進的單層卷積網絡對句子進行分類,并獲得不錯的結果。文獻[15]使用單層的CNN對社交網絡文本做情感分析。文獻[16]提出基于卷積神經網絡的動態卷積神經網絡(Dynamic Convolutional Neural Network,DCNN),結合英文詞向量對句子建模。使用詞或字向量的神經網絡模型,因詞或字向量的特殊表示方法,使得模型并不依賴于特定語言和特定句法,因此具有很好的擴展性和適用性。
在使用CNN 做NLP 任務時,眾多模型沿襲了CNN在圖形圖像領域的使用方式,采用卷積層加池化層的模式設計模型結構。由于圖像像素和字向量元素特征的本質不同,池化過程會造成卷積層提取到的文字之間關聯信息的部分特征缺失,進而影響模型的性能表現。本文在文獻[16]提出的模型基礎上,通過移除模型池化層,改進卷積方式,并結合滑動窗口,提出使用字向量上下文窗口對字進行標簽分類的分詞方法。并與近年其他分詞模型的表現進行了對比,實驗結果表明,本文提出模型的性能表現達到了甚至優于主流模型的水準,且具有良好的穩定性。另外,在池化與無池化的對比實驗中,也驗證了無池化層模型要遠遠好于有池化層的模型。
卷積操作是CNN的重要特征之一。與傳統的數學上的卷積不同,CNN中的卷積,是狹義的卷積操作。卷積層以特征映射為組織方式,其中的每一個單位與前一層的局部感受野相連接,利用共享的卷積核(或稱過濾器)與局部感受野做卷積運算,再經過激活函數(如ReLU、tanh)做非線性運算,得到特征值。通常,在神經網絡中,卷積運算以二維形式出現,給定一個矩陣X ∈?M×N,和卷積核F ∈?m×n,一般m ?M,n ?N ,其卷積如式(1)所示:

特別的,由于NLP任務的特殊性,卷積在NLP任務中以一維卷積的形式出現,即對文本序列s ∈Rn,一維卷積核f ∈Rm,其中n ≥m ,可得式(2),卷積結果為conv ∈

為了均衡文本邊緣(開始和結束處)與文本中間位置特征提取的頻繁程度,使用文本邊緣填充padding 的方式進行卷積運算,這種方法也稱為寬卷積。寬卷積不要求式(2)中n 與m 的大小關系,同時可以保證卷積結果convt不為空向量。
PCNN 是以字向量作為輸入,結合滑動窗口,使用卷積神經網絡來進行字標簽分類任務的神經網絡模型。該模型的結構如圖1所示。
定義ci∈?d為d 維的字向量,k 為上下文單字的數量,上下文字窗口大小為2k+1,上下文字向量矩陣為模型的輸入矩陣,x 由文本序列的第i個字及其前后各k 個字的字向量組成。式(3)給出上下文字向量矩陣x 的定義:

用該矩陣做字i 的標簽分類任務。之后,窗口滑動向后一個字,即做分類字i+1 的標簽任務。
模型第一層是一維卷積層,卷積核大小為h×1(圖示中為2×1),padding 核為(pd,0)。該層主要提取相鄰h 個字之間在字向量中第m 維上的特征。例如,第l層第m 維第i+pd 個特征可由第l-1 層的子矩陣提取。具體的,如式(4)所示:這里,l 表示第l 層,wl為第l 層的卷積核,bl為第l 層的偏置單位,f 為激活函數,本層的卷積采用寬卷積,對邊緣補零向量。


圖1 上下文字窗口矩陣的多通道的PCNN模型結構示意圖
模型第二層同樣是卷積層,卷積核大小為1×d,即卷積核維數與字向量維數相同。第二層卷積之后是兩層全連接層,第一層的全連接的輸入特征向量A1是由前一層p 個通道的卷積結果的激活向量ai組合而成,A1可以表示為:

其中,⊕表示向量連接運算。全連接的計算方式由式(6)給出:

式中,W 為該全連接層的參數矩陣(向量),A 為上一層網絡輸出結果經激活函數進行非線性計算后的輸入矩陣(向量),b′是該層的偏置向量。
模型的最后輸出向量連接到SoftMax函數,由Soft-Max函數輸出該字在不同標簽上的概率分布。
一般的卷積神經網絡在處理圖像問題中,卷積操作之后都會有一個池化的過程,即采用類似卷積操作中卷積核運行的方式,對局部感受野中的特征進行取最大值或取均值的篩選過程。傳統的觀點認為(文獻[17]、文獻[18]),池化層能在模型應對圖像的細微平移和變形的問題時起到穩定性的作用,但這個假設并未被驗證[19]。而最近的研究證明,由池化層提供的歸納偏差并不是良好性能的必要條件。文獻[20]在其圖像處理模型中減少了網絡的池化層,并依然實現了強大的性能。DeepMind公司發表的文獻[19]指出,池化對于卷積神經網絡模型應對圖像微小平移和變形的穩定性沒有作用,卷積核的平滑度才是關鍵。也就是說,池化的主要作用只有精簡出前一層的特征并減少下一層網絡的計算量。并且認為,字向量中的特征與圖像像素的特征性質并不等價,字向量的訓練本身就是一個特征生成和篩選的過程,字向量不同的維度也是對特征做了不同程度的精簡,不再需要池化層做進一步的特征篩選。所以在模型中,移除了神經網絡模型中的池化層,只做一維卷積操作。并且,在分詞實驗中,單獨設置了一個有池化與無池化的對比實驗,該實驗也證實了移除池化層之后的準確率等模型評估值更高。
基于以上信息,下面給出PCNN模型的分詞算法抽象描述:
算法PCNN模型分詞算法
初始化:隨機設置兩層卷積的參數,包括卷積核w1,w2、偏置單位b1,b2,并分別指定兩層卷積的通道數C1、C2。隨機設置兩層全連接的參數,包括參數矩陣W1,W2、偏置單位b′1,b′2;根據運行環境設置批數據量batch-size大小。
輸入:字向量上下文矩陣X 。
輸出:各層網絡的所有參數(w1,w2,b1,b2,W1,W2,b′1,b′2)。
步驟1 設置迭代次數epochs 和學習率α。
步驟2 計算網絡第一、二層卷積值。
步驟3 連接C2 個通道的卷積結果作為下一層全連接的輸入數據。
步驟4 計算兩層全連接層,得到SoftMax結果。
步驟5 計算損失并使用學習率為α 的梯度下降算法獲得各層參數(w1,w2,b1,b2,W1,W2,b′1,b′2)更新值。
步驟6 更新各層參數(w1,w2,b1,b2,W1,W2,b′1,b′2)。
步驟7 重復步驟2~6直至達到設定的epochs 為止。
實驗采用SIGHAN Bakeoff-2005數據集,該數據集是由國際性的中文分詞評測競賽公開的數據集。本實驗中,只使用數據集中四份語料中的兩份簡體中文語料,這兩份語料分別由北京大學(下稱PKU 數據集)和微軟亞洲研究院(下稱MSR數據集)整理。數據集的統計數據如表3所示。

表3 數據集統計信息
對于數據集的劃分,考慮到數據集規模相對龐大。采用9∶1 的分割方法對數據集進行訓練集和測試集進行劃分,即training_set∶test_set=9∶1。訓練集和測試集的數據在使用前均進行隨機排列操作。
另外,對于字向量的訓練數據集,采用的是搜狗公司公開的2006年分類新聞數據集和上面提及的PKU數據集與MSR 數據集共三個數據集,文本文件大小共計約為71 MB。訓練的字向量特征維度為120維。
模型采用查準率(Precision,P)、查全率(Recall,R)、F1 值和測試集的準確率(Accuracy,A)作為評估標準。定義y 為模型輸出的字標簽預測分類值集合,y^ 為數據集字標簽的真實值集合,模型的查準率P(y,y^)由式(7)給出定義:


F1 值由式(9)給出定義,它是P 值和R 值的調和平均數,其中β=1。


以上四個值都是值越高模型表現越好。
實驗采用帶有GPU的云服務器運行本文的實驗代碼,具體的實驗環境如表4。

表4 實驗環境
神經網絡的超參數對神經網絡模型的優劣是至關重要的,經過多次調試,選出表5 中超參數值作為本文實驗最終模型所采用的超參數。

表5 神經網絡超參數
神經網絡的訓練過程中,epochs 數對模型收斂情況有重要影響,因此,針對不同的epochs 值使用F1 值做了分詞測試,在PKU 數據集上的實驗結果如圖2 所示,所以最終選定最佳的epochs 值為30。

圖2 PKU數據集下不同epochs 下的F1 值
實驗設置了兩個縱向對比實驗和一個橫向對比實驗。縱向對比實驗是針對字的上下文大小對該字的標簽分類有何影響而進行。橫向對比實驗是考慮在相同參數數量的情況下,池化與不池化對分類結果的影響如何。
在上下文大小對字標簽分類影響的實驗中,分別設置上下文長度為1、2、3 來進行實驗。即一個字的前后各1、2、3 個字分別組成3、5、7 窗口大小的字序列,由它們的字向量分別組成3×120、5×120、7×120 維矩陣作為三個實驗的輸入數據。并且,分別設置了4-標簽集和2-標簽集作為對比,以評估模型在標簽數量不同時的表現。實驗結果如表6、表7 所示(為增加區分度,保留小數點后四位,加粗表示該列最大值)。
從實驗結果可以看出,模型在兩個數據集上表現較為一致,具有良好的穩定性。在多上下文單字的情況下,模型對字的標簽判別更加準確。并且,字標簽的類別越少,分詞效果越好。
作為參考,表8 列出由文獻[21]所統計的近兩年基于深度學習方法的分詞模型與本文模型的F1 值對比結果,這里所有模型使用的是相同的數據集(Bakeoff-2005)。從結果中可以看出,本文模型有著很好的表現。
另外,針對池化層對模型的影響如何這一問題,選擇在前一個實驗中表現最優的條件來進行池化與不池化的對比實驗。具體的,使用BE標簽集標注法、上下文字窗口大小為7(即context-3,前后各3 個字)來分別對PKU 數據集和MSR 數據集進行實驗。實驗結果如表9所示。對于池化的方法,采用三種池化的方法,分別為最大值池化(max pooling)、平均值池化(average pooling)、k-max 池化(k-max pooling)。池化操作類似于卷積,不過池化只是用池化核對感受野范圍內的元素進行篩選。最大值池化是選擇感受野內最大的特征值,平均值池化是對感受野內的特征取平均值,k-max池化是最大值池化的擴展,用于選取感受野內數值最大的k 個特征。考慮到網絡中模型參數數量對模型擬合程度的影響,在添加了池化層以后,網絡相對地會減少一些特征,從而減少模型參數的數量。因此,在池化實驗中適當增加了卷積的通道數和隱藏層單元數量以增強模型對學習任務的擬合程度。

表6 不同上下文大小使用BMES標簽集的實驗結果

表7 不同上下文大小使用BE標簽集的實驗結果

表9 不同池化方法使用BE標簽集的實驗結果

表8 不同模型的F1 值對比
實驗結果表明,最大值池化和平均值池化對模型性能的表現比較相似,并且比較差。k-max池化由于是保留了更多的特征,因而表現相對于最大值和平均值池化要好一些,但仍不如無池化層的模型表現。這也驗證了前面的假設。
至于移除池化層對模型的時間復雜度影響,本實驗測試的結果是有池化層(任意一種池化方式)的模型訓練時間是無池化層的模型訓練時間的4 倍左右。也就是說,移除池化層的做法不僅給模型帶來準確率的提升,也加快了模型的訓練速度。
本文在卷積神經網絡的基礎上,提出一種無池化的卷積神經網絡分詞模型PCNN。該模型可以高效地在訓練中學習字向量維度之間的特征關聯信息,準確地標識出單字的標簽類別,從而完成分詞任務。該模型準確率高,穩定性好,具有良好的適應性。這是在中文分詞領域的一次新的嘗試,通過學習字向量特征之間的關系信息來識別字與字之間潛在的“分隔”,從而準確地標識出字的標簽類別。并且,實驗結果也驗證了本文的觀點。根據由不同領域的文本數據訓練的字向量的不同,該模型也適應各種領域內的中文分詞任務。由于實驗條件有限,沒有進行更多的模型測試,模型還有很大的改進空間,有待于后續的研究。