張焱博,郭 凱
(北京郵電大學,北京 102206)
隨著網絡發展的不斷推進,個性化推薦成為熱門領域。在文本信息不斷激增的當下,有效化的挖掘文本信息、分析處理、歸納推理變得越來越迫切。繼深度學習不斷在視覺領域取得成果后,對自然語言文本分類也推出各種個性化算法進行了多角度的研究。
傳統文本分類任務通常利用的是單一神經網絡。目前常見的神經網絡有:CNN、RNN、Fasttext、LSTM[1]。CNN網絡結構簡單,參數少且訓練速度快,但是模型只能提取到位置相近詞語的特征,難以融合間隔很長的詞之間的特征。Facebook設計并開源了Fasttext,一種詞向量計算和文本分類工具[2],它基于淺層網絡設計,通過保留文本的低層信息,可取得和深度網絡相媲美的精確度,但在較復雜的文本中表現比較無力。 RNN應用于文本分類中,可有效記憶全文文本信息特征。但RNN網絡長序列中較早出現的文本易被遺忘,存在梯度消失和爆炸的情況。用LSTM進行文本情感分類的研究方法是對RNN神經網絡的改進,通過增加門機制,對文本前端的信息選擇性的保留和遺忘,相較于CNN更適合學習時間序列。但是隨著文本增長,LSTM仍易丟失文本前端的信息,且表征性不夠強。
為此,本文結合卷積神經網絡、循環神經網絡以及詞向量平均的三種模型和其特點,提出一種基于Fasttext有效融合多特征的文本分類模型。實驗將網上的新聞作為數據集,將其詞向量作為CNN層、雙向LSTM層和Fasttext層的輸入,通過CNN和Bi-LSTM提取深層特征并賦予Attention權重。有效提升了文本分類的精準性。
CNN即卷積神經網絡,與傳統神經網絡相對比,網絡架構相似,仍是層級網絡,層的功能和形式有區別。它主要通過卷積層和子采樣層對輸入數據局部進行特征提取,并逐層組合得到全局信息,獲得最終輸出層結果。
RNN即循環神經網絡,作為序列處理的神經網絡,序列位置的隱藏狀態由當前位置的輸入與前序位置的輸入共同決定。RNN具有循環單元,它記憶前序信息并在網絡中保存,為之后的計算提供記憶。但是對于一些較長的序列,循環單元中較早的輸入強度越來越低。針對RNN短期記憶問題,創建了長短期記憶網絡(LSTM)。LSTM模型只能記憶序列t位置之前的信息,無法用之后的信息進行分析。Bi-LSTM[3-4]突出(Bi-directional)雙向特性,包含前、后向LSTM,前向網絡記錄t位置之前的信息,后向網絡記錄t位置之后的信息,二者的輸出共同決定序列當前位置的輸出,能夠更好地捕捉雙向語義依賴。
Fasttext文本分類工具采用N-Gram結構,基于詞向量化的淺層網絡,訓練與測試高效快速。具體做法是把N-gram作為詞向量輸入,隱藏層對詞向量做疊加平均,得到文本向量,最后連接輸出層,得到特征。
Attention機制最初被用于圖像領域[5]。Attention機制是在一個序列中學習到每一個元素的重要程度,并對每一個元素分配相應的權重,從而提取出相關度更高的部分,提升模型的精確程度。Attention機制的實質是一個尋址(addressing)過程,給定一個和任務相關的Query,稱作向量q,通過計算與Key的相關程度并將其附加于Value,從而得到表示相關程度的Attention Value。如圖1。

圖1 Attention機制結構圖
本文提出一種AT-LSTM-CNN-FASTTEXT的混合模型文本分類。模型結構如下圖2所示。主要包含6個模塊:輸入層、卷積神經網絡層、雙向LSTM層、注意力計算層、Fasttext層、預測層。

圖2 AT-LSTM-CNN-FASTTEXT模型結構
1) 輸入層對文本預處理,將每個詞構建成詞向量表示。
2) 雙向LSTM層與卷積神經網絡層分別將輸入層的詞向量作為輸入,得到深層詞向量的特征表示。
3) 注意力計算層將雙向LSTM層與卷積神經網絡層的輸出特征作為輸入,為雙向LSTM層輸出的每個深層詞向量計算合適的注意力權重值。
4) Fasttext層將輸入層的詞向量進行2-gram處理,作為自己的輸入并作疊加平均,得到詞向量的淺層表示。
5) 將Fasttext層的輸出與注意力計算層的輸出拼接并作為預測層的輸入,預測層基于該特征預測文本分類。
基于注意力機制的分類模型輸入由中文詞向量構成。將詞序列轉換為詞向量W={w1,w2,w3,…,wn},wi∈Rm,其中:n表示分詞后token的數量,m表示為詞向量維度。
LSTM神經網絡適合捕捉文本中長或短時依賴,且雙向LSTM網絡可以通過向前的狀態與向后的狀態分別捕捉到前時間步長與后時間步長。相應的,雙向LSTM網絡可以同時考慮到上下文的內容。本模型將W作為輸入,雙向LSTM的前向處理與后向處理步驟如下
(1)

(2)

定義一個卷積層為用大小為x×y的卷積核P對輸入矩陣X進行卷積操作。每行的輸出結果如下:

(3)
其中:a代表卷積網絡中的第a個通道,X(i,i+r-1)是第i至第i+r-1行特征,b是偏置量,f是BatchNorm2d歸一化處理,ReLu是線性整流函數,ri是通過卷積操作得到的第i行輸出結果,設置濾波器縱向移動步長為1,最終得到的卷積結果為
Ra=[r1,r2,…,rn-r+1]T
(4)
對得到的局部特征進行Max Pooling處理提取的局部最大特征代替局部特征,以減小特征數量

(5)

(6)

Ca=Conv(X)
(7)
對于每一個CNN模塊,有
Cj=Conv_3(W)
(8)
其中Conv_3代表對輸入詞向量做3次Conv操作,j代表第j個CNN模塊的輸出。將所有CNN模塊的輸出進行拼接,得到卷積神經網絡層的輸出
U=[C1,C2,…,CJ]
(9)
其中J為卷積神經網絡層中CNN模塊的個數。
CNN神經網絡只能學習位置相近的文本特征,LSTM神經網絡在長文本下容易丟失文本前端信息。因此采用Attention機制,將CNN與Bi-LSTM的高層特征融合,進而彌補Bi-LSTM丟失前端信息的問題。根據卷積神經網絡的深層特征對雙向LSTM網絡的深層特征分配注意力權重,得到融合特征表示。經過Attention機制賦予權重,深層特征表示如下
Z=α·HT
(10)
其中,α為打分函數score函數經過softmax處理得到的結果,代表雙向LSTM深層特征中第i個特征的注意力權重值,其公式為
α=softmax(score)
(11)

(12)
對輸入層詞向量W進行2-gram處理。對于每相鄰兩個詞向量,計算它們的平均詞向量

(13)
拼接每個平均詞向量得到
V=[v1,v2,…,vn-1]
(14)
在詞向量的維度上,對每個詞求平均得到Fasttext層的輸出
(15)
因為經Attention機制計算權重的深層特征與淺層特征互補,將注意力計算層得到的輸出H與Fasttext層K進行拼接得到預測層的輸入I
I=[H,K]
(16)


(17)
實驗開發環境是Pytorch 1.6.0,開發工具使用Jupyter notebook。計算機操作系統Windows10, CPU:Intel Core i7-8750H,顯卡:GeForce GTX 1060,內存:DDR4 16G,
本文實驗以清華大學的THUCNew數據集為依托。該數據集具有財經、彩票、房產等14個類別。本文選出其中科技、時政、娛樂、體育、房產、家居、游戲、教育、財經、時尚共10個類別,每個類別的數據6500條。訓練集由其中的90%構成,測試集選用剩余的10%。對每條語料進行清洗,使用jieba對語料進行分詞處理操作。若語料長度超過500,取前250個字與后250個字做拼接處理。詞向量采用預訓練的中文維基百科詞向量,每個詞向量維度是300。
本實驗模型中CNN層所使用的參數見表1。對于每次卷積操作得到的結果進行BatchNorm2d操作以增強網絡穩定性。

表1 CNN網絡參數
Bi-LSTM層選擇Adam為優化函數,所使用的參數見表2。

表2 雙向LSTM網絡參數
4.3.1 采用預訓練詞向量的完整數據集實驗
將本文提出的模型(AT-LSTM-CNN-FASTTEXT)與Bi-LSTM模型、CNN模型、無FASTTEXT模塊的融合模型(AT-LSTM-CNN)在完整預處理數據集上實驗,對比模型的超參數與本方法中超參數相同。圖3、圖4分別給出了AT-LSTM-CNN-FASTTEXT模型、CNN模型、Bi-LSTM模型、無FASTTEXT模塊的融合模型的準確率與損失函數變化圖。

圖3 各類模型實驗準確率變化

圖4 各類模型損失函數變化
由表3可以發現,本文模型收斂速度快且準確率均高于AT-LSTM-CNN、CNN、Bi-LSTM幾種模型。在epoch為1時,本文提出的模型分類準確率比AT-LSTM-CNN模型提升2.5%,比CNN模型提升了2.4%,比Bi-LSTM模型提升88%。這是因為當epoch少時,CNN, AT-LSTM-CNN等深層網絡無法較好的學習到深層特征,而本文模型中FASTTEXT模塊可以較好的捕捉到淺層特征并迅速調整參數,使得本文模型有更好的收斂性。當epoch為2時,AT-LSTM-CNN模型與本文模型分類準確率相差1.6%,CNN模型與本文模型分類準確率相差0.7%。對比圖4發現,除Bi-LSTM的損失函數基本保持不變外,其它模型損失函數減小到穩定值的速度慢于本文模型,但在4 epoch后均下降到一個相近的穩定值,除Bi-LSTM模型外,都有較好的收斂效果。原因為Bi-LSTM容易丟失文本前端的信息,導致信息在迭代過程中丟失。對比不同模型在各epoch下的準確率可以發現,本文模型在第1個epoch便取得最佳效果。

表3 各模型準確率(%)隨epoch數的變化
4.3.2 采用預訓練詞向量的部分數據集實驗
本文不僅在整個數據集上與其它模型進行對比,還按照不同的比例對訓練集選取一定量的數據進行訓練。不同百分比對應數據量見表4。在epoch為1的前提下,不同模型分類預測準確率的變化見表5。

表4 訓練集數據量占比

表5 1 epoch下分類預測準確率(%)隨數據量的變化
訓練數據量分別為5000,25000,50000時,本文模型、CNN模型、Bi-LSTM模型與去除FASTTEXT模塊的融合特征模型(AT-LSTM-CNN)的分類準確率,如圖5-圖7所。

圖5 數據量5000時各模型準確率

圖6 數據量25000時各模型準確率

圖7 數據量40000時各模型準確率
通過對比發現,本文AT-LSTM-CNN-FASTTEXT融合模型訓練數據條數為5000時,在收斂速度上明顯強于AT-LSTM-CNN融合特征模型。在1 epoch下,由于訓練數據集較小,較復雜的AT-LSTM-CNN網絡在epoch較少時難以對更多的參數有效的調整,而本文模型中的FASTTEXT模塊可以較快速準確的學習文本的淺層特征,使得本文模型準確度比單CNN模型高7%,比AT-LSTM-CNN模型高出約20%。隨著訓練數據集的變大,本文模型在epoch為1時的準確率不斷提升且在epoch增加的情況下準確率始終高于CNN、Bi-LSTM、AT-LSTM-CNN模型,當數據集為整個測試集時,本文模型在1 epoch條件下準確率在四種模型中最高,具有更快收斂速度。
4.3.3 采用未訓練詞向量的完整數據集實驗
將AT-LSTM-CNN-FASTTEXT模型、CNN模型、Bi-LSTM模型、AT-LSTM-CNN模型在未引入預訓練詞向量的不同大小訓練集上進行訓練,數據的大小同表4,在epoch為1的前提下,隨數據量的變化,準確率見表6。

表6 無預訓練詞向量1 epoch下分類預測準確率(%)隨數據量的變化
在訓練集小的時候,具有注意力機制的AT-LSTM-CNN與AT-LSTM-CNN-FASTTEXT模型在1epoch下準確度明顯高于CNN模型與Bi-LSTM模型。隨著訓練資源增加,訓練數據條數為10000時,AT-LSTM-CNN與AT-LSTM-CNN-FASTTEXT兩模型分別比CNN模型準確率高出4.6%與19.1%,AT-LSTM-CNN-FASTTEXT模型效果更優。這表明通過使用LSTM與CNN特征進行交互,具有Attention機制的模型捕捉到的特征相比單純使用CNN模型或Bi-LSTM模型更有效,具有更好的分類準確率。
本文提出了一種基于Fasttext和LSTM、CNN的AT-LSTM-CNN-FASTTEXT混合模型進行文本分類。該模型利用Fasttext對文本的淺層特征進行提取,同時利用CNN網絡模型對文本局部特征提取,利用雙向LSTM網絡進行全局文本特征提取并通過Attention機制將卷積神經網絡的深層特征對雙向LSTM模型的特征分配注意力權重。將淺層特征與深層特征相結合對文本類別進行預測,充分考慮了局部文本與全局文本的語義信息。在實驗過程中,對比本文模型、CNN模型、LSTM模型、AT-CNN-LSTM模型,結果表明,本文AT-LSTM-CNN-FASTTEXT融合特征模型能夠有效提取到文本淺層和深層特征,準確率更高。本文僅依托THUCNews中的部分數據集驗證了模型的有效性,后續計劃針對不同分類任務進行實驗,探究模型泛用性,并對模型進一步改進。