王海濤,宋 文,王 輝
(河南理工大學計算機科學與技術學院,河南焦作454000)
隨著網絡技術水平的不斷提高,互聯網已經發展成為當今世界上最大的信息資源庫.作為全球信息傳播的主要途徑,互聯網承載的網絡文本信息呈現出爆炸式增長的特點,面對這些數據量龐大且雜亂無章的文本信息,如何有效的篩選和分類,進而提取其中有價值的信息是當前數據挖掘領域研究的熱點問題.
文本分類是自然語言處理(NLP)領域重要的研究課題之一[1].它能夠將復雜的文本信息有效的組織和管理,并且已經廣泛應用于網頁檢索、垃圾郵件過濾、情感分析[2,3]等不同領域,受到研究者廣泛的關注.目前,常用的文本分類方法包括兩類:一類是基于傳統機器學習的方法,例如支持向量機(Support Vector Machine,SVM)、樸素貝葉斯、決策樹、K 最近鄰(K-Nearest Neighbor,KNN)等,這些方法的文本表示通常為高維度且稀疏的向量,其特征表達能力較弱,需要人工進行特征工程[4],在處理海量數據和語料庫時會帶來較高的代價.第二類則是基于深度神經網絡的文本分類方法,其一般采用卷積神經網絡、循環神經網絡(Recurrent Neural Network,RNN)以及改進其結構的長短時記憶網絡等模型進行文本分類.深度學習最初應用在圖像處理和語音識別等方向并取得顯著效果,很重要的原因是圖像和語音的原始數據是連續稠密的,有局部相關性.文本分類中的關鍵問題在于文本表示,在傳統機器學習中通常以特征表示的形式出現,其最常用的特征表示方法是詞袋模型[5],但這種方法不能涵蓋詞語間的關聯關系,同時也忽略了詞序.不同于傳統的機器學習,深度學習使用分布式表示[6]將文本訓練為低維稠密的向量,再利用CNN 和LSTM 等網絡結構自動獲取特征表達能力,去掉繁復的人工特征工程,高效的解決問題.
本文提出一種基于LSTM 和CNN 的文本分類模型MLCNN,并將詞嵌入后的文本融合到各個卷積層的輸出中,加強了原始特征的傳遞,通過實驗證明,本文模型具有較好的分類效果.
近年來,國內外有很多學者針對如何提高文本分類的準確率進行研究.邱寧佳等人[7]提出一種結合改進主動學習的SVD-CNN 彈幕文本分類算法模型,用以緩解傳統CNN 模型使用池化層進行文本特征降維會損失較多文本語義信息的問題.Wu 等人[8]針對傳統基于 TF-IDF 的 SVM 算法存在高維度稀疏數據和計算時間長等問題提出了一種結合CNN 和SVM 的文本分類算法(CSVM).首先,為輸入語言構造一個m 大小的詞匯表,使用1-of-m 編碼對每個詞匯進行量化,其次,利用CNN 從每個向量化的詞匯中提取特征表達,通過大規模訓練得到每個詞向量的語義特征,最后使用SVM 作為分類器進行分類.
梁軍等人[9]提出一種基于極性轉移和LSTM 的情感分類模型,首先,為了捕獲更深層次的語義信息,將LSTM 擴展到基于樹形結構的遞歸神經網絡上,其次,通過詞語前后間的關聯性引入了極性轉移模型.Lu 等[10]結合LSTM 在情感分類中顯著的分類性能,提出用于情感分類的P-LSTM 模型,其使用三字短語作為輸入進行向量化,此外P-LSTM 引入短語因子機制,結合嵌入層和LSTM 隱藏層的特征向量,使從文本中提取的信息更加準確.
上述研究工作大多是對單一神經網絡的改進,或利用傳統機器學習方法與單層神經網絡進行結合,雖然取得不錯的效果,但研究表明,深層神經網絡在提取文本特征上有著更好的效果.
隨著多種神經網絡的混合使用在語音識別和計算機視覺等領域的盛行,CNN 和LSTM 等模型結合運用在自然語言處理領域的研究也逐漸增多.Zhang 等人[11]結合CNN 及LSTM這兩種不同深度學習模型的優點,提出一種新穎的文本分類模型CNN-LSTM.CNN-LSTM 利用CNN 提取較高層次的單詞表示序列,并將其輸入LSTM 中得到句子表示.它既能夠捕獲文本的局部特征,又能獲取句子的時態語義,在情感分類任務中表現良好.針對中文文本分類問題,Li 等人[12]提出一種結合雙向LSTM 和CNN 自動獲取單詞和字符級特征的模型,首先使用雙向LSTM 捕獲每一時刻的歷史和未來信息,之后通過CNN 提取特征進行分類.
但神經網絡深度的增加,也帶來很多問題.模型訓練越來越困難,且時間復雜度也比傳統機器學習方法要高的多,學習周期增加,收斂速度變慢,出現梯度消失問題,影響分類結果等.網絡層數的提高會逐漸損失輸入的原始特征,造成分類模型效果的下降.為緩解上述問題,受 Huang 等人[13]提出的DenSeNet 模型理論的啟發,并結合LSTM 和CNN 的優點,本文建立了基于LSTM 與CNN 的文本分類模型MLCNN,使用詞嵌入將輸入文本表示成低維向量,利用LSTM 與CNN 分別對詞向量進行處理,在提取局部特征的同時兼顧上下文語義,并將原始輸入融合到各個卷積層的輸出中,實現原始特征的重用,最后使用softmax 作為分類函數獲取分類結果.
本文剩余章節安排如下:第3 節給出MLCNN 模型的詳細描述;第4 節展示實驗結果及相關參數;第5 節為本文的總結,并對后續研究進行展望.
長短時記憶網絡和卷積神經網絡在文本分類任務上都體現出各自的優越性,為提高分類效果,借鑒兩者特點,并考慮到增加網絡層數帶來的特征丟失問題,本文提出了混合模型MLCNN.其主要由以下五部分組成:
1)采用詞嵌入進行文本表示;2)通過LSTM 獲取上下文關聯語義;3)利用CNN 進行文本特征提取;4)通過融合輸入向量實現原始特征重用;5)使用Softmax 函數獲取分類結果.
MLCNN 模型的結構如圖1 所示,圖中箭頭表示特征向量的傳遞.

圖1 MLCNN 模型Fig.1 MLCNN model
在自然語言處理任務中,通常使用單詞或短語作為基本單元,并將其用固定長度的實數向量表示,這種方法稱為詞嵌入(Word Embedding)或詞向量.獨熱編碼(One-Hot Encoding)是表示單詞常用的另一種方法,該方法首先創建一個詞匯表,每個單詞按順序編號并表示為一個很長的向量,該向量的維度為詞匯表的大小.向量的組成只有一個維度的值為1,其余都是0.1 的位置對應當前詞在詞匯表中的索引.當單詞或短語用獨熱編碼表示時,詞與詞以及句法之間的關聯就不能被表示出來.此外,在深度學習中使用獨熱編碼容易導致許多問題,例如詞向量的高維而導致的維度災難.
為了避免上述問題的出現,本文采用詞嵌入將單詞表示為類似語音、圖像中連續稠密的實數向量,這些詞向量包含更豐富的語義信息,讓MLCNN 模型可對更復雜的上下文建模.當文本中的單詞由詞向量表示時,每個單詞都被隨機初始化為一個固定長度的向量,此時,文本中的第t 個單詞就被表示為 xt∈Rn,n 為詞向量的維度.當文本長度為 T 時,輸入文本被表示為:

因為詞向量是隨機初始化的,所以只要神經網絡模型在實驗中被訓練,就必須更新詞向量.
循環神經網絡(RNN)是一種廣泛用于處理可變長序列的神經網絡,但由于典型的RNN 相當于多層前反饋神經網絡,長序列帶來的大量歷史信息會導致傳輸中的梯度消失和梯度爆炸問題.長短時記憶網絡(LSTM)是一種改進的基于RNN 的網絡結構,其通過增加存儲單元、輸入門、遺忘門和輸出門來有效的保存長序列的歷史信息,改善了由于RNN 訓練層數較多而導致的信息丟失問題.

圖2 LSTM 單元結構Fig.2 Structure of LSTM cell
LSTM 的結構如圖2 所示.其中,存儲單元Ct用來存儲當前時刻歷史信息.輸入門it決定當前時刻輸入向量對存儲單元中信息的改變量.遺忘門ft決定上一時刻歷史信息對當前存儲單元中信息的影響程度.輸出門ot用以控制當前存儲單元中信息的輸出量.當輸入的詞向量矩陣為時X=[x1,x2,…,xT]時,xt為 n 為維詞向量,則 LSTM 的更新公式為:

ht為LSTM 單元的最終輸出,σ(·)為 Sigmoid 激活函數,tanh(·)為雙曲正切函數,Wi、Wo、Wf依次為輸入門、輸出門和遺忘門的權重矩陣,bi、bo、bf分別為三個控制門的偏置項.總之,LSTM 根據三個門控單元對信息進行過濾,并通過線性自連接的存儲單元累積信息,將其作為中間產物以求出當前時刻隱藏層的輸出.
MLCNN 模型使用LSTM 和CNN 兩種具有不同特點的神經網絡分別對輸入文本進行處理.由于自然語言包含很多語法和語義,會導致前后文本間可能存在復雜的上下文依賴關系,為了獲取上下文關聯語義,在訓練文本時可能會需要某些歷史信息.相對于單獨使用CNN 進行文本分類,并行加入LSTM 可以彌補CNN 在保留和控制歷史信息能力上的不足,進而提高分類準確率.
卷積神經網絡(CNN)是深度學習中提取數據特征的主要方法,其一般由六層構成:其中,輸入層將文本中詞語對應的詞向量自上而下的排列成矩陣;卷積層使用卷積核對文本數據進行特征提取和特征映射;激勵層是為線性的卷積運算增加非線性映射;池化層分為最大池化和平均池化,其對特征向量進行下采樣和稀疏處理以減少數據運算量;全連接層通常是將池化后的特征重新擬合,減少特征信息的損失;輸出層用于輸出結果.
CNN 的主要思想為局部連接和參數共享,卷積層是CNN 的核心,其通過對單詞進行卷積運算來得到更高級的特征表示,每個卷積核與輸入特征的不同局部窗口進行卷積操作,將運算得到的特征向量經過非線性激活函數f 處理后便產生本層要輸出的特征,公式如下:

其中,W 為卷積核,X∈RT×n為輸入的詞向量矩陣,參數 b 為偏置項.常用的非線性激活函數有Sigmoid 或ReLU 等.
為了加快模型收斂速度,降低其學習周期,相比于Sigmoid 等激活函數,采用ReLU 會明顯減少整個學習過程中的計算量.ReLU 的公式如下:

x 為上一層神經網絡的輸出向量.ReLU 函數將輸入的負值變為0,而正值不變,通過這種操作使神經網絡具有稀疏性,減少了參數間依存關系,緩解過擬合問題.
MLCNN 使用三層CNN 作為文本特征提取的主要方法,其比單層CNN 在文本特征提取上的能力更加突出.
考慮到增加神經網絡層數雖然有助于提高分類效果,卻帶來網絡中層與層間特征傳遞時出現的特征丟失問題.本文將經過詞嵌入處理的輸入向量通過拼接(Concat)操作與每層CNN 的輸出向量進行融合,實現對原始特征的重用,減少神經網絡中層與層間特征傳遞時出現的特征丟失問題.
圖1 中,將輸入向量與每層CNN 的輸出向量進行Concat時,要求待合并向量的維度必須相同,此時,在CNN 的卷積層加入Padding,可使每層CNN 的輸入與輸出向量的維度保持一致.Padding 參數有兩種模式,分別為 SAME 和 VALID.當Padding 為 SAME 時,輸入和輸出向量的 size 關系如公式(9):

當Padding 為VALID 時,輸入和輸出向量的size 關系如公式(10):

在公式(9)和公式(10)中,λinput為輸入向量的 size,λoutput為輸出向量的 size,F 為卷積核的 size,S 為步長.將 Padding 的模式設置為SAME,即保持輸入向量和輸出向量的維度相同.
當輸入的詞向量矩陣 X1=[x1,x2,…,xT],xt∈Rn為文本中第 t 個單詞對應的 n 維詞向量,卷積核 W=[w0,…,wλ-1],λ 為卷積核中單詞的數量,經過如下運算:

得到第一層 CNN 的輸出矩陣可表示為O1=[o1,o2,…,oT].將原始特征矩陣 X1∈RT×n與 O1∈RT×n進行 Concat 操作,得到融合后的特征矩陣 X2=[o1,…,oT,x1,…,xT],即 Concat為一維數組上的橫向拼接過程,不涉及對特征矩陣間進行相加或相乘等數學運算,因此減緩了由復雜度導致訓練時間大幅增加的問題,降低了融合過程對模型訓練的影響.
將 X2=[o1,…,oT,x1,…,xT]作為第二層 CNN 的輸入矩陣,通過公式(11)進行卷積運算,得到第二層CNN 的輸出矩陣 O2=[o1,o2,…,ok],k 為詞向量的個數.將 O2∈Rk×n與原始特征矩陣 X1∈RT×n進行 Concat 得到 X3=[o1,…,ok,x1,…,xT],將其輸入至第三層 CNN,通過卷積操作輸出 O3∈Rj×n,j 為詞向量的個數.將第三層 CNN 的輸出矩陣 O3∈Rj×n與X1∈RT×n進行Concat 得到下一層網絡結構的輸入矩陣X4∈Rm×n,m 為詞向量的個數.
在卷積操作后,將提取到的特征傳遞給池化層(Max Pooling).池化層將特征表達進一步簡化,降低了特征向量的維度.圖1 中,將 X4∈Rm×n作為池化層的輸入矩陣進行 KMax 最大池化操作,K-Max 池化取出每個卷積核中K 個較大特征值,并保留這些特征值原始的先后順序,減少了特征數量,獲得最有價值的特征信息.
經過卷積和池化操作后,輸出的特征矩陣與通過公式(6)得到的LSTM 的輸出矩陣呈現不同的維度,使用融合層(Merge)對不同網絡結構輸出的詞向量矩陣進行運算,將兩類獨立進行特征學習的分支融合在一起,傳遞至全連接層(Fully connected).全連接層將其輸入特征重新擬合,降低了特征向量的維度.使用Dropout 防止過擬合,提高模型的泛化能力.最后,使用Softmax 函數輸出類別的概率分布,其將x分類為類別j 的概率如下:

基于LSTM 與CNN 的MLCNN 模型的文本分類算法描述如算法1 所示.


為了驗證MLCNN 模型在文本分類上的有效性,使用來自清華大學自然語言處理實驗室的中文文本分類數據集THUCNews 作為本文實驗數據,該數據集由新浪新聞RSS 訂閱頻道2005-2011 年間的歷史數據篩選生成,包含74 萬篇新聞文檔,被劃分為14 個新聞類別.從 THUCNews 選取時政、金融、教育、房地產、科技、體育、家居、時尚、娛樂、游戲10 個類別作為實驗數據,每個類別數據約6500 條,共有65000 個新聞文本,其中75%為訓練集,10%為驗證集,剩余15%為測試集.
實驗采用文本分類常用的評估標準:準確率、精確率、召回率及F1 值,對MLCNN 模型進行評估.首先引入混淆矩陣,結構如表1 所示.

表1 混淆矩陣Table 1 Confusion matrix
其中,矩陣的行表示分類前樣本的實際類別,矩陣的列表示分類后對樣本類別的預測情況.具體評估方法如下:
1)準確率(Acc)表征實際類別正確的樣本在總樣本中的比重,表達式為:

2)精確率(Pre)表示實際類別正確且預測類別正確的樣本在所有預測類別正確的樣本中所占的比重,表達式為:

3)召回率(Rec)表示實際類別正確且預測類別正確的樣本在所有實際類別正確的樣本中所占的比重,表達式為:

4)F1 值為精確率和召回率的加權調和平均值,表達式為:

本文使用預訓練的詞向量工具Word2Vec[14]作為MLCNN 模型的輸入.LSTM 的隱藏層大小為100,對LSTM 的三個門控單元使用激活函數Sigmoid,如公式(2)、公式(3)、公式(4)所示,對記憶單元和LSTM 的輸出使用公式(5)、公式(6)中的雙曲正切函數.3 層CNN 的卷積核大小均為3,其數量為100.從綜合效率的角度出發對CNN 的卷積層與全連接層統一采用非線性激活函數ReLU,對全連接層使用取值為0.5 的Dropout.訓練采用交叉熵損失函數與 adam 梯度下降優化算法,初始化學習率為0.001.所有實驗數據均采用3 次實驗結果的平均值.
實驗基于Google 開源深度學習框架 TensorFlow1.12.0,通過Python3 版本編程語言實現.運行環境為 Windows 8.1中文版64 位操作系統,CPU 型號為Intel 酷睿i5 4210M,運行內存為8GB.
4.4.1 性能分析
為了證明MLCNN 模型在文本分類上的有效性,通過設置訓練參數搭建模型環境,使用訓練集擬合模型,再使用測試集對模型的分類能力進行評估,得到的測試結果如圖3 所示.其中,橫坐標表示測試數據來自的不同類別,縱坐標則為MLCNN 在測試集上的性能指標:準確率Acc 和F1 值.

圖3 模型測試結果Fig.3 Model test results
由圖3 可知,MLCNN 模型在測試集的不同類別中都取得了不錯的分類效果,除了教育和時政這兩個類別,其余各類的Acc 和F1 值均超過了96%.究其原因,由于測試集為總數據中隨機選取,導致抽到教育和時政兩個類別的數據少于其余各類,從而影響模型分類結果;教育和時政類詞句相對更抽象復雜,致使Acc 及F1 值難以進一步提升.
4.4.2 對比實驗分析
為了進一步驗證MLCNN 模型的分類效果,在THUCNews 數據集上將MLCNN 分別與 CNN、LSTM 以及二者改進模型進行對比實驗分析,性能指標為測試集的分類準確率Acc、召回率 Rec 及 F1 值,對比結果如表2 所示.

表2 實驗結果對比Table 2 Comparison of experimental results
其中,行和列分別表示實驗對比的不同分類模型及評估模型分類效果常用的性能指標.CNN 與LSTM 分別為文獻[15]及文獻[16]中所提出的結構;文獻[8]中的 CSVM 與文獻[10]的 P-LSTM 分別是對標準 CNN 及 LSTM 模型的改進;文獻[11]中的 CNN-LSTM 與文獻[12]的 LSTM-CNN 為CNN 和LSTM 的組合結構,不同的是,在 CNN-LSTM 模型中,CNN 使用在 LSTM 層之前,將 CNN 的輸出矩陣作為LSTM 的輸入;而在 LSTM-CNN 中,LSTM 使用在前,將其輸出矩陣輸入至CNN 中進行文本特征的提取.
表2 中,雖然 CNN-LSTM 和 LSTM-CNN 模型都是將CNN 與LSTM 組合使用,但使用的前后順序不同,卻出現了分類效果上的差異.由表中對應性能數據可知,LSTM-CNN與CNN-LSTM 的分類效果較標準的CNN 與LSTM 模型而言都有明顯提升,但CNN-LSTM 較LSTM-CNN 的分類效果卻有所下降.通過分別對CNN 及LSTM 獲取文本特征的原理進行分析,發現CNN 通過卷積操作獲得的是文本的局部特征,而LSTM 旨在獲取文本序列的長期依賴特征,將CNN 的輸出作為輸入傳遞給LSTM 可能會對LSTM 獲取特征產生影響,進而影響了整個模型的分類效果.
由對比可知,本文提出的MLCNN 模型在文本分類上能夠得到較好的分類效果.在THUCNews 數據集上實驗結果顯示,相比于標準的CNN 以及對其分類器進行改進的CSVM模型,MLCNN 的準確率分別提高了 4.81%,2.12%;相較于LSTM 及其改進模型P-LSTM,MLCNN 的準確率分別提高了6.59%,4.40%;這說明 MLCNN 使用混合結構作為模型主體的效果顯著,對單一結構的某些方面進行改進雖然有助于提高分類效果,但提升有限.在與CNN-LSTM 模型的對比中,MLCNN 的準確率、召回率及 F1 值分別提高了 2.38%、3.22%和1.35%,這表明并列使用 CNN 及LSTM 模型比前后組合使用的效果要更好,更充分發揮出LSTM 在長文本序列中控制歷史信息的能力與CNN 從局部到全局獲取文本特征表達的優勢.通過對比LSTM-CNN 的性能數據也不難發現,MLCNN 的各項指標均有所提升,證明將原始輸入通過Concat 操作與CNN 輸出相融合的方式,加強了特征重用,有助于更好表達數據原始特征,提高分類效果.

圖4 不同數據量的性能對比Fig.4 Performance comparison of different data size
在訓練過程中加載預訓練(Pre-training)模型的準確率如圖4 所示.其中,橫坐標為訓練數據量,縱坐標為準確率.從圖中可明顯看出:雖然在數據量增加的情況下,7 種分類模型的準確率都呈逐漸上升趨勢,但MLCNN 模型的優勢在訓練數據量為200 時就開始體現.當訓練數據達到1200 時,MLCNN的準確率趨于穩定,在訓練數據量較少時獲得較高的準確率,且能夠快速收斂,表現出較好的分類能力.
本文提出一種針對文本分類任務的MLCNN 模型,該模型通過詞嵌入將文本轉換為低維詞向量,采用CNN 提取文本的局部特征,結合LSTM 保存文本序列中歷史信息的特點彌補CNN 在提取上下文關聯語義方面的不足.將原始輸入與各層CNN 的輸出進行融合,減少了原始特征損失,提高了文本分類的準確率.通過實驗結果對比進一步證明了本文模型的優勢.在下一階段的工作中,將嘗試引入文獻[17]中所提到的注意力機制(Attention)直觀的解釋各個句子和詞對分類類別的重要性,其次,通過適當增加網絡層數以應對更復雜的長文本分類問題,探究更好的深度學習模型,提高文本分類的準確率.