趙 倩,吳 悅,劉宗田
(上海大學計算機工程與科學學院,上海 200444)
傳統的文本分類方法將文本表示為詞袋模型(bag of words)或基于n-grams的詞袋模型(bag of n-grams)[1-2].詞袋模型只能捕獲文本的局部語義特征,無法獲取句子的組合語義信息,而基于n-grams的詞袋模型雖然可以捕獲詞語順序關系,表達復雜的語義信息,但參數的指數增長使得模型面臨計算復雜度過高、特征爆炸等問題.
近年來,研究者采用以詞向量為輸入的神經網絡作為文本處理模型[3-4].循環神經網絡(recurrent neural networks,RNN)是一種對序列輸入有強大表征能力的模型,但由于梯度消失和梯度爆炸問題[5],無法處理長序列.RNN 的變體門控循環單元(gated recurrent unit,GRU)則可以通過引入門控單元和隱藏狀態來避免這些問題[6].另外一種常用的文本分類模型是卷積神經網絡(convolutional neural networks,CNN).CNN 首先應用于圖像處理,利用一組濾波器提取圖像局部特征.當用于文本時,濾波器則用于獲取n-grams 的特征.目前,已有研究將CNN 與RNN 的混合模型應用于文本分類.Abreu 等[7]就提出一種基于CNN 和GRU 的文檔分類模型,通過注意力機制有效利用文本的單詞和句子的上下文語義信息來提高分類性能.Hsu 等[8]則提出一種結構化無關的門控表示對齊(gated representation alignment,GRA)模型,該模型利用對齊機制將CNN 所捕獲的短語(n-grams)信息添加到一組GRU 模型中,取得了較好的句子分類效果;通過在GRU 模型中添加不同的方法(注意力機制和對齊機制)來關注重要的n-grams 信息,而本工作提出的模型則著重于優化卷積神經網絡模型,降低模型復雜度.
本工作提出了使用更簡單高效的池化層替換卷積層來提取有助于分類的n-grams 特征,并結合雙向GRU 模型來提高文本分類性能.首先,使用平均池化層獲取n-grams 的分布式表示,然后利用全局最大池化層提取有利于分類的關鍵n-grams,最后將基于循環神經網絡的模型與基于n-grams 的文本表示進行有效結合,從而既彌補了n-grams 模型的全局信息建模能力不足,又使循環神經網絡能夠得到局部信息的有益補充,建立了適用于變長文本和不同分類問題的模型,提高了最終模型的語義表達能力和文本分類能力.
GRU 是RNN 的一個簡單高效的變體.在GRU 中,隱藏狀態保存模型的歷史信息.在每個時間步中,GRU 是根據當前輸入xt和上一個節點傳遞下來的隱藏狀態ht?1,更新當前隱藏節點的輸出yt和傳遞給下一個節點的隱藏狀態ht.設輸入文本為〈w1,w2,···,wn〉,其中wi是第i 個詞向量,n 表示文本長度.矩陣E ∈Rd×|V|存儲所有詞向量,其中d 為每個詞向量的維度,|V|為詞匯量大小.假設當前輸入單詞為xt,則GRU 當前隱藏狀態ht計算公式為
式中:σ 為sigmoid 函數;ht?1為最后一步的隱藏狀態.處理完所有單詞后,最終的隱藏狀態hn可以看作是文本的表示.
實驗結果表明,當使用單向GRU 網絡時,最終狀態將更依賴于輸入文本中位置偏后的單詞.因而,本模型采用雙向GRU(見圖1).在此設置中,一個GRU 網絡以〈w1,w2,···,wn〉為輸入,另一個GRU 網絡以〈wn,wn?1,···,w1〉為輸入,然后將這兩個網絡的最后一步輸出連接起來.設h1和h2為兩個網絡的最終狀態,則文本表示形式為

圖1 雙向GRUFig.1 Bidirectional GRU
式中:⊕為串聯操作.
對于文本分類任務,CNN 通常使用卷積層來提取n-grams 特征,而本工作直接在詞向量上使用池化層,這使得模型可以簡單高效地獲取大多數關鍵單詞和n-grams.
由于單詞攜帶的語義信息較少,不足以提供分類所需的判別信息,因此通常用n-grams 來表示文本.本工作使用多個池化層提取n-grams 特征,具體思路如下:首先以詞向量的方式進行文本表示,通過查表操作查詢給定詞語的詞向量;然后利用平均池化層計算文本中每個n-grams 的特征表示;最后使用全局最大池化層來提取重要的n-grams.
設輸入文本的n-grams 表示為〈v1,v2,···,vm〉,利用全局最大池化得到每個維度的最大值,最終得到一個與詞向量具有相同維度的向量p.令p 為結果向量,
假設采用p-grams,考慮詞序及模型復雜度,本工作采用兩種方法來獲得文本表示.第一種方法不考慮詞序,即只有一個詞向量矩陣E.設E 是保存所有單詞的詞向量矩陣.對于輸入文本〈w1,w2,···,wn〉,首先查找單詞在矩陣E 中第i 個p-grams 為〈wi,wi+1,···,wi+p?1〉,對應詞向量為〈ei,ei+1,···,ei+p?1〉,最后對p 個詞向量的每個維度求平均值得到p-grams的特征值.第二種方法與第一種方法的區別在于,模型添加了p-grams 的詞序信息,即采用多個詞向量矩陣〈E1,E2,···,En〉.通過從Ek+1查找wi+k的詞向量,第i 個p-grams〈wi,wi+1,···,wi+p?1〉 的詞向量為〈ei,ei+1,···,ei+p?1〉.同樣地,采用平均池化層得到pgrams 的特征值.在獲得每個p-grams 的詞向量之后,全局最大池化層決定哪一組p-grams 最重要.兩種方法的體系結構如圖2 所示.

圖2 獲取關鍵單詞或n-gramsFig.2 Get important words or n-grams
由圖2 可見,對于輸入〈w1,w2,···,wn〉獲取重要單詞和n-grams 的方法如下:(1) wi表示第i 個單詞(以3-grams 為例),每個詞向量矩陣均存有所有詞的詞向量;(2) 詞序無序,從詞向量矩陣隨機提取3 個詞向量w1,w2,w3,取平均值得到〈w1,w2,w3〉的特征值;(3)詞序有序,3 個維度相同的詞向量矩陣,從第一個矩陣取w1的詞向量,第二個矩陣取w2的詞向量,第三個矩陣取w3的詞向量,取平均值得到〈w1,w2,w3〉的特征值,依此類推.
在第1,2 節中,本工作用不同方法獲得了文本表示,其中dgru表示雙向GRU 推導的文本表示,dpooling表示池化操作推導的文本表示,將這兩個向量使用連接操作得到一個新的文本表示,即

最后一層是softmax 層,以d 為輸入,計算每個類別的概率,

式中:Ws為m×k 矩陣,其中m 為dgru和dpooling的維數之和,k 為類數;b 為偏置項;softmax函數為

如圖3 所示,對于輸入文本〈w1,w2,···,wn〉,分別用雙向GRU 網絡和池化網絡進行處理,可以從這兩個網絡中得到兩個輸出向量,并將這兩個向量串聯起來,形成所需的文檔表示形式.然后,利用帶有softmax 激活函數的全連接層進行整合,得到每個類別的分布.

圖3 文本分類的最終模型Fig.3 Final model for text classification
Rotton Tomatoes:該數據集共包含10 662 條影評[9].
互聯網電影數據庫(internet movie database,IMDB):該數據集包含50 000 條已標記的和50 000 條未標記的評論,每條評論被標為正面或負面,并將所有評論分為數量相等、類別均衡的訓練集和測試集[10].
電子產品評論數據集(electronics,ELEC):該數據集包含來自Amazon 的關于電子產品的評論,訓練集和測試集的數量與IMDB 相同[11-12].
20newsgroup:該數據集是新聞話題分類數據集,包含20 個新聞類,共18 846 條新聞,其中訓練集有11 314 條新聞,測試集有7 532 條新聞[13].
表1 列出了這些數據集的詳細統計信息.

表1 數據集Table 1 Datasets
考慮如下兩種模型:非神經網絡模型和神經網絡模型.對于非神經網絡模型,使用支持向量機(support vector machine,SVM)作為分類器,以bag of words 或bag of n-grams 作為輸入.輸入向量可以是詞頻向量、tf-idf 向量或對數詞頻向量.近年來,基于樸素貝葉斯(naive Bayes,NB)權重的bag of words 或bag of n-grams 特征被證明對分類器有一定的幫助,且與復雜的神經模型相比,具有較優的性能.因此,本工作使用SVMlight(http://svmlight.joachims.org/)來訓練SVM 分類器.
對于神經網絡模型,用CNN 和長短時記憶(long short term memory,LSTM)網絡訓練所有數據集.CNN 架構采用標準卷積提取n-grams 特征,然后使用全局最大池化來獲得文檔表示.LSTM 已成功用于各種模型,并且性能通常優于基本的RNN.本工作用Glove 詞向量初始化這些模型的詞向量.
對于所有數據集,本工作首先將所有字符轉換為小寫,然后將文本切分為單詞.本模型只考慮所有數據集中最常見的30 000 單詞,而Rotton Tomatoes 是15 000,不在詞匯表中的單詞被替換為一個特殊的〈unk〉標記.對于Rotton Tomatoes 數據集,將每個句子的長度設置為50 個單詞,對于其他3 個數據集,將長度設置為500 個單詞.那些較長或較短的文本會被截斷或填充以符合定義的長度.
對于GRU 網絡,使用預先訓練好的300 維Glove 單詞向量初始化詞向量(https://nlp.stanford.edu/projects/glove/),并在訓練過程中保持初始值不變.對于池化層,使用隨機初始化的詞向量,其維數是根據驗證集來選擇的.選取重要的單詞和n-grams 是模型的重要組成部分,n-grams 的大小根據驗證集上的模型性能進行優化.本工作使用Adam 算法對模型進行訓練,學習率為0.001[14],同時采用dropout 在輸入端實現模型正則化.本模型將dropout 設為p,p 是通過驗證集選取的,這意味著每個單詞都有機會以1 ?p 的概率留在輸入中.這一技巧可以使模型得到更多不同的輸入序列,以緩解過擬合.
由于Rotton Tomatoes 數據集沒有標準的驗證集和測試集的分割,因此本實驗通過交叉驗證來選擇超參數.另外3 個數據集具有訓練/測試分割,則在交叉驗證的訓練集上選擇超參數,然后在測試集上應用這些設置.
表2 展示了各模型在提取特征的有效性和準確性方面的性能,表中NBSVM 代表樸素貝葉斯(NB)和支持向量機(support vector machines,SVM)的結合體.通過對比發現,在雙向GRU 網絡中加入n-grams 信息,性能總是會得到提高,這也印證了基于RNN 的模型可以利用局部信息提高性能.另一個觀察結果是,在n-grams 中考慮詞序是有用的,這說明本工作提出的模型可以有效地利用詞序信息進行分類.對于有序和無序的n-grams 設置,實驗表明使用3-grams 對所有這些數據集都能達到最佳的性能.此外,與Abreu 等[7]提出的基于分層注意力機制的混合神經網絡(hierarchical attentional hybrid neural networks,HAHNN)模型相比,本模型的分類準確率更高.相比于HAHNN 在GRU 網絡中分別從字符級和句子級使用注意力機制篩選n-grams 信息,本模型直接利用池化層選擇關鍵n-grams 信息,明顯降低了模型復雜度.最后,本模型得到了比其他所有基線模型更高的準確性.

表2 各模型在不同數據集下的準確率Table 2 Accuracy of each model in different datasets %
在實驗中使用預訓練的詞向量通??梢蕴岣呱窠浘W絡模型的性能.對于本模型,當使用預先訓練的Glove 向量初始化GRU 網絡,同時隨機初始化池化部分的詞向量時,模型的性能確實得到了提高.但是通過實驗發現,當GRU 的詞向量是“static”時,模型性能最好.為了進行對比,使用不同的GRU 詞向量初始化和訓練方法對IMDB 數據集進行實驗,結果如表3 所示,其中“random”表示隨機初始化詞向量,“static ”是指用Glove 向量初始化詞向量,并在訓練過程中保持不變,“fine tune”是指用Glove 向量初始化詞向量,并在訓練過程中使詞向量按照梯度方向進行微調.通過對比發現,隨機初始化詞向量時,本模型對文本長度和訓練算法較敏感,性能也較差,這表明無監督詞向量的有效性.

表3 在IMDB 數據集上以不同方法初始化GRU 網絡詞向量對模型的影響Table 3 Affection to model with different ways to initialize word embedding of GRU network on IMDB dataset %
池化層通過選擇特征顯著的n-grams 進行分類,因此可以認為所選n-grams 具有最大的類別顯著性.對于情感分類任務,池化層所提取的n-grams 應該具有較為強烈的情感傾向.為了驗證這一點,將IMDB 訓練集中的n-grams 全部放入訓練好的模型中,計算每個n-grams 的情感得分.得分越接近1,則該n-grams 越傾向于負向情感,得分越接近–1,則該n-grams 越傾向于正向情感.這樣就可以得到模型認為對分類有幫助的最重要的n-grams.表4 給出了正向和負向情感傾向最高的3-grams.可以看到,本工作所提出的模型可以正確地選擇情感傾向明顯的n-grams.因此,池化層可以幫助GRU 網絡捕獲局部語義信息,并提高最終的性能.

表4 影響IMDB 數據集最重要的3-gramsTable 4 Most important 3-grams affect IMDB dataset
本工作提出了一種新的基于循環神經網絡和n-grams 信息的文本分類模型,使用簡單高效的池化操作直接通過詞向量或n-grams 向量獲取重要的n-grams,并使用雙向GRU 捕獲上下文序列的全局依賴特征,通過全局特征與局部關鍵n-grams 特征的結合提高文本分類的性能.本工作在4 個公開數據集上對本模型進行評估,由表2 可以看出,本模型在分類準確性上獲得了比單一神經網絡和復雜神經模型更好的性能,且與基線模型LSTM 相比,準確率提高約5.7%.下一步的工作將考慮如何在字符級模型上對無標簽的數據進行無監督特征提取.