梁順攀,豆明明,于洪濤,鄭智中
(燕山大學 信息科學與工程學院,河北 秦皇島 066004)
如何有效進行文本特征抽取是文本分類研究的核心問題之一。近些年,卷積神經網絡(convolutional neural networks,CNN)和循環神經網絡(recurrent neural network,RNN)等深度學習技術在文本分類領域取得了良好的效果。CNN具有快速捕獲局部特征提取能力,并且能很好學習復雜、高維和非線性映射關系。RNN能把近鄰位置信息進行有效整合[1],可以更好地利用傳統神經網絡無法建模的信息,處理與時間序列高度相關的問題[2],具備提取文本序列全局特征的優勢。目前,注意力模型(attention model,AM)已經成為神經網絡中一個最新的研究熱點,文本分類任務中,主要作用在文本特征表示,它能夠對關鍵詞或重點短語賦予更高的權重,更好挖掘詞對之間隱含的關系,使得分類效果更好。
綜合考慮以上3種模型的優勢,本文提出一種文本分類模型——TC-ABlstm模型。
隨著深度學習的不斷發展,用于文本分類的神經網絡算法相較于傳統的分類方法,在分類效果有了很大提升。Kim等提出了基于CNN的分類模型,來解決文本情感分類問題,與傳統模型相比,該模型能自動快速提取文本特征,去除了繁雜人工設計特征,有效減輕了工作量,使得分類效果更好。Cao等[3]以微博數據為研究對象,結合CNN和支持向量機模型,使得分類效果有所提升;魏勇等[4]考慮到單詞語義對于文本分類的影響,對于詞向量的表示進行改進,提出一結合關聯語義和CNN的文本分類方法,取得較優的結果。以上方法雖然在文本分類效果上均有所提升,但并未考慮到CNN模型提取的是文本信息的局部特征,容易遺失句子和文本中的相關信息,影響結果的準確性。
捕獲文本的全局特征,能更好理解文本的含義。Socher提出一種基于RNN的分類模型,該模型主要通過遞歸計算來學習句子的序列特征。但RNN存在梯度消失和維度爆炸的問題。Cheng等[5]將RNN的變體長短期記憶(long short-term memory,LSTM)神經網絡模型應用在文本分類上,使得分類效果得到明顯提升,并且規避了以上出現的問題。由于句子具有結構依賴性,當前單詞不僅需要其前面單詞提供輔助信息,后面單詞也需要提供輔助信息,因此文本分類需要考慮上下文結構,而LSTM只考慮到單向信息,這對于文本分類準確率會產生一定的影響。
注意力機制的核心是在有限資源下學習并關注最有效的信息,它是深度學習技術中過去近幾年最具價值的突破之一,得到了很多研究者的青睞。Bahdanau首次在機器翻譯任務種應用了注意力機制,并取得良好的效果。wang等[6]在情感分類任務中提出一種注意力機制和LSTM的網絡模型,引入注意力機制主要是給不同的aspect分配不同的權重,以此提高情感分類的準確性。Vaswani等[7]使用自注意力機制(Self-Attention)來獲取句子表示的方法并用于機器翻譯,使得翻譯性能更好。汪嘉偉等[8]將自注意力機制和卷積神經網絡相結合,捕捉句子局部特征和長距離依賴關系,使得分類效果有進一步提升。自注意力機制不需要依靠額外的信息,就能捕捉文本數據或特征的內部相關性。但其本身不具備捕獲時序信息的特點,往往需要加入一個position embedding(即隨機生成的位置向量),才能更好學習句子的語序。
針對以上所提出的問題,進一步提高分類效果,本文分別做出以下改進:為了增加CNN的局部特征提取能力,本文基于Kim 提出的Text_CNN模型進行改進,在卷積層中引入Selu[9]函數作為其激活函數,并在池化層采用K-max pooling方式代替常用的最大池化策略;再結合自注意力機制和BiLSTM,來獲取文本的長期依賴關系。構建一種用于文本分類的并行神經網絡模型TC-ABlstm。
本文聯合改進的卷積神經網絡、BiLSTM模型以及自注意力機制3種模型的優點,構建了一個用于中文新聞分類的TC-ABlstm混合神經網絡模型,如圖1所示。該模型在特征提取方面由兩部分構成。

圖1 基于改進的Text_CNN和自注意力 BiLSTM的并行神經網絡模型
第一部分:改進Text_CNN用于提取文本的局部特征。在文本分類中,CNN中常用ReLU作為激活函數,與一般的線性和非線性函數相比,其處理方式更簡單,表達能力強,但易導致神經元死亡。本文采用更新的Selu激活函數進行替換,提高模型魯棒性。另外,為了增強模型提取特征的能力,在池化層采用K-max pooling方式代替最大池化,盡可能保留更多有價值的特征。
第二部分:采用自注意力機制雙向長短期記憶模型BiLSTM解決長距離依賴問題。自注意力機制能夠對有價值的詞賦予更高的權重,增強詞對之間的語義關系,但其本身捕獲不到時序信息,考慮到循環神經網絡處理序列數據的天然優勢,其變形BiLSTM信息記憶能力更強,能夠很好地利用上下文特征信息和對非線性關系進行擬合,保留文本的順序信息的特點,將其代替自注意力模型通常采用求和的方式獲取句子的向量表示,更好表達句子的語義關系。
最后本文將兩種模型的優勢相結合,保證提取特征的全面性,提高文本分類的準確度。下面是對模型的展開描述。
在輸入神經網絡模型之前,需要將原始的輸入文本信息轉化為其需要的向量形式,以便于后面的模型對特征進行抽取等操作。本模型采用已經訓練好的詞向量對本模型的embedding層進行初始化,設給定一個長度為n的句子L={l1,l2,l3,…,ln}, 其中詞li經過embedding層后映射成為一個詞向量表示,即Wi={w1,w2,…,wj,…,wd}, 其中d為詞向量的維度,拼接后生成該句子的詞向量矩陣為:S={W1,W2,…,Wj,…Wn}, 其矩陣大小為n*d。在詞嵌入矩陣中,每個詞語都有與自己相對應的詞向量表示。
CNN是深度學習的經典算法之一,它是一種前饋神經網絡,包含卷積計算且具有一定的深度結構[10]。CNN具有局部感知和權值共享的特點,減少權值數量,降低網絡模型的復雜度,并且具有強大的特征提取功能。本文改進的Text_CNN模型如圖2所示,包括輸入層、改進的卷積層和池化層、全連接層。

圖2 改進的Text_CNN
由輸入的詞向量矩陣可知S的大小為n*d,和卷積核F進行卷積操作,得到特征值ci, 其中,i為第i個特征值,則提取局部特征的公式如下
ci=f(F·Si+h-1+b)
(1)

(2)
可以看出,在x≤0 (即負半軸上)得到一個較小斜率的函數,不再簡單置零,以此解決神經元死亡問題,從而保留特征負值信息,增強對有效特征信息的學習能力。同時,Selu函數中引入了自歸一化的屬性,使模型即使在噪聲和擾動的情況下,仍可以保證其準確性,使神經網絡的學習更具魯棒性,從而提高分類的準確性。
為充分提取文本局部特征,本文設置3個不同的卷積窗口,分別為2,3,4的卷積核,每個卷積核數均為50,其掃描整個詞向量矩陣時的步長設置為1,由以上的計算可知,通過卷積操作得到特征圖C為
C=(c1,c2,…,cn-k+1)
(3)
經過卷積操作后,本文在CNN的池化層采取K-max pooling策略。由于CNN卷積層輸出的特征圖中存在至少一個重要特征,常用的最大池化操作針對每個濾波器的特征映射圖只保留最大值特征,無法對多個重要特征進行選取,容易造成特征信息丟失。因此選用K-max pooling池化方式,即在所有特征值中選取前k個重要特征供后續使用,減少重要特征丟失。其計算公式如下
Di=top_k_max(C)
(4)
其中,k=3, 為提取文本的前3個重要信息。
2.4.1 自注意力機制
近幾年,注意力機制在自然語言處理、圖像識別及語音識別等領域取得重要突破,是專家學者根據人類的選擇性視覺注意力機制而提出的。人們在觀察圖像時,會根據以往的經驗獲得需要重點關注的內容,并會對這一內容投入更高的關注度,以期待獲得更多的信息,它的核心就是利用有限的注意力資源從眾多的信息中篩選出對當前任務目標更關鍵的信息。同理,當人們閱讀某某篇文章時,會選擇性地瀏覽比較重要的詞或句子,關注其中有價值的信息,而注意力機制的作用即過濾掉沒有價值的內容,讓其能夠更好捕獲到有價值的信息,因此在文本分類中加入注意力機制具有重要的研究意義。
從文獻[11]中,我們了解到傳統注意力模型使用詞級別注意力機制方法生成句子表示的一維向量,只能以某個特定視角對句子進行語義表示,從而會產生網絡中間損失大量信息的情況。與傳統的注意力機制不同的是,自注意力機制通過映射為二維矩陣來表征句子信息的方式進行句子建模,獲得了語義信息更加豐富的特征表示,如圖3所示。

圖3 傳統注意力機制與自注意力機制
自注意力機也被稱為內部注意力(intra-attention),是基于注意力機制的一種改進,其特點是學習句子內部的詞依賴關系,通過一定的計算過程直接將句子中任意兩個單詞的關系聯系起來,不需要依靠額外添加信息來計算權重關系,其核心在于點乘注意力[11],本文采用的點乘注意力公式定義如下
(5)

雖然自注意力機制能夠學習到任意詞對之間的關系,但并不能捕捉序列的順序,假如將句子中詞的順序打亂,那么自注意力機制學到的是一樣的結果,往往需要添加position embedding獲取位置信息,來獲取句子的序列??紤]到BiLSTM捕獲句子時序性的天然優勢,本文將兩者很好地結合起來,即能捕捉到貢獻程度較大詞,又能充分學習到詞對的語義關系,同時也保證了句子中詞語的序列關系。
2.4.2 BiLSTM模型
RNN是處理自然語言中長序列信息最常用的一種模型,用于提取文本的全局特征。但傳統的RNN存在梯度消失、維度爆炸的問題,LSTM是為了解決此問題而被提出。LSTM的模型結構主要由3個門控(遺忘門、輸入門和輸出門)單元和一個記憶單元(constant error carrousel,CEC)組成,其作用分別是:遺忘門用來控制上一時刻單元中存儲的歷史信息,輸入、輸出門分別控制網絡的輸入與輸出。則該神經元在t時刻的更新計算過程如下
ic=σ(Wi·[ht-i,xt]+bi)
(6)
ot=σ(Wo·[ht-i,xt]+bo)
(7)
ft=σ(Wf·[ht-i,xt]+bf)
(8)
ct=ft·ct-1+ic·tanh(Wc·[ht-i,xt]+bc)
(9)
ht=ot·tanh(ct)
(10)
其中,it,ot,ft分別是在t時刻的輸入門、輸出門和遺忘門,σ是sigmoid函數,Wi,Wo,Wf,Wc代表3個不同門的權重矩陣和當前輸入單元狀態權重矩陣。bi,bo,bf,bc代表3個不同門的偏置,和當前輸入單元偏置項。其中,ct-1表示上一個時刻c的值,ct表示對記憶單元的更新,ht為當前的輸出結果。
由于句子具有結構依賴性,單詞與單詞之間的關系都是雙向的,一個單詞會受到前后單詞影響,因此本文采用的是RNN的變種雙向長短期BiLSTM模型,如圖4所示。

圖4 BiLSTM結構
從圖4中可以看到,BiLSTM主要由LSTM單元組成,其正向和反向的隱藏狀態融合了詞本身含義以及其上下文語義,故正向和反向LSTM隱藏狀態的拼接可以更好表示單詞的語義。
通常情況下,自注意力機制要想獲得句子的向量表示,經常采用加權求和的方式。為了能更好表達句子的語義,本模型在自注意力機制后,直接采用BiLSTM來捕獲句子的向量表示,如此即能解決信息冗余問題,又能很好捕獲到句子序列關系。其提取特征設置如下:

(11)
其中

通過BiLSTM模型最終的輸出表示是:h={h1,h2…hn}。
然后,通過改進的Text_CNN和自注意力BiLSTM模型分別完成對文本的特征提取后,將捕獲的局部和全局特征拼接融合形成文本新的特征表示。兩種特征融合的公式如式(12)
u=o⊕h
(12)
式中:u表示融合后的新特征,⊕代表拼接操作。
最后,利用softmax函數進行計算,輸出并行神經網絡模型TC-ABlstm的分類結果,完成文本分類。
本實驗是在Anaconda平臺上設計實驗,采用keras框架完成的,后端采用Tensrflow。其它配置見表1。
為了檢驗本文所構建模型的優越性,本文在Sogou Lab提供的全網新聞數據集SougouC和復旦大學文本分類語料庫2個數據集上進行實驗對比,見表2。

表1 實驗環境配置

表2 語料集概要情況

SogouC中的數據是在2012年6月~7月,從新浪、網易、騰訊以及鳳凰資訊等若干個新聞站點采集,并且提供URL和正文信息,包括18個類別,本文采用其中9個類別作為本實驗數據,其中70%作為訓練集,30%作為測試集。
在輸入方面,本文使用預先訓練好的Sougou news進行詞向量初始化,詞向量維度為200,文本長度設置為500,過長的文本數據會導致運行速度慢,影響分類效果。使用卷積窗口大小為2、3、4的卷積核,每種窗口的卷積數量均為50,采用k-max的池化策略,為能提取到更多有價值有效的特征,將k值設為3;設置BiLSTM中隱藏層的節點數為256;為避免過擬合,經多次實驗設置epoch參數為5,batch_size設置為64。

(13)
將以下5種模型進行對比實驗,驗證其改進模型的有效性。
(1)Text_CNN:該模型是Kim所提出的,輸入部分使用預訓練的詞向量,并通過卷積層、池化層和softmax輸出層來進行文本分類。
(2)PCNN(改進的Text_CNN):在(1)中的基礎上進優化,針對卷積層和池化層進行改進,引入了Selu激活函數和k-max池化策略,并且所有的參數設置均與(1)相同。
(3)ABlstm模型:為了獲取文本的長期依賴性,提出的聯合自注意力機制和Bilstm模型。主要考慮從單模型的角度進行對比,驗證模型的有效性。
(4)TC-ABlstm:該模型為本文所提出的模型,將PCNN模型和ABlstm模型相結合,具有充分提取文本特征的特點,最后采用softmax函數進行分類。
(1)首先進行Text_CNN模型與PCNN(改進的Text_CNN)模型的分類結果進行比較:設置其所有的參數均相同,以Text_CNN模型為標準,以準確率和時間作為評判標準,在兩個數據集上的實驗結果,如圖5~圖6所示。

圖5 SogouC語料集上準確率對比

圖6 FD語料集上準確率對比
從圖5~圖6可以看到,隨著迭代次數的增加,模型逐漸趨向平穩狀態,我們在參數設置相同的情況下,基于Text_CNN改進的模型PCNN準確率要比原Text_CNN的準確率高。在搜狗數據集上,PCNN的準確率為83.94%,而Text_CNN的準確率為81.97%,提高了約1.9%。由圖6可知在復旦文本數據集上,Text_CNN的準確率達到了94.15%,而PCNN的準確率達到了95.28%,相比較Text_CNN也有一定的提高。由此可見,在改進的模型中,引入的Selu激活函數和K-max池化策略,能夠有效提高CNN捕獲局部特征的能力,提高分類的準確率。
由表3可知,數據質量相同的情況下,改進的PCNN要比Text_CNN用時更少,不僅使準確率有所提升,其效率也有得到了提高。

表3 運行時間/s
(2)為了更好了解本文提出的TC-ABlstm并行神經網絡模型性能,依次和PCNN以及ABlstm單模型進行比較,見表4。

表4 準確率對比/%
從表4中,我們可以看到,在兩個語料集上,基于自注意力機制和BiLSTM的模型進行文本分類的準確率要高于PCNN模型,表明自注意力機制和BiLSTM的模型相比卷積神經網絡來說更適合對較長文本進行處理。同時表中也顯示出在復旦文本數據集上,TC-ABlstm的準確率達到98.61%,高于準確率為95.28%的PCNN模型3.33%,同時相較于ABlstm的準確率提升了1%左右。在搜狗數據集中,TC-ABlstm模型的分類準確率達到了91.59%,比PCNN模型的準確率提高6%左右,對比于ABlstm模型的87.14%提升4.45%。由此可見,本文所構建的TC-ABlstm模型的準確率均高于單個文本分類的模型,原因是單個模型在提取特征方面都有一定的局限性,兩者的優勢結合對于特征提取更加全面。
(3)在搜狗數據集下,本文所提出的模型與其它的模型進行比較,見表5。
從表5中綜合分析,以上3種模型均為混合模型,TC-ABlstm相比其它兩種模型,準確率均有所提升。這是因為本文模型不僅對CNN進行改進,增加了其提取特征的能力,同樣融合自注意力機制和BiLSTM模型捕獲了上下文語義信息,驗證該模型相對來說具有一定的優越性。

表5 搜狗數據集
綜上幾種文本分類方法的對比可知,本文對于CNN模型進行優化,更有利于CNN對于文本局部特征的提取。同時引入自注意力雙向長短時記憶模型ABlstm彌補CNN提取特征時忽略文本上下文語義以及句子全局特征提取不充分的缺點,有利于提高文本分類的準確性。
本文提出了用于文本分類的并行神經網絡模型TC-ABlstm。該方法對傳統的CNN進行改進,使用Selu激活函數代替Relu激活函數,并在池化層采取K-max池化策略,增強了對文本局部特征的提取的能力;同時聯合自注意力機制和雙向長短期神經網絡BiLSTM模型來提取文本全局特征的優勢,增強對文本上下文的理解。實驗結果表明,該方法對于分類效果的性能有一定的提升。本文提出的模型主要集中在提高特征提取能力這一方面,為了使模型更加優化,接下來從兩方面進行改進:首先,針對中文文本特征提取中,詞粒度表達不精確的情況,利用文本更細粒度的特征,增加文本表示的多樣性,提升文本表示的準確性;其次,考慮到長文本進行分類時,文中存在很多無效的干擾信息,采用壓縮或提取主題句的方式,提前過濾掉一些冗余信息,保證精確度的同時,能夠保證運算效率。