彭玉青,宋初柏,閆 倩,趙曉松,魏 銘
(河北工業大學 人工智能與數據科學學院,天津 300401)
隨著互聯網技術和移動社交網絡平臺的發展,網絡中的文本信息量呈爆發式增長,鑒于網絡平臺實時性較強的特點,這些文本信息雖然具有極大的潛在價值,但是在網絡中以雜亂的形式存在,缺乏有效的信息組織和管理。而文本分類作為組織和管理文本信息的有效方法,能夠解決信息雜亂問題,且在信息分揀、個性化新聞推薦、垃圾郵件過濾、用戶意圖分析等領域得到了廣泛應用,也受到越來越多研究者的關注。
目前,常用的文本分類方法有樸素貝葉斯、K最近鄰(K-Nearest Neighbor,KNN)、隱馬爾科夫模型(Hidden Markov Model,HMM)、支持向量機(Support Vector Machine,SVM)等。在這些方法中,有些需要人工提取特征,有些由于隨機向量的分量無關性,會引起主題之間不相關的問題。針對這些不足,越來越多的學者將神經網絡應用到文本分類領域[1],目前常用于文本分類的神經網絡結構包括BP神經網絡、卷積神經網絡(Convolution Neural Network,CNN)、循環神經網絡(Recurrent Neural Network,RNN)等。
本文建立一種超深卷積神經網絡(Very Deep Convolution Neural Network,VDCNN)和長短期記憶網絡(Long Short-Term Memory network,LSTM)混合模型,使用詞嵌入(Word Embedding)將文本轉換為低維度向量,以提升對詞向量化后的文本進行分類的精確率,然后通過實驗驗證該模型的分類效果。
為提高當前文本分類方法的準確率,很多學者進行了研究。文獻[2]提出一種基于文本加權的KNN算法,其利用文本加權提升KNN算法對文本進行分類時的準確率。文獻[3]使用基于LSTM和門閥遞歸單元(Gated Recurrent Unit,GRU)計算節點的雙向遞歸神經網絡來提取文本特征,然后使用Softmax對文本特征進行分類。文獻[4]提出一種結合卷積神經網絡和KNN算法的分類方法,其能夠有效提高短文本分類的效果。文獻[5]提出一種基于事件卷積特征的文本分類方法,其利用事件的語義特性彌補已有模型的不足。文獻[6]在LSTM模型中引入一種注意力機制,解決了特征向量在提取過程中信息丟失和信息冗余的問題。
雖然上述改進的文本分類方法取得了較好的結果,但是與目前應用于圖像處理和語音識別領域的優秀網絡相比,模型的深度仍然較淺,分類的效果和準確率也較低,同時由于在自然語言中存在著上下文依賴的非連續關系,在傳統神經網絡結構中,卷積核大小難以確定的問題仍然沒有得到解決。
針對上述方法存在的缺陷,受文獻[7-8]在圖像處理領域中提出的VDCNN的結構啟發,以及LSTM作為循環神經網絡的一種特殊類型,能夠長期記住前文的有效信息并有效利用文本前后具有關聯關系的特點,本文建立一種VDCNN和LSTM相結合的混合模型,然后通過實驗驗證該混合網絡結構模型在文本分類上的效果。
如果將文本按照字面順序以直接編碼的方式轉換為向量,會導致向量維度過高,同時也忽視了自然語言前后詞句之間具有依存關系的特點。為解決該問題,并讓LSTM網絡能夠更好地利用自然語言中的上下文關系,本文將詞嵌入與混合模型相結合,將文本轉換為低維度向量,并且文本中前后文的近義詞在轉化為低維度向量后其在向量空間中也是相鄰的,從而將上下文中的近義詞進行聚合。
在自然語言處理中,一般將每個詞作為基本單元進行向量表示。對詞典D中的任意詞w,指定一個固定長度的實值向量v(w)∈Rm,v(w)稱為w的詞向量,m為詞向量的長度。
一種簡單的詞向量表示為獨熱表示,它通過一個很長的向量來表示一個詞,詞典D的大小N為向量的長度,向量的分量只有一個1,其他全為0,1的位置對應詞在詞典中的索引。由于深度學習領域存在海量數據,這種詞向量會帶來維度過高的問題。
為解決獨熱表示維度過高的問題并使向量能夠刻畫詞與詞之間的聯系,本文使用分布表示進行詞向量的表達。通過訓練將文本中的每個詞映射成一個長度固定且較短的向量,所有這些向量構成一個向量空間,每個向量之間的距離表示該向量所代表詞之間的相似性。
Skip-gram模型包含3層:輸入層,投影層和輸出層,其示意圖如圖1所示。

圖1 Skip-gram模型
Skip-gram模型是一種利用某個詞預測其周圍詞的概率的模型,即已知中間詞wt,推導出周圍2n個詞wt-n,wt-n+1,…,wt-1+n,wt+n屬于詞典中某一個詞的概率。wt周圍詞語的集合wt-n,wt-n+1,…,wt-1+n,wt+n表示wt的上下文語境,記為Context(w)。
該模型可以計算出周圍詞ci基于中間詞wt的條件概率,定義為:
P(ci|wt)
(1)
其中,ci∈Context(w)。
對于某條語句S,利用Skip-gram模型可以計算出語句S為自然語言的概率,公式為:
(2)
其中,P(S)表示句子S為自然語言的概率,w為語句S中的詞。模型的訓練目標就是使得P(S)的概率值得到最大化。
對于輸入的文本T,可以得到文本的概率表示公式為:
(3)
為求其最大的條件概率,令Skip-gram的似然函數為:
(4)
其中,θ為待估參數。模型的求解目標就是求目標函數的最大值,故將似然函數轉換成底數似然函數:
(5)
其中,V表示詞典大小。
本文利用jieba分詞和Word2Vec工具,使用Skip-gram模型對文本訓練后即可得到詞向量,這些向量是低維度的,且近義詞的向量在向量空間中是相鄰的。
為提高中文文本分類的準確率,本文建立一種結合VDCNN與LSTM的混合模型并用于文本分類。該模型結構如圖2所示。其中,FC(I,O)表示輸入長度為I、輸出長度為O的全連接層。

圖2 VDCNN與LSTM混合模型
在圖2中,詞嵌入層(Embedding Layer)與10層卷積層(Conv)以及3層全連接層(FC)組成VDCNN網絡結構,共計14層,同時將LSTM以融合的形式和VDCNN網絡結構組成混合模型。
由于網絡結構模型層數較深,為優化其對內存的占用,結合VGG以及ResNets模型[9],在定義VDCNN模型結構時設置如下2條規則:
1)如果卷積之后輸出的向量不變,則卷積核數目和特征圖像的大小保持不變。
2)如果輸出向量減半,則卷積核數目和特征圖像的大小增加一倍。
針對規則2),在VGG和ResNets模型中,深度的增加可以有效提升其分類的效果。但是由于深度增加,使其對內存的需求大幅提升,同時根據卷積神經網絡的設計準則,在卷積過程中要保證卷積的空間尺寸和卷積數據量緩慢變小,因此,在本文所提出的混合模型中,會對輸出向量進行減半。但是,如果只對輸出向量進行減半,卷積核數目和特征圖像的大小不變,這違背了使卷積的空間尺寸和卷積數據量緩慢變小的設計準則,勢必會導致在卷積過程中損失大量卷積信息。因此,為在減輕內存壓力的同時保證網絡結構的容納能力,避免損失過量信息,本文模型在對輸出向量減半時,設置卷積核數目和特征圖像的大小增加一倍。
該混合模型共計14層,第1層為詞嵌入層,將輸入的文本序列展開成詞向量的序列并作為卷積層的輸入,詞嵌入層之后的VDCNN網絡結構為:
1)第1個和第2個卷積層設置為64個大小為3的卷積核。
2)對卷積結果進行池化操作,并連接2個卷積層,設置其卷積核大小為3、數量為128個。
3)進行3次池化,每次池化操作連接2個卷積層。
4)再次進行池化操作,連接3個全連接層得出分類結果。
由圖2可知,VDCNN與LSTM混合模型包括5次池化操作,前3次對輸出進行平均值池化,后2次采用最大值池化操作。這里把模型中每2次池化操作之間的卷積層稱為一個卷積塊。在VDCNN網絡結構中,第2個卷積塊的詳細結構如圖3所示。

圖3 VDCNN網絡結構中的第2個卷積塊
該混合模型為了防止過擬合現象,降低特征的維數并優化內存占用,在每次平均值池化操作時將下采樣因子(strides)設置為2,對輸出向量減半,根據前文2條規則,每個卷積塊的卷積核數目和特征圖像的大小也由64分別變為128、256和512,而在第4個、第5個卷積塊之后進行k-max下采樣策略,每次對采樣區選取k個局部最優特征值,舍棄冗余特征,同時能夠保證生成固定維度的特征向量。在進行最后一次最大值池化操作后,設置3個全連接層。最后,再通過Softmax函數得到分類結果。在本文Softmax回歸中,將x分類為類別j的概率為:
(6)
在網絡結構模型層數較多的情況下,為加快收斂速度,降低學習周期,在VDCNN卷積層和全連接層設置激活函數ReLU[10],其公式如下:
F(x)=max(0,x)
(7)
在VDCNN中,由于引入了批標準化[11]操作和捷徑連接,可以解決傳統卷積神經網絡隨著深度增加導致準確率下降的問題,而且正是由于VDCNN網絡深度的增加,有效提高了它對文本特征的提取能力,因此,VDCNN在圖像處理和語音識別領域具有很好的效果。但是,由于自然語言具有倒裝、前置等表達手法,導致當前文本可能與前文有很強的上下文依賴關系,在文本訓練的過程中,可能需要之前的某些歷史信息,而VDCNN并不具有這種保留歷史信息的能力。鑒于自然語言的這種特點以及VDCNN在這方面的不足,本文將LSTM與VDCNN進行結合以組成混合模型。
LSTM是循環神經網絡的一種特殊形式,由于傳統RNN展開后相當于多層的前饋神經網絡,RNN保存的歷史數據量越大,其層數會越多[12]。當訓練大量文本時,就會引起梯度消失(爆炸)和歷史信息損失的問題,因此,傳統的RNN能夠保留的歷史信息數量非常有限,而LSTM單元結構能夠解決RNN的梯度消失問題。LSTM單元結構如圖4所示。

圖4 LSTM單元結構
LSTM通過設計專門的記憶單元用于保存之前的歷史信息,達到長期“記住”信息的目的。這些歷史信息的更新和刪除受三個門控制,分別為輸入門、輸出門和遺忘門。
輸入門用來控制當前節層單元狀態的輸入,輸出門用來控制當前LSTM單元的輸出,遺忘門用來控制上一時刻單元中存儲的歷史信息。記t時刻輸入門、輸出門和遺忘門分別為it、ot、ft,則該神經元的狀態更新計算方法可以表示為:
it=σ(Wi[ht-1,xt]+bi)
(8)
ot=σ(Wo[ht-1,xt]+bo)
(9)
ft=σ(Wf[ht-1,xt]+bf)
(10)
其中,σ表示Sigmoid函數,Wi、Wo、Wf分別表示輸入門、輸出門和遺忘門的權重矩陣,bi、bo、bf分別表示各個門所對應的偏置。
在圖4中,遺忘門與輸入門又共同構成了更新門[13],用ct表示,其計算公式為:
ct=ft?ct-1+it?tanh(Wc[ht-1,xt]+bc)
(11)
其中,ct-1表示上一個時刻c的值,Wc表示更新門的權重矩陣,bc表示更新門的偏置。
設ht為該LSTM單元的最終輸出,其計算公式為:
ht=ot?tanh(ct)
(12)
由上面的分析可以得出,3個門并不提供額外的信息,只是起到限制信息量的作用,同時保證每個LSTM隱藏單元記住歷史信息,這能夠彌補RNN網絡的不足。同時,3個門起到的只是過濾的作用,故激活函數使用Sigmoid。VDCNN超深的層數能夠有效提取文本向量的特征,LSTM的記憶單元針對自然語言前后依賴的特點,在訓練過程中保留了歷史信息,彌補了VDCNN的不足。因此,將VDCNN與LSTM組建為混合模型進行文本分類,可以有效提升分類效果。
在圖2中,全連接層FC(4 096,2 048)之前,本文使用Keras框架中的Merge融合層對VDCNN和LSTM進行融合。Merge層能夠提供一系列用于融合2個層或2個模型的方法,其代碼示例如下:
merged = Merge([model_left,model_right],mode=′concat′)
其中,concat將待合并層輸出沿著最后一個維度進行拼接,因此,其要求待合并層輸出只有最后一個維度不同。該方法的輸出結果為返回一個與層結構相同的對象,即上述代碼中的merged,它可以被當做普通層的輸出進行使用。最后連接3個全連接層,利用Softmax輸出分類結果,至此,VDCNN與LSTM完成融合,組成如圖2所示的混合模型。
4.1.1 訓練詞向量的語料集
對于知識挖據領域,一般使用知識庫語料訓練得出詞向量,但是對于文本分類領域,為能夠對文本進行更好的分類,需要使用比較現代、能夠反映出近期網絡熱點內容、具有較廣覆蓋面的文章。本文使用具有多領域的微信公眾號文章,該語料集屬于中文平衡語料,共計800萬篇,總詞數達到650億,使用其進行訓練可以得出高質量的詞向量。
4.1.2 文本分類語料庫
本文使用Sogou語料庫與復旦大學文本分類語料庫進行文本分類,以測試本文所提出的VDCNN與LSTM混合模型的分類效果。
Sogou語料庫是搜狗實驗室(Sogou Lab)提供的全網新聞數據,該數據集來自2012年6月—7月期間新浪、網易、騰訊以及鳳凰資訊等若干個新聞站點,有國內、國際、體育、社會、娛樂等18個頻道的新聞數據,提供URL和正文信息。
由于該數據集為XML格式,實驗之前需要利用腳本將XML中新聞標題與新聞內容這兩部分的數據解析到相應的類別中,在處理過程中,每一篇文章另存為一個txt文件,txt里為新聞標題和新聞內容,然后再對每篇文本進行分詞處理,分詞工具為jieba分詞。處理完成后該數據集大小為1.43 G,使用處理完成后的數據集作為文本分類的訓練和測試語料。由于完整的實驗數據量過于龐大且受實驗設備的限制,本文從中選取了12個類別,每個類別隨機抽取全部數據的一部分進行實驗。在實驗中,Sogou語料庫文本類別與數量分布如表1所示,其中,90%作為訓練集,10%作為測試集。

表1 Sogou語料庫文本類別與數量
復旦大學文本分類語料庫由該校李榮路老師整理并提供,分為20個類別,共包括9 000多個文檔。其類別與文本數量分布如表2所示。

表2 復旦大學語料庫文本類別與數量
由于法律、礦產等類別文本數量過少,在本次實驗過程中刪除了文本數量低于100的類別和文本。
4.2.1 詞向量預訓練
本次實驗使用Gensim的Word2Vec進行詞向量預訓練,訓練語料為上節所述的微信公眾號文章。分詞工具為jieba分詞,jieba分詞工具在分詞過程中加入了50萬詞條的詞典并且關閉了新詞發現,該詞典由網絡上多個詞典拼湊而成,并刪除了不合理詞匯。訓練模型為本文第2節所述的Skip-gram,模型的詞數共計352 196,基本為中文詞,也包含基本的常見英文詞,設置向量的維度為256,訓練窗口大小為10,最小詞頻為64,共迭代10次,用時共計7 d,最后得出高質量的詞向量。
4.2.2 模型構建環境
本次實驗中的模型在Keras下進行搭建,Keras是一個高層神經網絡應用程序接口(Application Program Interface,API),其由純Python編寫而成并基于TensorFlow、Theano以及CNTK后端實現。在圖2中的混合模型中,可以將網絡層、激活函數、損失函數以及訓練過程中設定的優化器等看作一個個獨立的模塊,使用Keras的API即可構建圖2中的模型。
4.2.3 實驗環境與參數設置
本次實驗的環境如表3所示,實驗設置迭代次數為30。

表3 實驗環境
實驗設置損失函數為categorical crossentropy。為解決在學習過程中過早結束的問題,優化器設置為RMSProp,其通過引入一個衰減系數,使得每回合的衰減具有一定的比例,其參數更新規則如式(13)、式(14)所示:
Et(g2)=0.9Et-1(g2)+0.1g(θt)⊙g(θt)
(13)
(14)
其中,t=0,1,…表示迭代次數,g2表示梯度平方的向量,其每個元素為對應參數的梯度平方,取可調參數為0.9,⊙為元素乘積操作符,表示2個矩陣或向量對應位置的元素相乘,diag(v)是根據向量v生成對角矩陣的函數,d是非常小的整數,通常取值為10-8,I是單位矩陣。
4.2.4 實驗評價標準
為評價本文提出的混合模型對文本分類的效果,采用文本分類領域中常用的度量標準——精確率來對模型進行檢驗。根據分類結果建立的混合矩陣如表4所示。

表4 分類結果混合矩陣
精確率是指正確分類的文本數與總文本數之比。一般進行分類性能評價時把精確率作為主要度量指標,其計算公式如下:
(15)
4.3.1 VDCNN與其他CNN類模型對比
在本次實驗中,將本文提出的具有14層的VDCNN模型與其他CNN類模型進行文本分類效果對比,在表5中,模型使用的實驗語料集均是Sogou語料庫。其中,ConvNet(event)與ConvNet(event+bigram+trigram)都是改進的卷積神經網絡[5],ConvNet(event)使用文本中的事件特征進行卷積,而ConvNet(event+bigram+trigram)在使用事件特征的同時,還利用二、三元詞組信息進行卷積。這2種方式明確了特征提取時的特征出處,但是也易忽略同一文本中的其他特征信息,只專注于事件特征。文獻[14]中的Lg.w2v Conv和Sm.w2v Conv都是對中文文本進行字符級的卷積操作,其中,w2v表示Word2Vec,Lg表示large,Sm表示small,這2種方式通過對中文進行字符級別的卷積操作進行特征提取,能有效提高分類的精確率,但是其結構和文獻[5]一樣,深度較淺。

表5 VDCNN與其他CNN類模型分類效果對比 %
VDCNN模型與應用于圖像處理和語音識別領域的卷積神經網絡類似,提高了卷積網絡結構的深度(14層),并設置卷積核大小為3。但是,僅增加網絡深度會導致梯度消失和準確性下降,于是本文在VDCNN中引入了捷徑連接和批標準化以解決該問題。最終,VDCNN網絡利用其深度優勢和小的卷積核對文本中的特征進行有效提取,相對于其他方法,其能夠有效提高分類精確率。
4.3.2 VDCNN與LSTM混合對文本分類的影響
在本次實驗中,分別使用VDCNN模型、LSTM模型以及VDCNN和LSTM混合模型對Sogou語料庫進行分類,分類效果對比如表6所示。從表6可以看出,將VDCNN與LSTM進行混合后其分類效果要優于單一的VDCNN模型和LSTM模型,這是因為在VDCNN對文本所對應的詞向量進行卷積操作的過程中,忽略了一篇文章中的上下文依賴關系,而單一的LSTM模型雖然能夠利用模型中的門對信息進行保存和控制,提升對上下文信息的利用,但是其層數沒有VDCNN模型深,對詞向量進行特征提取的能力不足。因此,將深層數、小卷積核的VDCNN模型和具有能夠保存上下文信息的LSTM模型進行結合之后,能夠使精確率得到提升。

表6 3種模型分類效果對比 %
4.3.3 本文混合模型和其他分類模型效果對比
在本次實驗中,分別使用VDCNN與LSTM混合模型和其他分類模型對Sogou語料庫和復旦大學語料庫進行分類效果對比,結果分別如表7和表8所示。由表7和表8可以看出,對比模型中有些增加了注意力機制,有些在某種模型輸入之前利用某種分布進行輸入隨機初始化,但是,這些方式只是在單一方面進行改進,對于分類效果的提升有限,而使用VDCNN與LSTM混合模型后,既利用了VDCNN超深度卷積的優勢,同時也結合了LSTM模型具有保存上下文信息的優點,兩者融合能夠顯著提高文本分類的精確率。在Sogou語料庫中,文獻[15]中的CLKNN模型的精確率達到96.50%,在復旦大學語料庫中,LSTM模型的精確率達到91.30%,而VDCNN與LSTM混合模型在Sogou語料庫和復旦大學語料庫中的精確率分別達到了98.96%和93.10%,其精確率得到了明顯提升。

表7 不同模型在Sogou語料庫中的分類效果對比 %

表8 不同模型在復旦大學語料庫中的分類效果對比 %
本文利用詞嵌入將文本轉換為低維度的向量,且保證前后文中近義詞的向量在向量空間中相鄰,然后將VDCNN與LSTM相結合組成混合模型,以對詞向量化后的文本進行分類。該混合模型既利用VDCNN超深度卷積的優勢,同時也結合LSTM模型具有保存上下文信息的優點,使得其在特征提取過程中能有效提高文本分類的準確率。但本文提出的VDCNN與LSTM混合模型更注重對整篇文本進行操作,在實際文本中,根據文章的某一個中心段落或者某些關鍵詞就可以得出文本的類別,因此,今后考慮將關鍵詞或者注意力機制引入到本文混合模型中,以進一步提升該模型的文本分類效率和精確率。