王佳慧
(新疆警察學院 信息安全工程系,新疆 烏魯木齊 830000)
文本分類是自然語言處理任務中的一項基礎性工作,其在現(xiàn)實生活中的應用非常廣泛。常見的應用場景有:新聞分類[1]、垃圾郵件過濾[2]、情感分類[3]、輿情分析[4]、意圖分類[5]等。隨著大數(shù)據(jù)時代的來臨和信息基礎設施建設的迅速發(fā)展,互聯(lián)網(wǎng)上的文本信息呈現(xiàn)指數(shù)性增長。對文文本進行分類,不僅能夠有效緩解信息過載問題,拓寬信息處理的應用領域,還可以為輿情分析和監(jiān)控提供技術保障,使政府部門能夠更加全面快速地掌握輿情動態(tài),從而及時有效地開展輿論引導[6]。
目前,文本分類方法主要分為:基于傳統(tǒng)機器學習的分類方法和基于深度學習的分類方法?;趥鹘y(tǒng)機器學習的文本分類模型可以拆分為文本特征學習和分類器,根據(jù)選擇的特征對文本進行表示,然后傳入分類器中,就能實現(xiàn)文本分類。常用于分類的機器學習算法有:支持向量機(Support Vector Machines,SVM)[7],樸素貝葉斯(Naive Bayesian,NB)[8],K-最近鄰(K-Nearest Neighbor,KNN)[9]等。基于傳統(tǒng)機器學習的文本分類需要進行特征工程才能實現(xiàn),特征的好壞會直接影響分類效果。而人工進行特征選擇的難度,直接增加了利用傳統(tǒng)機器學習方法進行文本分類的難度。
基于深度學習的文本分類方法不僅不需要人工選擇特征,還可以挖掘出文本數(shù)據(jù)中的潛在特征。隨著研究的不斷深入,各種深度學習模型開始應用于文本分類。Kim[10]提出的Text CNN(Text Convolutional Neural Networks)模型,將主要用于圖像領域的卷積神經(jīng)網(wǎng)絡應用于文本分類領域,并且在多個文本分類任務上取得了較好的效果。Kalchbrenner 等[11]提出一種動態(tài)卷積神經(jīng)網(wǎng)絡(Dynamic Convolutional Neural Network,DCNN)模型,該模型在池化層采用動態(tài)K 最大池化(K-Max Pooling),使得句子建模具有更好的適應性。Zhang 等[12]提出一種字符級別的CNN 文本分類模型,該模型不需要依靠語法信息和語義信息,就能實現(xiàn)理想的分類效果。與Text CNN 相比,該模型在面對拼寫錯誤和表情符號時,具有更好的魯棒性。除卷積神經(jīng)網(wǎng)絡,循環(huán)神經(jīng)網(wǎng)絡(Recurrent Neural Network,RNN)[13]也常用于文本分類。RNN 除能夠讀取當前信息,還能記錄之前讀取過的信息。長短期記憶網(wǎng)絡(Long Short-Term Memory,LSTM)[14]通過改變循環(huán)層結構,改善了傳統(tǒng)RNN 容易梯度爆炸和梯度消失的問題。門控循環(huán)單元(Gated Recurrent Unit,GRU)[15]作為循環(huán)神經(jīng)網(wǎng)絡的變體,也常用于文本分類。Lai 等[16]提出循環(huán)卷積神經(jīng)網(wǎng)絡(Recurrent Convolutional Neural Network,RCNN)模型。該模型先通過Bi-LSTM 獲得文本的上下文信息,再將Bi-LSTM 獲取的上下文信息和原本的詞向量進行拼接,生成新的詞向量。最后將新的詞向量進行最大池化操作,提取重要特征。與傳統(tǒng)詞向量相比,該模型獲取的詞向量包含更加豐富的語義信息。
為了更好地提取特征,挖掘文本更深層次的語義信息,提升中文文本分類準確性,本文提出一種基于CNN 與Bi-LSTM 混合模型的中文文本分類方法。首先,使用Jieba分詞實現(xiàn)中文文本分詞;其次,利用詞嵌入模型Word2vec,將詞語轉換成低維、稠密的詞向量;再次,分別使用CNN 模型和Bi-LSTM 提取出文本的局部特征和全局特征,并且將局部特征和全局特征進行拼接融合;最后,將融合的特征送入分類器Softmax 中實現(xiàn)分類。
基于CNN 與Bi-LSTM 的混合模型結構如圖1所示。
從圖1可以看出,該混合模型主要由以下6部分構成:
(1)預處理層。將輸入的中文文本進行分詞,將詞語作為文本表示的基本單元,然后利用構建的停用詞表將停用詞進行過濾。
(2)詞嵌入層。將經(jīng)過分詞后的中文文本輸入到詞嵌入層,獲取以向量形式表示的文本。
Fig.1 Hybrid model structure based on CNN and Bi-LSTM圖1 基于CNN與Bi-LSTM 的混合模型結構
(3)特征提取層。特征提取層包含兩條通道:一條通道把以向量形式表示的文本通過CNN 模型,實現(xiàn)文本局部特征提??;另一條通道把以向量形式表示的文本通過Bi-LSTM 模型,實現(xiàn)文本全局特征提取。
(4)特征融合層。將局部特征和全局特征進行融合,生成全新的特征向量。
(5)全連接層。將融合的特征向量輸入全連接層生成特定維度的向量。
(6)Softmax 層。將全連接層的輸出向量送入Softmax函數(shù)中實現(xiàn)分類。
本文所做的文本預處理工作主要包括:分詞和停用詞過濾。在中文里,詞語是最小的能夠獨立運用的語言單位。不同于英文等語言,中文的詞語之間并沒有空格這種明顯的標志以確定詞語的邊界,因此在文本表示之前,必須先將文本切分成詞語。本文選擇使用Jieba 分詞工具實現(xiàn)分詞[17]。Jieba 分詞具有精確模式、全模式、搜索模式3種模式。其中,精確模式能夠試圖將句子最精確地切開,最適合文本分析,因此將Jieba 分詞設置為精確模式。經(jīng)過Jieba分詞的中文語句如表1所示。
Table 1 Jieba word segmentation result display表1 Jieba分詞結果展示
除要完成分詞工作,在預處理階段還需要將停用詞進行過濾。停用詞指那些在文本中頻繁出現(xiàn)的,但卻對文本類別判斷幫助不大的詞語。將無用的停用詞進行過濾,能夠減少文本中的“噪聲”,節(jié)省存儲空間,提升文本分類效率。目前,哈工大停用詞表、百度停用詞表、四川大學機器智能實驗室停用詞表等一些主流的中文停用詞表已被公開,并廣泛應用于自然語言處理相關的各項任務中。但這些停用詞表并非在所有任務上都通用,例如,百度停用詞表中包含的“高興”和“哈哈”等詞可以表達喜悅的情感,在情感分類時,如果將這些詞語當作停用詞過濾,會直接影響到分類結果。因此,在面對不同的處理任務時,需要設置不同的停用詞表。本文結合后續(xù)實驗語料實際情況,對已經(jīng)公開的停用詞表進行篩選,確定實驗使用的停用詞表,并完成停用詞過濾。
文本必須要轉換成計算機能夠識別和計算的向量形式,才能輸入深度學習模型中進行特征提取。目前,將文本轉化成向量的方法有很多,常見的有one-hot、tf-idf、ngram、Glove[18]和Word2vec[19]等。本文選擇能夠訓練出低維稠密的詞向量,并且詞向量能夠體現(xiàn)詞語之間語義相似度的Word2vec 模型對文本中的詞語進行表示。Word2vec是目前文本分類領域最常用的一種分布式文本表示方法,由谷歌的Mikolov 等人于2013年提出。Word2vec的本質是一個淺層的神經(jīng)網(wǎng)絡模型。按照訓練方法不同,Word2vec可以分為CBOW 模式和Skip-Gram 模式[20]。CBOW 模式是根據(jù)上下文的詞預測目標詞,而Skip-Gram 模式是根據(jù)目標詞預測上下文。CBOW 模式訓練速度較快,但從表達語義信息的準確性方面看,Skip-gram 的模式效果更好。因此,本文最終使用Skip-Gram 模式完成詞向量訓練。Skip-Gram 模型結構如圖2所示。
Fig.2 Skip-Gram model structure圖2 Skip-Gram 模型結構
文本的局部特征主要由CNN 模型進行提?。ㄒ妶D3),CNN 通道主要由卷積層和池化層兩部分構成。
Fig.3 CNN model structure圖3 CNN模型結構
在卷積層,首先需要使用不同尺寸的卷積核對已經(jīng)向量化的文本進行卷積操作。卷積操作指每個卷積核都按照一定的步長對輸入的文本矩陣進行掃描,計算出文本矩陣被掃描到的當前區(qū)域和卷積核之間的點積,生成特征矩陣。不同尺寸的卷積核代表著不同大小的感受野,使用不同尺寸的卷積核進行卷積能夠提取出更加豐富的局部語義信息。
為了提高模型表達能力,經(jīng)過卷積操作提取出的文本特征矩陣還必須要經(jīng)過激活函數(shù)進行非線性轉化。本文選擇ReLU 作為激活函數(shù),與其他激活函數(shù)相比,ReLU 函數(shù)沒有復雜的指數(shù)運算,收斂速度較快,還能夠在一定程度上解決梯度消失問題。ReLU 函數(shù)的計算公式如式(1)所示。
在池化層,需要對卷積層輸出的特征作進一步篩選,從而降低特征維度。本文選擇最大池化對文本特征矩陣進行池化操作,即只取出特征矩陣中最突出的一個特征,舍棄其他特征。經(jīng)過池化后,從卷積層輸出的原本維度不同的特征向量能夠被轉化成同一維度。
文本的全局特征主要由Bi-LSTM 模型進行提取。LSTM 模型是一種特殊的RNN,它通過引入“門控機制”對傳送過來的信息進行篩選,這在一定程度上緩解了傳統(tǒng)RNN 非常容易出現(xiàn)的“梯度消失”和“梯度爆炸”問題。LSTM 模型內部結構如圖4所示。
Fig.4 LSTM model structure圖4 LSTM 模型結構
可以看出,LSTM 模型中主要由3 個不同的“門”和1 個“記憶細胞”構成。3個不同的“門”指“忘記門”“輸入門”和“輸出門”。
“忘記門”決定了什么信息應該被刪除,不能夠繼續(xù)傳送下去,其公式如式(2)所示。其中,ht-1是上一時刻隱藏層傳入的信息,xt是當前時刻輸入的信息。
“輸入門”決定了什么信息應當留下繼續(xù)傳遞給“記憶細胞”,其公式如式(3)所示。
經(jīng)過“輸入門”的篩選,此時“記憶細胞”會進行更新,其公式如式(4)所示。其中,Ct-1是上一時刻的記憶細胞所存儲的信息。
“輸出門”決定了什么信息應當保留被輸出。其公式如式(5)所示。
當前時刻隱藏狀態(tài)的信息,需要輸出傳送給下一時刻的LSTM 單元,由ot和記憶細胞共同決定,其公式如式(6)所示。
LSTM 模型通過設計能夠對信息進行選擇性的“記憶”與“更新”,但其在當前時刻只考慮到了上文信息,并沒有考慮到下文信息。Bi-LSTM 模型通過將一個前向的LSTM模型和一個后向的LSTM 模型進行疊加,實現(xiàn)了文本上下文信息的同時獲取。Bi-LSTM 模型結構如圖5所示。
Fig.5 Bi-LSTM model structure圖5 Bi-LSTM 模型結構
Bi-LSTM 模型在t時刻的隱藏狀態(tài)ht是由t時刻前向LSTM 模型的隱藏狀態(tài)和后向LSTM 模型的隱藏狀態(tài)共同拼接而成。拼接具體實現(xiàn)如式(7)所示。
利用Bi-LSTM 模型特征提取最終是為了進行文本分類,因而并不需要采集Bi-LSTM 模型每一時刻的輸出,只需將Bi-LSTM 模型最后一個時刻的輸出提取出來作為特征。最后一個時刻的輸出示包含了上下文語義信息的特征。與CNN 模型、LSTM 模型相比,Bi-LSTM 模型能夠挖掘出更加豐富的全局語義信息。
常用的特征向量融合方法有:拼接、按位相加、平均等。將特征向量直接進行拼接,能夠有效保留文本的原始特征,避免特征減損。因此,本文選擇將CNN 模型所提取文本的局部特征和Bi-LSTM 模型提取出的全局特征拼接成為一個特征向量,代表當前文本特征。假設CNN 模型提取出的特征是Fc,Bi-LSTM 模型提取的特征是Fl,這兩個特征經(jīng)過拼接生成新的特征F,計算公式如式(8)所示。其中,⊕ 表示向量拼接操作。
經(jīng)過融合的特征需要先傳入全連接層。全連接層的主要作用是將特征向量經(jīng)過線性運算整合成任意維度的向量。后續(xù)要使用Softmax 分類器進行分類,因而此處輸出向量的維度必須與分類的類別數(shù)相同。特征向量經(jīng)過壓縮后,再傳入Softmax 層就可以實現(xiàn)分類。這一過程,可以用式(9)表示。其中,F(xiàn)是經(jīng)過融合后的特征,Wc是全連接層的權重,bc是偏置值,y表示預測的分類結果。
Softmax 函數(shù)能夠將輸入的數(shù)據(jù)進行歸一化,即將輸入轉換成0~1 的概率。其中,概率值最大的一類,即為預測結果。
為了驗證本文提出模型的有效性和適用性,本文選擇使用復旦大學中文文本分類語料和譚松波酒店評論語料作為實驗數(shù)據(jù),分別進行實驗。
復旦大學中文文本分類語料是一個多分類語料,包括農業(yè)、電腦、環(huán)境、體育等20 個類別,各類別數(shù)據(jù)不均衡。該語料共包含19 637 條數(shù)據(jù),其中訓練集9 804 條,測試集9 833 條。本文從中抽取數(shù)據(jù)量最多6 個類別,共計14 951條數(shù)據(jù)進行實驗。
譚松波酒店評論語料是從攜程網(wǎng)上自動采集,并經(jīng)過整理形成的二分類情感語料。該語料共計10 000 條,其中正向情感7 000 條,負向情感3 000 條,語料本身并沒有進行訓練集和測試集劃分。本文從中抽取5 000 條正向數(shù)據(jù)和3 000條負向數(shù)據(jù)進行實驗。
將篩選整理后的數(shù)據(jù)以6∶2∶2 的比例重新劃分成訓練集、驗證集和測試集,形成最終實驗數(shù)據(jù)。實驗數(shù)據(jù)劃分情況如表2所示。
Table 2 Division of experimental data表2 實驗數(shù)據(jù)劃分
為了提高模型訓練速度,本文選擇使用GPU 進行加速運算。具體實驗環(huán)境配置如表3所示。
Table 3 Experimental environment表3 實驗環(huán)境
衡量分類模型性能的常用評價指標有:準確率(Accuary)、精確率(Precision)、召回率(Recall)、F1 值(F1-score)等。假設當前分類為二分類,根據(jù)文本真實標簽和分類模型預測標簽,經(jīng)過實驗后的文本可以實際被劃分為TP、FP、TN 和FN 4 種情況。TP 代表實際標簽為正,模型預測也為正的文本數(shù);FP 代表標簽為負,但是模型預測卻為正的文本數(shù);TN 代表實際標簽為負,模型預測也為負的文本數(shù);FN 代表實際標簽為負,但是模型預測卻為負的文本數(shù)。
準確率、精確率、召回率和F1 值的計算公式如式(10)—式(13)所示。
可以看出:①準確率這一指標雖然能夠非常直觀地展示出分類正確的樣本數(shù)量占樣本總數(shù)的比例,但在各類別樣本數(shù)量特別不均衡的情況下,樣本量大的類別會絕對主導準確率大??;②精準率和召回率此消彼長;③F1 值充分考慮了精確率和召回率這兩項評價標準,是精確率和召回率的調和平均數(shù),用F1值評價模型較為客觀。
綜上所述,本文選擇使用準確率和F1 值作為此次實驗的評價指標。
為避免單次實驗可能存在的偶然性和誤差,使實驗結果更具說服力,本文將每次實驗重復5 次,取5 次實驗結果的平均值作為最終結果。
2.4.1 模型參數(shù)選擇實驗
深度學習模型參數(shù)設置非常關鍵,合適的參數(shù)能夠幫助模型提升分類性能。為了使基于CNN 與Bi-LSTM 的混合模型獲得最好的分類效果,本文選擇對模型中的部分參數(shù)進行實驗確定。模型參數(shù)選擇的實驗數(shù)據(jù)使用譚松波酒店評論語料。
(1)Word2vec 詞向量維度選擇。為了訓練出具有更好表征能力的高質量詞向量,本文主要針對Word2vec模型中的詞向量維度進行實驗。將Skip-Gram 模式下訓練出的不同維度的詞向量送入本文構建的混合模型中進行實驗,實驗結果如圖6所示。
由實驗結果可知,詞向量維度并不是越大越好。在Skip-Gram 模式下進行訓練時,詞向量維度等于300 時,分類準確率最高。因此,本文將Word2vec模型的詞向量維度設置為300。
(2)隱藏層單元個數(shù)選擇。隱藏層單元個數(shù)是Bi-LSTM 模型中的一個重要參數(shù)。本文將Bi-LSTM 模型中隱藏層單元個數(shù)設置為64、128 和256 分別進行實驗,實驗結果如圖7所示。
Fig.6 Experimental results of dimension selection of word2vec圖6 word2vec詞向量維度選擇實驗結果
Fig.7 Experimental results of number selection of hidden layer cells圖7 隱藏層單元個數(shù)選擇實驗結果
由實驗結果可知,隱藏層神經(jīng)單元個數(shù)為128 時,模型準確率最高。因此,本文將混合模型的隱藏層單元個數(shù)設置為128。
(3)卷積核數(shù)量選擇。卷積核數(shù)量指進行卷積操作的卷積核個數(shù),卷積核數(shù)量決定著生成的特征圖數(shù)量。但并不是卷積核個數(shù)越多就越好,卷積核個數(shù)過多很容易造成模型過擬合。本文將每種卷積核數(shù)量設置為64、128 和256分別進行實驗,實驗結果如圖8所示。
Fig.8 Experimental results of convolution kernel number selection圖8 卷積核個數(shù)選擇實驗結果
從上述實驗結果可知,當每種尺寸卷積核個數(shù)設置為256 時,模型準確率最高。因此,本文將混合模型中每種卷積核個數(shù)設置為256。
除以上經(jīng)過實驗確定的參數(shù)外,模型中還有卷積核尺寸、學習率、批大小等參數(shù)需進行設置。本文參考相關文獻[21],將模型其余參數(shù)進行設置,設置情況如表4所示。
Table 4 Model parameter settings表4 模型參數(shù)設置
2.4.2 特征融合對比實驗
為了驗證基于向量拼接的特征融合方法的有效性和優(yōu)越性,本文將其與向量按位相加、向量按位相加后平均這兩種融合方法進行對比實驗。兩個向量能夠進行按位相加的前提條件是向量維度相同。CNN 模型提取出的特征Fc的維度與卷積核個數(shù)有關,Bi-LSTM 模型提取出的特征Fl與隱藏單元個數(shù)有關,兩種特征向量的維度并不相同。為了讓這兩種向量轉換為同一維度,實現(xiàn)按位相加,將CNN 模型提取出的特征Fc進行線性變換,轉換成與特征Fl維度相同的向量。線性變換中的參數(shù)通過模型訓練確定,特征融合對比實驗數(shù)據(jù)使用譚松波酒店評論語料。實驗結果如表5所示。
Table 5 Experimental results of feature fusion comparison表5 特征融合對比實驗結果
從以上實驗結果可知,使用向量拼接方法,得到的分類準確率和F1 值最高。該方法能夠有效保留文本的原始特征,避免特征減損。
2.4.3 分類模型對比實驗
為了驗證基于CNN 與Bi-LSTM 的混合模型的有效性和優(yōu)越性,本文選擇了多個常用于文本分類的機器學習模型和深度學習模型作為對比模型進行實驗。分類模型對比實驗分別在譚松波酒店評論語料和復旦大學中文文本分類語料上進行。面對不同的實驗語料,混合模型的參數(shù)設置保持不變,與模型參數(shù)選擇實驗確定的參數(shù)保持一致。
(1)機器學習模型。本文主要選取KNN、NB 和SVM 這3 種機器學習模型作為對比模型。這3 種模型都是先進行預處理,再利用TF-IDF 實現(xiàn)文本向量化,然后送入機器學習模型中實現(xiàn)分類。其中,KNN 中的K 值設定為11,SVM的核函數(shù)設定線性核函數(shù)。
(2)深度學習模型。本文主要選取CNN、LSTM、GRU、Bi-LSTM 和 RCNN 這5 種深度學習模型作為對比模型。這5 種模型都是先進行預處理,再使用Word2vec 模型實現(xiàn)文本向量化,然后將訓練好的詞向量送入深度模型中提取特征,最后將特征送入Softmax 函數(shù)中實現(xiàn)分類。這些深度學習對比模型的參數(shù)設置和本文構建的混合模型參數(shù)設置保持一致。對比實驗結果如表6所示。
Table 6 Experimental results of classification model comparison表6 分類模型對比實驗結果
從上述實驗結果可知:①在文文本分類這一任務上,大部分深度學習模型的分類效果是優(yōu)于傳統(tǒng)機器學習模型的;②在3 種機器學習模型中,SVM 模型的分類效果最好,在酒店評論數(shù)據(jù)集上,SVM 模型取得了較高的準確率和F1 值,超越了深度學習模型LSTM;③在5 種深度學習對比模型中,CNN 模型和RCNN 模型分類效果最好,LSTM 模型分類效果最差,可能是因為本文進行實驗的語料偏短,導致LSTM 模型在一定程度上無法充分發(fā)揮其捕捉全局信息的優(yōu)勢;④本文構建的基于CNN 與Bi-LSTM 的混合模型在中文文本分類這一任務上的表現(xiàn)優(yōu)于其他對比模型,將局部特征和全局特征進行融合能夠在一定程度上有效提升文本分類準確率和F1值。
本文提出一種基于CNN 與Bi-LSTM 混合模型的中文文本分類方法,該方法能夠有效挖掘出文本的深層次語義特征,改善了CNN 模型難以獲取文本全局特征和Bi-LSTM難以獲取局部特征的問題。將本文提出的模型與常用于文本分類的機器學習模型及深度學習模型進行實驗對比,實驗結果表明,基于CNN 與Bi-LSTM 混合模型的文本分類方法能夠有效提升中文文本分類準確性。在未來研究中,嘗試將注意力機制加入模型,進一步提高模型適用性和分類準確性。