張 欣 翟正利 姚路遙
(青島理工大學信息與控制工程學院 青島 266000)
近十年來,互聯網上各種文本數據呈現出爆炸式的指數增長趨勢。隨著神經網絡技術在計算機領域中的不斷進步,其在圖像和語音方面的應用表現出了優異的性能。文本分類作為自然語言處理中的一個重要研究方向,它通過對一個文件或一段文本進行標記,以達到對文檔進行分類的目的。然而,文本的稀疏性和文本格式的不一致性限制了傳統機器學習在文本分類中的應用。
文獻[1]表明,與傳統的文本分類模型(如SVM、KNN等)相比,卷積神經網絡可以通過卷積濾波提取句子的局部特征,并捕捉局部相關性。因此,它在自然語言處理和計算機視覺方面具有良好的性能。作為另一種主流的文本分類框架,遞歸神經網絡(RNN)的優勢在于它可以處理文本中不同長度的序列,并捕獲上下文相關的信息。RNN 的缺點在于容易發生梯度爆炸或梯度消失的情況。長短時記憶(LSTM)作為RNN 的一個變型,由于門控制單元的存在,則避免了RNN的缺點。
傳統的詞特征提取方法,如Bag-of-words[2],最初應用于文本分類任務。Bag-of-words 只是把文本看作一組詞的集合,從而忽略了文本數據的語法,語序等信息。顯然,它不能最大程度地表達句子的特點。近年來,隨著深度學習的快速發展與應用,將詞語轉化為詞向量的預訓練詞嵌入方法給自然語言處理帶來了許多新的啟示。詞嵌入是詞語的一種向量表示,它將每個單詞都映射到一個向量空間中,每個單詞都有對應的向量。這種文本表示方法不僅緩解了數據稀疏的問題,而且可以表示出句子的語義信息。
Kim,Yoon[3]對卷積神經網絡做出了調整,提出了一種具有不同大小卷積核的TextCNN 模型,該模型可以較好地提取句子特征,能夠更好地捕捉文本的局部信息。Chen Q[4]提出了一種改進的LSTM 模型,它能更好地關聯上下文,達到自然語言推理的目的。結合Chunting Zhou[5]等提出了一種結合遞歸神經網絡與卷積神經網絡特用以捕捉文本特征與上下文關系。
綜上所述,CNN 能夠獲取數據中局部特征,但它的缺點是缺乏學習序列相關性的能力。與此不同的是,RNN 的優勢在于序列建模,但無法提取文本中的局部特征。為了充分結合這兩種模型的優點,本文提出了一種CNN 與LSTM 構成的一個混合模型,該模型具有CNN 特征提取能力與LSTM 捕捉上下文信息的能力,將捕獲到的特征向量整合到一起,新獲得的特征兼具特征性與上下文信息,最終通過softmax層輸出結果。
CNN 被提出來后,主要應用于計算機視覺領域。可以說,CNN的出現使計算機視覺有了質的發展。近年來,CNN 由于能更好地獲取數據特征、構造和訓練更簡單、更快的優點,逐漸被應用于NLP領域。與計算機視覺領域的應用不同,NLP輸入通常是一個文檔或句子。文檔或句子需要嵌入。經過處理后,每個詞被表示為一個向量,文檔或句子將被表示為一個向量矩陣,作為CNN 的輸入傳輸到模型中。
深層神經網絡和詞預訓練的快速發展為自然語言處理的相關任務帶來了許多新思路。借助于單詞嵌入,Kim 提出的TextCNN 相關的深度學習模型來處理文本中的語義特征,并取得了很大的進展。基于CNN[6]的模型在許多自然語言處理任務中表現出了優異的性能。在文本分類任務中,一般的CNN模型可以分為五個部分。
1)輸入層
CNN 模型的輸入層需要一個固定長度的文本序列。如果序列的長度小于l,我們將指定它的長度。如果長度大于l,我們將截獲它。然后,輸入層被轉換成與該詞相對應的詞向量。一個句子由幾個詞語組成,因此每個句子都可以用一個對應的向量矩陣表示。如果句子中有m個單詞,且向量維數為n,則得到的矩陣為m*n矩陣。
2)卷積層
卷積層通過卷積操作提取數據的局部特征。經過卷積運算,可以得到若干個不同的特征圖。卷積窗口的大小設置為h*n,其中h表示詞語的數目,n 表示詞語的維數。由于詞的大小與卷積核的大小相同,因此卷積運算后會得到列數為1 的不同特征映射。
3)池化層
常見的池化包括平均池化和最大池化。當數據通過池化層時,池化層可以起到減少計算和參數的數量的作用,從而防止過度擬合。以最大池化為例,最大池化不關注特征的具體位置,而更關注最大特征值,舍棄較小的特征值,這樣可以很好地保留文本的主要特征。
4)Dropout層
Hintion[7]指出在每一批訓練中,讓隱層節點值的一半等于0,可以顯著避免過擬合現象。丟失的節點可以減少特征的數量,從而減少了冗余,即增加了各層特征的正交性。在進行分類任務時,為了提高模型的泛化能力,防止過擬合現象的發生,一般會在全連接層上加入Dropout層。神經元失能的比例由初始化參數決定,訓練時定義為0.3。
5)全連接層
全連通層是將通過卷積層、池化層等操作獲得的特征表示映射到樣本空間。它在卷積神經網絡中起到將預測的目標分類到不同標簽的作用,從而實現文本分類的最終目的。
RNN 是一種能處理變長序列的神經網絡。然而,長序列會帶來大量的歷史信息,從而使得傳輸中的梯度發生梯度爆炸或梯度消失的問題。LSTM是RNN 的變型,可以有效地避免RNN 的梯度問題。LSTM 的結構可分為四個部分,其中Ct代表存儲單元,用于存儲當前時間的歷史信息。it它代表輸入門,它決定了在當前時刻有多少輸入被保存到存儲單元Ct。ft是遺忘門,它決定了前一時刻的歷史信息對當前存儲單元Ct的影響,ot代表輸出門,它的功能是控制應過濾掉多少當前單元狀態。當輸入數據為X=[x1,x2……xr]時,xt為n維詞向量,LSTM的轉換公式如下:
其中,Wi代表輸入門的權重,Wf代表遺忘門的權重,Wo代表輸出門的權重,bi代表輸入門的偏置項,bf代表遺忘門的偏置項,bo代表輸出門的偏置項。б是sigmoid 激活函數,ht是LSTM 單元的最終輸出。我們可以將這種機制理解為:ft被看作是一個函數,它可以確定存儲單元在多大程度上丟棄以前的信息,它控制存儲單元在當前時間將存儲多少新的信息。
目前,文本處理任務是深度學習的研究熱點,各種神經網絡組合模型層出不窮,如文獻[8~9],采用CNN 和LSTM 的混合模型來處理不同的文本任務,克服了卷積神經網絡和循環神經網絡的缺點。文獻[10~11]提出了一種加入注意機制的方法,并取得了很好的分類效果。文獻[12~13]采用了CNN 和BiLSTM 的結合,雙向LSTM 能更好地捕捉上下文信息。
我們的CNN-LSTM模型可以分為兩部分:CNN和LSTM。如圖2 所示,為了充分融合兩種模型的優點,我們設置不同的卷積核來提取不同感受野下的特征信息。由于卷積神經網絡特性的限制,CNN無法捕捉文本之間的上下文。以這種方式獲得的文本分類效果不能達到最好的效果。LSTM的記憶機制使得其在處理長文本方面具有顯著的優勢。由于LSTM 的門控制單元,它可以很好地記錄文本上下文的信息依賴性。本文提出的CNN 和LSTM的混合模型,如圖1 所示,其不僅可以捕捉文本上下文的依賴關系,而且可以獲得數據文本的局部特征。最后,通過集成層對兩種不同的特征進行融合,從而獲得更好的分類效果。

圖1 CNN-LSTM

圖2 CBOW和Skip-gram
文本分類數據預處理的關鍵在于將文本數據轉換成計算機能識別的矩陣向量。在嵌入單詞被提出之前,常用的方法有one-hot、n-gram 等。例如,one-hot處理方法雖然可以解決數據向量化,但容易產生維數災難,無法突出顯示數據。n-gram的語義關聯雖然可以反映詞與詞之間的關聯信息。但它需要相當大的參數空間。在此基礎上,bengio 等[2]提出了基于神經概率語言的模型,它允許較長的上下文,改進了當時最先進的N-gram 模型,是單詞嵌入思想的原型。Mikolov T[14]提出了一種計算詞向量的工具,它本質上是一個淺層神經網絡,可以很好地計算詞與詞之間的相似度。
Word2vec[15]是一種基于淺層神經網絡的詞向量構造模型。其原理是:如果要對詞進行向量化,任何一個詞都有語義關聯,且詞向量的維數很小,則需要訓練神經網絡語言模型。Word2vec 包括兩個模型:CBOW 和Skip gram。兩個模型的結構如圖2所示。
Word2vec 參數設置:sg=0 為CBOW 訓練模型,sg=1 表示Skip-gram 模型,我們使用CBOW 訓練模型。size 是我們訓練數據的特征向量維數,我們設置size=100,window 代表句子中當前單詞和預測單詞之間的距離,設置window=5,min_count可以截斷字典,參數設置為min_count=1,worker 參數控制訓練并行數,我們設置worker=6。
實驗數據集是清華自然語言處理組提供的《南方新聞》中文新聞文本的一個子集。實驗數據集由新浪新聞RSS 訂閱頻道2005 年-2011 年的14 類歷史新聞數據組成。從THUCNEWS,我們選擇了10類游戲,娛樂,時尚、家居、體育、科技、房地產、教育、金融等為實驗數據。每個類別有6500 個新聞條目,共有65000 個新聞數據。選取其中50000 條新聞作為訓練集,10000 條新聞作為測試集,6500條新聞作為驗證集。實驗環境如表1所示。

表1 實驗環境及配置
模型的LSTM 隱層的尺寸為100,其三個門控制單元如公式所示,式(1)、(2)、(3)、(4)和式(5)分別是存儲單元輸出公式和雙曲正切函數。CNN 卷積核的大小為2,3,4。我們使用最大池來進行特征提取和維度壓縮。池化層設置為0.3。另外,在CNN 卷積核中采用ReLu 激活函數,全連接層采用softmax,訓練采用Adam梯度下降優化算法,初始學習率為0.001。
實驗步驟如下:
1)對數據集進行預處理,如使用停止詞列表刪除文本中無用的停止詞,使用Jieba 分詞對文本進行分段。
2)對處理后的單詞進行矢量化,將單詞的維數設置為100,然后將處理后的單詞填充到模型中。在CNN 中,通過不同大小卷積核的卷積層提取詞向量,然后通過最大池化層提取最強特征。dropout層休眠神經元以防止過度擬合,最后輸出完整的連接層。在LSTM 中,詞向量通過100個隱藏層,通過三個門控制單元捕捉上下文之間的依賴關系。通過集合層,將CNN 處理的高特征向量和LSTM 處理的具有上下文信息的向量進行融合得到新的向量,兩者兼有,將得到的新向量輸入到dropout 層進行過擬合化處理。最后,由softmax輸出最終結果。
3)我們使用CNN模型、TextCNN模型、LSTM模型和其他基于深度學習的分類模型與我們提出的模型進行了比較。
從圖3 可以看出,實驗結束后,我們的CNNLSTM 模型在訓練集中的準確率為99%,在驗證集中的準確率為92.52%。我們的模型與LSTM 模型和TextCNN 模型的比較如表2 所示。經過比較,該模型的準確率比LSTM 模型提高了約3%,比TextCNN 模型提高了5%左右,說明我們的模型能夠更好地表達數據的原始特征,有助于提高文本分類的效果。

表2 不同模型訓練結果對比

圖3 CNN-LSTM實驗結果
隨著近幾年深度學習的發展,文本分類技術的應用也越來越廣泛,但隨著需求的不斷增長,仍有許多問題需要探討。文本分類技術的準確性還有待提高。與傳統的文本分類技術相比,基于深度學習的文本分類技術具有更好的分類效果,各種新模式層出不窮。
本文提出了CNN 與LSTM 結合的一種新的處理文本分類任務的模型。該模型利用具有不同卷積核的CNN 提取數據文本的局部特征,并通過LSTM 保存文本上下文的聯系信息,克服了卷積神經網絡捕捉上下文相關性的不足。通過實驗表明,我們提出的模型具有良好的分類效果。在下一步的工作中,我們可以引入注意模型來探索更好的分類模型,提高文本分類的準確性。