李志杰,耿朝陽,宋 鵬
(西安工業(yè)大學(xué),計算機(jī)科學(xué)與工程學(xué)院,西安 710021)
互聯(lián)網(wǎng)的迅猛發(fā)展,帶來數(shù)據(jù)量的爆炸,電子文檔信息越來越多,怎樣對這些電子文檔進(jìn)行準(zhǔn)確的分類是一個非常重要的問題。文本分類是給一個文檔(一段文字)“粘上”一個或多個標(biāo)簽,以便對文檔進(jìn)行分類和管理。
由于文本的特殊性,傳統(tǒng)的文本分類模型的分類效果往往不夠理想,使用聯(lián)合模型進(jìn)行文本分類的分類效果較優(yōu)于單模型。文獻(xiàn)[1]提出了一種ATT-Capsule-BiLSTM模型,使用多頭注意力機(jī)制(Multi-head Attention),結(jié)合膠囊網(wǎng)絡(luò)(CapsuleNet)與雙向長短期記憶網(wǎng)絡(luò)(BiLSTM)方法對文本進(jìn)行多標(biāo)簽分類,有效的提升了分類的性能。文獻(xiàn)[2]將LSTM與其變型門控循環(huán)單元(Gated Recurrent Unit,GRU)也應(yīng)用于標(biāo)題的語義理解與領(lǐng)域分類,實(shí)驗(yàn)驗(yàn)證其性能可達(dá)81%的F1值。文獻(xiàn)[3]將卷積神經(jīng)網(wǎng)絡(luò)引入到了自然語言處理中的許多任務(wù),且都取得了良好的處理效果。文獻(xiàn)[4]提出了一種基于上下文的圖模型文本表示方法,使用一種類似于PageRank的圖模型來建立詞和詞之間的相互推薦關(guān)系,該方法克服了傳統(tǒng)文本表示認(rèn)為詞和詞之間相互獨(dú)立 ,忽略詞的上下文環(huán)境的缺陷。文獻(xiàn)[5]較全面地討論了貝葉斯方法、k近鄰方法和AdaBoost等3種中文文本分類方法,作者采用3個模型,實(shí)現(xiàn)了樸素貝葉斯分類器、k近鄰分類器和Adaboost分類器三個中文文本分類器,集成了一個實(shí)用性較強(qiáng)的實(shí)驗(yàn)系統(tǒng)。
上述作者在實(shí)驗(yàn)的過程中為了獲取文本信息,大多使用只能獲取單一文本特征的單模型,而這種單模型獲取到的文本信息在一定程度上并不能代表整個文本的信息[6-8]。近年來,一些學(xué)者在研究中為了獲取到更加豐富的文本信息,將單模型聯(lián)合起來組成聯(lián)合模型來對文本的信息進(jìn)行提取[9-10]。本文提出了將LSTM和TextCNN組成一個聯(lián)合模型,將兩個模型提取到的多層次、多特點(diǎn)的文本特征進(jìn)行融合來進(jìn)行分類實(shí)驗(yàn),并與傳統(tǒng)的TextCNN和LSTM模型進(jìn)行比較。
由于文本整體上沒有固定的格式,詞語間沒有明顯的區(qū)分標(biāo)記。因此在工作之前,必須對獲得的文本進(jìn)行相應(yīng)的處理才能進(jìn)行下一步的工作。
分詞是文本預(yù)處理中很重要的一個步驟,它是將連續(xù)的字序列按照一定的規(guī)范重新組合成此序列的過程,以方便對文本進(jìn)行向量化。國內(nèi)外有許多已成熟的分詞系統(tǒng),在這里采用jieba分詞組件,對文本進(jìn)行分詞處理,同時去掉無用的標(biāo)點(diǎn)符號和停留詞。
詞嵌入就是將字典中的單詞和詞組映射為實(shí)向量,是一種將文本中的詞匯轉(zhuǎn)化為數(shù)值向量的方法,由于文本不能被計算機(jī)直接識別這一特殊的性質(zhì),詞向量在自然語言的處理中就顯得異常的重要。用低維向量表示詞,可以避免矩陣稀疏的問題,同時可以捕捉詞的語義信息。
Word2Vec是由谷歌公司創(chuàng)建的無監(jiān)督模型組,以大型的文本語料為輸入,可以生成詞匯的向量空間,且空間維度低于One-hot,Word2Vec向量空間比One-hot更為稠密。Word2Vec提供了CBOW(Continuous Bag of Words)和Skip-gram兩種結(jié)構(gòu)。在 CBOW 結(jié)構(gòu)中 ,模型通過周圍的詞預(yù)測當(dāng)前詞。Skip-gram 模型訓(xùn)練的目標(biāo)是通過給定的當(dāng)前詞來預(yù)測周圍詞。在本文中選用Skip-Gram模型(如圖1所示)訓(xùn)練詞向量模型。其中WVN和WNV為權(quán)重矩陣。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)具有卷積層和池化層,可以對局部特征進(jìn)行提取。TextCNN是CNN的一個變型,它通過設(shè)置不同的過濾核的大小,可實(shí)現(xiàn)對不同大小的局部特征進(jìn)行提取,可以使得網(wǎng)絡(luò)模型提取到得特征向量具有多樣性且更具代表性。
TextCNN的模型示意圖如圖2所示。
圖2 TextCNN模型示意圖
圖2中,文本矩陣由詞向量組成,過濾器的卷核大小分別為2,3,4,經(jīng)過卷積池化得到特征向量,其維數(shù)=卷積核尺寸的個數(shù)×每種尺雨卷積核的個數(shù),TextCNN分為以下4層:
① 卷積層:在本文的TextCNN模型中,有卷積核大小為2、3、4的三個過濾器,可以分別提取不同的文本特征。過濾器將大小為3×3×1的節(jié)點(diǎn)矩陣變化為單位節(jié)點(diǎn)矩陣,假設(shè)以wix,y來表示對于輸出單位節(jié)點(diǎn)矩陣中的第i個節(jié)點(diǎn),過濾器輸入節(jié)點(diǎn)(x,y)的權(quán)重,使用bi表示第i個輸出節(jié)點(diǎn)對應(yīng)的偏置項(xiàng)參數(shù),那么單位矩陣中的第i個節(jié)點(diǎn)的取值a(i)為
(1)
其中cx,y為過濾器中節(jié)點(diǎn)(x,y)的取值;f為激活函數(shù)。所有a(i)組成的單位向量就是卷積層所得的特征圖記作A,A可以作為池化層的輸入。
② 池化層:池化層的匯合操作,可以讓模型更加關(guān)注某些特征而不是特征的具體位置,同時能夠得到降維的效果,減小計算量和參數(shù)的個數(shù),在一定程度上還能夠防止過擬合的發(fā)生。
③ 融合層:將3個池化層所得的特征進(jìn)行拼接,融合成一個對文本向量來說更具有代表性的向量。
④ 全鏈接層:通過在融合層之后加入隱含層和最后的Softmax層,來充當(dāng)一個分類器,對文本進(jìn)行最終的分類。
長短時記憶網(wǎng)絡(luò)(LSTM)是循環(huán)神經(jīng)網(wǎng)路的一個變型,它能學(xué)習(xí)長期依賴。LSTM靠一些“門”的結(jié)構(gòu)讓信息有選擇性的影響循環(huán)神經(jīng)網(wǎng)絡(luò)中每個時刻的狀態(tài),同時可有效的決定哪些信息應(yīng)被遺忘,哪些信息應(yīng)被保留,這一特性使得LSTM能夠獲取文本序列的長距離的特征的關(guān)系。
LSTM利用以特別方式交互的四個層的遞歸操作實(shí)現(xiàn)。c為單元的狀態(tài),i,f,o分別為輸入門、遺忘門和輸出門。LSTM的神經(jīng)單元以前一時間步的隱藏,狀態(tài)(輸出值)ht-1來計算當(dāng)前時間步的隱藏狀態(tài)h′t計算式為
(2)
式中:W,U為每個門的兩個權(quán)重矩陣;σ為Sigmoid函數(shù);?和⊕分別為向量的內(nèi)積和加法;g為內(nèi)部隱藏狀態(tài),用當(dāng)前的輸入xt和前一狀態(tài)ht-1來進(jìn)行計算。給定i,f,o和g,根據(jù)時間步(t-1)上的狀態(tài)ct-1,和遺忘門做乘法,得到時間步t的單元狀態(tài)ct;和輸出門做乘法,得到g。“門”利用Sigmoid函數(shù)進(jìn)行調(diào)節(jié),“門”輸出0到1之間的值。遺忘門為0時會忽略掉以前所有的記憶,輸出門為0時忽略掉新計算出的狀態(tài)。
從以上LSTM神經(jīng)單元的處理中,可以分析出它對以往的信息能夠進(jìn)行很好的記憶,同時對RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))出現(xiàn)的梯度消失的問題能夠有很好的解決。
由于本文研究的是分類問題,所以,在構(gòu)建LSTM模型時,在LSTM隱藏層之后添加了一個全鏈接層,之后再接輸出層。LSTM模型如圖3所示。
圖3中,MAX_SEN_LEN為輸入向量的長度,EMBE_SIZE為嵌入層的長度,HIDE_LAY_SIZE為LSTM模型中節(jié)點(diǎn)的個數(shù)。
在TextCNN模型中,通過設(shè)置不同卷積核的大小來提取不同大小區(qū)域的的特征,但是由于文本的特殊性,TextCNN還是不能夠獲取到不同文本特征之間的依賴關(guān)系,這樣取得的特征在一定程度上還是不能代表整個文本。長短時記憶網(wǎng)絡(luò)(LSTM)的記憶機(jī)制在處理長文本信息方面具有較大的優(yōu)勢,它對以往的信息能夠進(jìn)行很好的記憶。因此,在本文中,將LSTM模型與TextCNN模型進(jìn)行融合,取得的文本特征既有局部特征,同時還有全局特征。
在LSTM-TextCNN模型中,將相同的數(shù)據(jù)集分別交給LSTM和TextCNN進(jìn)行訓(xùn)練,會得到兩種不同的文本特征。將兩種模型得到的特征混合在一起,進(jìn)行進(jìn)一步的分類處理。
在LSTM-TextCNN模型中,設(shè)置損失函數(shù)為交叉熵?fù)p失函數(shù),交叉熵?fù)p失函數(shù)使模型的學(xué)習(xí)率能夠被輸出的誤差控制,且收斂速度快,能夠有效的避免學(xué)習(xí)率低的問題,同時使模型不陷入局部的最優(yōu)解。交叉熵的公式為
(3)
式中:C為代價;x為實(shí)際輸入;a為實(shí)際輸出;y為期望輸出;n為輸入的總數(shù)。
LSTM-TextCNN模型如圖4所示。
圖4 LSTM-TextCNN模型示意圖
Fig.4 Schematic diagram of an LSTM-TextCNN model
由于TextCNN模型獲取到的只是文本的局部特征,而LSTM模型獲取到的是文本更加長遠(yuǎn)的特征,兩種特征都能在一定程度上來代表整個文本。在LSTM-TextCNN模型的融合層,可以使用Keras框架里面的Concatenta()函數(shù)對兩個模型得到的特征進(jìn)行融合,這樣得到的特征向量C。C由兩部分拼接而成,前半部分記作C1,代表由TextCNN模型獲取到的文本特征,后半部分記作C2,代表由LSTM模型獲取到的文本特征。因此,由C1和C2融合(拼接)而成的特征向量C中既有文本的局部特征,又有全局特征。因此可以將C作為全鏈接層的輸入,來進(jìn)行文本最終的分類。
本論文所使用得數(shù)據(jù)來源于故障診斷手冊,里面的文檔在去除無用的格式信息之后,得到的文本信息專業(yè)性強(qiáng),且文本特征明顯,用此數(shù)據(jù)集訓(xùn)練得出的模型在對專業(yè)領(lǐng)域內(nèi)的文檔進(jìn)行分類整理有很大的參考作用。本數(shù)據(jù)集采集到的文檔包括10 000余個短文本樣本,將每個短文本作為單獨(dú)的一條數(shù)據(jù),按照文本的特征和結(jié)構(gòu),為其加上相應(yīng)的標(biāo)簽(單標(biāo)簽)。標(biāo)簽共分為5類,具體類別見表1。
表1 文本分類類別以及說明
將樣本按照9比1的比例分為訓(xùn)練集和測試集。對采集到的文檔進(jìn)行分詞、去停留詞和加標(biāo)注后,再選用基于20 GB(1 GB大約能存5億個漢字)百度百科詞條、12 GB搜狐新聞和90 GB小說合并的語料進(jìn)行訓(xùn)練得出的中文詞向量模型來得到文本向量,此模型是根據(jù)各種情景下的大量中文語料所訓(xùn)練的模型,由此生成的詞向量具有一定的普適性。
實(shí)驗(yàn)在深度學(xué)習(xí)框架Keras下完成。
TextCNN在第2層一共設(shè)置了6個卷積層,卷積核大小分別為2,3,4,且每個卷積核對應(yīng)的都有兩個卷積層。卷積層的輸入維度為(1,20,64),1代表深度為1。每個卷積層設(shè)置50個卷積核,且不使用全0填充。池化層的大小都設(shè)置為(2,2)。特征融合使用keras下的Concatenate函數(shù)將特征向量進(jìn)行拼接,將拼接后的特征向量記作C1。
在LSTM模型中,輸入維度為(20,64),同時將單元數(shù)量設(shè)置為50,這些單元都是并列的。將參數(shù)Droupout和Recurrent_droupout均設(shè)置為0.2。LSTM層的輸出維度為(20,3),后加Resahpe層將其寬度調(diào)整為C1的寬度,得到C2。需要注意的是由于LSTM的復(fù)雜性,模型訓(xùn)練所消耗的時間量非常大。因此融合之后的特征向量C由以下代碼所得。
C=Concatenta(axis=-1)([C1,C2])
特征向量C的前半部分是具有局部特征的特征向量C1,后半部分是具有局部特征的特征向量C2。這樣以來,特征向量C既具有文本的局部特征,又具有全局特征,因此其能更加全面的代表整個文本。
在得到特征向量C后,調(diào)用Flatten層將特征向量C拉平,后接節(jié)點(diǎn)數(shù)分別為250和125的兩個全鏈接層,再接節(jié)點(diǎn)數(shù)為5的softmax層。
為了體現(xiàn)本模型在數(shù)據(jù)集上的表現(xiàn),實(shí)驗(yàn)中,在相同數(shù)據(jù)集的情況下分別采用了LSTM、TextCNN以及LSTM-TextCNN 3種不同的模型對數(shù)據(jù)集進(jìn)行分類,實(shí)驗(yàn)步驟如下:
① 先對短文本語料進(jìn)行標(biāo)注,并進(jìn)行預(yù)處理,執(zhí)行數(shù)據(jù)清洗、分詞、去停用詞等操作。
② 對分詞結(jié)果用已訓(xùn)練好的(中文)Word2 Vec模型進(jìn)行向量化。
③利用LSTM、TextCNN及LSTM-TextCNN 3種不同的模型對數(shù)據(jù)集進(jìn)行分類,并計算準(zhǔn)確率。
不同模型的分類分類準(zhǔn)確率見表2。
表2 不同模型的準(zhǔn)確率
在不同模型的實(shí)驗(yàn)中,根據(jù)迭代步數(shù)在測試集上得到的準(zhǔn)確率曲線如圖5所示。
由圖5可知,在相同的數(shù)據(jù)集上,LSTM-TextCNN模型的分類準(zhǔn)確率明顯高于LSTM和TextCNN。主要原因?yàn)長STM-TextCNN能融合兩種模型提取到的不同的文本特征,而融合后的文本特征可以更加具體的代表整個文本。
圖5 不同模型準(zhǔn)確率
1) 本文將LSTM模型和TextCNN模型結(jié)合成一種LSTM-TextCNN聯(lián)合模型。通過收集故障診斷手冊中的文檔,并對文檔進(jìn)行相應(yīng)的預(yù)處理,利用Woed2Vec模型將語料映射成計算機(jī)可以識別的向量,且搭建LSTM-TextCNN模型,完成對模型的訓(xùn)練,并與LSTM和TextCNN單模型進(jìn)行了測試比較。
2) LSTM-TextCNN聯(lián)合模型的分類準(zhǔn)確率為83.3%,比TextCNN模型高4.2%,比LSTM模型高9.1%。文中方法獲取的信息更具有代表性,分類準(zhǔn)確率更高。