?

基于BiLSTM-Attention-CNN混合神經網絡的文本分類方法

2020-09-09 03:09萬齊斌董方敏孫水發
計算機應用與軟件 2020年9期

萬齊斌 董方敏 孫水發

(三峽大學計算機與信息學院 湖北 宜昌 443002)

0 引 言

在當今大數據時代下,互聯網中遍布圖像、語音、文本等各類數據信息,其中文本信息占重要地位。而對文本內容進行分類是文本挖掘、大數據領域的一項重要課題。文本分類便于人們對數據進行整理和分析,也是目前自然語言處理中最基本的一項任務,因而具有極其重要的意義。

傳統的文本分類方法主要是基于統計學的方法,該類方法利用詞頻信息對文本進行分類,容易造成數據特征稀疏和語義敏感等問題,分類精度不高。近年來,隨著深度學習技術的不斷成熟,CNN、RNN等神經網絡模型也逐漸被應用到自然語言處理領域。CNN網絡具有較強的特征提取能力,在圖像領域具有廣泛的應用。而在文本方面,由于文本信息的上下文聯系,一種雙向長短期記憶網絡BiLSTM被研究人員廣泛使用。對于文本分類任務,提取文本中的關鍵詞至關重要,而這兩種常用網絡模型缺點在于無法體現每個詞在文本中的重要程度,不能有效地獲取文本中的關鍵詞,結構單一。因此,本文提出一種基于BiLSTM-Attention-CNN混合神經網絡的文本分類方法,引入注意力機制,提取每個詞的注意力分值;在網絡中,給注意力分值較大的詞分配較大權重,使該詞在分類任務中發揮更重要的作用,提高分類準確率。

1 相關工作

目前,文本分類主要分為傳統方法和深度學習方法。傳統方法主要包括支持向量機[1]、樸素貝葉斯、KNN和LDA[2]主題模型算法等。近幾年,深度學習方法發展迅速,2013年,Mikolov等[3]提出Word2vec模型用于詞量化,替代了簡單的one-hot向量化方式,解決了數據稀疏問題。在Word2vec中有CBOW和Skip-gram模型用于訓練詞向量,在訓練細節上,提出了多種優化方法,模型的訓練速度得到極大的提升。2014年,Mnih等[4]提出一種用于深度學習領域的注意力機制方法,用于提取關鍵信息,實驗表明結合注意力機制的RNN網絡在圖像領域要優于大多數單一模型。2015年,Kim[5]提出TextCNN神經網絡模型,首次將CNN網絡模型應用到文本分類領域,將句子分割為詞語級別進行處理,證實CNN網絡模型不僅適用于計算機視覺領域,同時也適用于自然語言處理領域,但缺乏對上下文的聯系。同年,Zhou等[6]將長短期記憶網絡LSTM應用于文本分類領域,彌補了CNN缺失上下文信息的缺點。由于LSTM是將整個文本作為輸入,沒有對文本中重要信息進行提取,因此,對于長文本數據集而言,其訓練時間較長。文獻[7]提出一種循環卷積神經網絡結構RCNN,該結構將BiLSTM和最大池化層連接,BiLSTM網絡捕獲上下文信息,池化層提取關鍵特征,通過兩種結構的融合,充分發揮了BiLSTM提取上下文信息的優勢,但在CNN部分只保留了池化層,削弱了CNN提取特征的能力。

隨著注意力機制的改進,越來越多的基于注意力機制的方法被提出。2016年,Yang等[8]提出一種基于注意力機制的GRU網絡,使用神經網絡分層建模句子和文檔,采用一種自下向上的基于向量的文本表示模型,并在層與層之間加入注意力機制,有效地提高了模型的精確度。同年,Yin等[9]提出一種結合注意力機制的CNN網絡,結合注意力機制將不同CNN通道的句對聯系起來,證實CNN網絡也可以和注意力機制結合,并取得不錯的效果。

注意力機制最先是針對圖像領域提出的一種機制,其目的是提取圖像的局部重要特征。隨后,注意力機制被運用到自然語言處理領域,如結合注意力機制的機器翻譯[10]、情感分析[11]及關系抽取[12]等。由于CNN和BiLSTM都是對整體文本進行操作,缺少對文本重要信息的注意力,在此基礎上,本文提出一種基于BiLSTM-Attention-CNN混合神經網絡用于文本分類。使用BiLSTM網絡分別學習當前詞的上文表示和下文表示,得到當前詞更深層次的語義向量;建立注意力模型,計算每個詞向量的概率權重,使權重較大的詞得到更多的注意,這些得到更多關注的詞往往是對于文本分類任務很關鍵的詞;連接池化層,執行k-max池化,保留前k個權重較大的詞;連接CNN網絡提取特征進行文本分類。

2 模型結構

注意力機制是模仿人類大腦的信號處理機制,能快速掃描圖像或文字,找到需要重點關注的目標區域。如圖1所示,BiLSTM-Attention-CNN模型包含6個組成部分:

(1) 嵌入層:將詞映射為低維向量;

(2) BiLSTM層:利用BiLSTM網絡獲得每個詞的更深層次的語義向量表達;

(3) 注意力層:計算每個詞的注意力權重;

(4) k-max池化層:執行k-max池化,提取步驟(3)中注意力權重排名前k個詞;

(5) CNN層:將經過k-max池化提取的前k個詞向量輸入CNN網絡進行卷積等操作,提取特征;

(6) 輸出層:將最終CNN提取到的特征向量通過Softmax分類。

圖1 BiLSTM-Attention-CNN模型基本結構

2.1 嵌入層

詞嵌入是自然語言處理中詞向量的表示方法,傳統的詞向量表示方法大多采用one-hot編碼方式,但此方法容易導致向量維度過高。本文模型中,詞嵌入采用Word2vec中的Skip-gram模型對詞進行預訓練。圖2為Skip-gram模型的結構圖,該模型是目前在自然語言處理領域詞嵌入最優的方法。Skip-gram模型通過當前詞預測該詞上下文的詞向量表示,設中間詞為xt,其向量形式為v(xt),設置上下文依賴窗口大小為4,則可預測周圍4個詞的詞向量{v(xt-2),v(xt-1),v(xt+1),v(xt+2)}。Skip-gram模型是利用中間詞向量v(xt)的條件概率值來求解上下文詞向量,計算式為:

(1)

圖2 Skip-gram模型

2.2 BiLSTM層

LSTM層使用雙向長短期記憶網絡BiLSTM獲取詞的更深層次的語義向量,該結構可以結合當前詞的上下文,避免RNN中后面的單詞比前面的內容影響力更大。例如,在“A sunset stroll along the South Bank affords an array of stunning vantage points”這句話中,CNN可能會提取到特征詞“bank”,但此處的“bank”具體含義并不清晰,如果與BiLSTM結合,則通過上下文語義信息,可推斷此處的“bank”意思為“海岸”。圖3為BiLSTM網絡處理這句話的過程。

圖3 BiLSTM模型

首先,使用BiLSTM分別學習當前詞wi的上文表示cl(wi)和下文表示cr(wi),再與當前詞自身向量表示e(wi)連接。

cl(wi)=f(W(l)cl(wi-1)+W(sl)e(wi-1))

(2)

cr(wi)=f(W(r)cl(wi+1)+W(sr)e(wi+1))

(3)

xi=[cl(wi),e(wi),cr(wi)]

(4)

(5)

2.3 注意力層

在NLP領域,由于文本的基本單位為詞,現有模型大多都針對詞語進行訓練和操作。因此,本文提出的注意力機制主要是計算詞語在文本中的注意力,注意力越大,該詞受到的關注越多,說明該詞在任務中發揮的作用越大。提取出注意力較大的詞,可以有效地將文本分類。因此,本文提出一種用于文本分類的注意力機制如圖4所示。

圖4 注意力模型

(6)

式中:w、w1為權重矩陣;b1為偏置項。得到注意力分值后,使用Softmax計算概率分布值,計算式為:

(7)

y(3)=YαT

(8)

式中:α為α1,α2,…,αi的組合矩陣。

2.4 k-max池化層

在NLP領域,池化層主要用來提取特征,將不同長度文本轉換為固定長度向量。常見的池化操作為最大池化操作,保留其中一個特征,而在文本中,通常是幾個詞或者其組合形式表達整個文本含義。因此,本模型采用k-max池化,保留前k個注意力分值較大的詞向量,得到前k個詞的組合特征向量y(4),權重越大,其得到的注意力也越多。根據多次實驗結果,k取值為8。

2.5 CNN層

CNN層采用基本的TextCNN模型提取特征。該網絡第一層為輸入層,將k-max池化層提取的前k個詞向量作為輸入;第二層為卷積層,使用多個不同大小的濾波器對輸入的詞向量執行卷積;第三層為池化層,執行最大池化操作,重新構建一個新的特征向量y(5)。

2.6 輸出層

經典的全連接網絡的輸出層定義為:

y(6)=w3y(5)+b2

(9)

式中:w3為權重矩陣;b2為偏置項。通過Softmax函數分類,得到每個文本所屬類別的概率分布值,最大值的類別即為預測類別,計算式為:

(10)

3 實 驗

實驗在ubuntu 16.04上進行,CPU為Intel(R)Xeon(R)E5-2665,2.4 GHz,內存大小為32 GB,實驗編程語言為Python 3.0,深度學習框架為Tensorflow 1.12.0。實驗數據集為DBPedia和AGNews文本分類數據集。DBpedia是一個眾包社區,旨在從維基百科中提取結構化信息,其本體數據集是通過從DBpedia 2014中挑選14個非重疊類來構建的。從這14個本體類中的每一類中,隨機選擇40 000個訓練樣本和5 000個測試樣本,因此,訓練集數量為560 000,測試集數量為70 000。AGNews的新聞主題分類數據集是通過從原始新聞語料庫中選擇4個最大的類來構造的,每個類包含30 000個訓練樣本和1 900個測試樣本,訓練樣本總數為120 000,測試樣本數量為7 600。

3.1 參數及評測標準

實驗訓練為批量訓練,對DBPedia以及AGNews數據集進行分類,相關實驗參數如表1、表2所示。采用文本分類常用的準確率作為評測標準,有效反映模型的性能。

準確率=分類正確的文本/文本的總數

軻左手把秦王袖,右手揕其胸,數之曰:“足下負燕日久,貪暴海內,不知厭足。于期無罪而夷其族。軻將海內報仇。今燕王母病,與軻促期。從吾計則生,不從則死?!鼻赝踉唬骸敖袢罩?,從子計耳!乞聽琴聲而死?!闭偌斯那?,琴聲曰:“羅縠單衣,可掣而絕。八尺屏風,可超而越。鹿盧之劍,可負而拔?!陛V不解音。秦王從琴聲負劍拔之,于是奮袖超屏風而走。軻拔匕首擿之,決秦王,刃入銅柱,火出。秦王還斷軻兩手。軻因倚柱而笑,箕踞而罵曰:“吾坐輕易,為豎子所欺。燕國之不報,我事之不立哉!”

表1 BiLSTM網絡參數

表2 CNN網絡參數

3.2 結果及分析

3.2.1分類結果分析

為了驗證本文模型的優越性,選取了6種文本分類方法,傳統文本分類方法選用樸素貝葉斯模型[13]、ngrams-TFIDF模型[14],深度學習方法選用charCNN模型[15]、wordCNN模型、LSTM模型[16]和RCNN模型。表3為各模型分類效果對比。

表3 不同模型分類效果對比 %

由表3中數據分析可知,在相同的數據集上,本文模型的分類效果更佳。樸素貝葉斯、ngrams-TFIDF這兩種傳統方法是基于統計學方法,分類依據是每個詞出現頻率,而不是每個詞的語義信息,雖然ngrams-TFIDF采用ngrams方法,減少了詞向量的維度,避免了數據稀疏問題,但沒有改變其基于統計頻率的根本性質。而本文提取的是句子的特征向量,是句子潛在的語義信息,因此,分類效果更佳。實驗結果顯示,本文模型的分類準確率比一般傳統方法高出2到3個百分點。

圖5和圖6分別為各模型損失值和準確率隨時間變化曲線,可以看出,本文模型的分類準確率比單一的CNN或LSTM高出1至2個百分點,且收斂更快,能在較短的時間內達到較高的準確率。實驗證明:融合的多網絡結構比單一的網絡結構效果更佳,例如CNN只考慮到特征提取,LSTM只考慮到上下文語義聯系,而本文的網絡結構是BiLSTM、注意力機制、CNN三者的融合,綜合考慮到特征提取和上下文語義之間的聯系,模型結構更加全面,可解釋性更佳。

圖5 損失值隨時間變化曲線

圖6 準確率隨時間變化曲線

在網絡融合模型中,與RCNN網絡結構相比,本文模型在準確率上增幅不大,但是收斂速度更快。雖然RCNN網絡的結構為BiLSTM連接池化層,也是一種網絡融合模型,但并不是真正的BiLSTM結合CNN的模式。由圖5可知,該網絡不穩定,訓練過程中震蕩強烈,而本文模型不僅加入了CNN,還加入注意力機制來計算每個詞的注意力概率值。通過概率值知道注意力應集中在哪些詞,提取k個關鍵詞,可以實現精準快速的分類,提升收斂速度,極大地減少震蕩。

3.2.2k值分析

由于本文池化層采用k-max池化,因此k的取值顯得尤為重要。為了驗證本文模型中k的最佳取值,進行多次實驗,繪制了準確率隨k值的變化曲線,如圖7所示。從整體上看,準確率隨著k值的增加而上升,說明本文采用的k-max池化相較于max池化而言,對模型整體效果有一定提升。k取值很小時,本文模型在AGNews和DBPedia兩種數據集上的準確率都不高;當k=8時,準確率在DBPedia數據集上趨于平穩,在AGNews數據集上出現明顯的下降趨勢。綜合k值在兩種數據集上的表現,本文k-max池化層的k值設為8。

圖7 準確率隨k值的變化曲線

4 結 語

本文提出一種基于BiLSTM-Attention-CNN混合神經網絡的文本分類方法,通過結合BiLSTM、注意力機制、CNN對文本進行分類,充分發揮各網絡模型的優勢。實驗表明,加入注意力機制后,分類準確率有一定程度提高,但由于是在單機上運行實驗,實驗時間較長。因此,本文模型后續將在分布式平臺上進行測試,縮短分類時間。由于本文在池化層使用k-max方法,k的取值對實驗的影響非常大,因此,在試驗訓練調參階段要進行多次實驗,尋求最合適的參數,提升實驗效果。目前,各個領域都不僅僅限于使用一種模型解決問題,大多數都將兩種或者多種模型進行融合來提升效果。在文本分類領域,已經實現了CNN與BiLSTM[17]、 RCNN與Highways[18]、LDA與SVM[19]、注意力機制與GRU網絡等模型的融合,融合結果相比于單個模型效果更佳。因此,未來將著重研究多種模型的融合對實驗效果的影響。

91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合