孟彩霞 董婭婭
(西安郵電大學(xué) 西安 710000)
隨著社交媒體平臺(tái)的迅速發(fā)展和電商平臺(tái)運(yùn)營模式的不斷提升,互聯(lián)網(wǎng)上產(chǎn)生了大量個(gè)人觀點(diǎn)及產(chǎn)品評論的數(shù)據(jù)。這些海量的非結(jié)構(gòu)化的文本數(shù)據(jù),潛藏著互聯(lián)網(wǎng)用戶對客體的評判態(tài)度和情感狀態(tài),收集并分析這些評判態(tài)度和情感狀態(tài)信息,對個(gè)人、商業(yè)組織和國家政府都有重要作用。情感分析是自然語言處理和數(shù)據(jù)挖掘領(lǐng)域的一個(gè)熱門話題[1],通過分析文本中的語義信息,挖掘出其蘊(yùn)含的情感傾向,有助于用戶有效地獲取所需要的情感信息。
傳統(tǒng)的情感分析方法采用了人工設(shè)計(jì)的表征方式和人工選擇的特征,存在人工成本較高、系統(tǒng)的泛化性和遷移性差等問題。隨著深度學(xué)習(xí)領(lǐng)域的高速發(fā)展,很多研究者試圖采用深度學(xué)習(xí)的方法自動(dòng)完成數(shù)據(jù)表征和特征提取,能夠很好地彌補(bǔ)傳統(tǒng)方法的缺陷。深度學(xué)習(xí)的概念最早由Hinton等[2]提出,通過建立深層神經(jīng)網(wǎng)絡(luò),組合低層特征形成更加抽象的高層特征以發(fā)現(xiàn)數(shù)據(jù)的分布式特征表示。卷積神經(jīng)網(wǎng)絡(luò)是目前應(yīng)用最為廣泛的一種深度學(xué)習(xí)結(jié)構(gòu)。Kim[3]提出使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行句子建模,解決文本分類任務(wù),在多個(gè)數(shù)據(jù)集上均取得了較為不錯(cuò)的結(jié)果。陳釗等[4]提出將詞語情感特征結(jié)合卷積神經(jīng)網(wǎng)絡(luò)(WFCNN,Word Feature Convolutional Neural Networks)的情感分類方法,取得了比目前主流的卷積神經(jīng)網(wǎng)絡(luò)更高的準(zhǔn)確率。劉龍飛等[5]分別使用字向量和詞向量作為原始特征,使用卷積神經(jīng)網(wǎng)絡(luò)來進(jìn)行微博情感傾向分析。杜昌順等[6]基于卷積神經(jīng)網(wǎng)絡(luò)模型分析文本的情感傾向,考慮到句子的結(jié)構(gòu)信息,采用分段池化的策略分段提取句子不同結(jié)構(gòu)的主要特征。這些方法在不同程度上提高了卷積神經(jīng)網(wǎng)絡(luò)的特征提取能力,但沒有考慮到卷積神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練速度。
為了進(jìn)一步提高卷積神經(jīng)網(wǎng)絡(luò)的特征提取能力并加快模型的訓(xùn)練速度,本文提出一種分解卷積神經(jīng)網(wǎng)絡(luò)模型并將其用于中文情感分類:首先訓(xùn)練出數(shù)據(jù)集中每個(gè)詞的詞向量,將其組合成二維矩陣作為卷積神經(jīng)網(wǎng)絡(luò)的輸入特征;然后在卷積層使用多個(gè)卷積通道并使用分解卷積操作提高卷積神經(jīng)網(wǎng)絡(luò)的特征提取能力及訓(xùn)練速度;隨后使用池化操作從每張?zhí)卣鲌D中找出最具代表性的局部最優(yōu)特征;最后通過全連接層來完成情感的分類。本文提出的方法不依賴于其他任何特定的領(lǐng)域知識和復(fù)雜的詞性標(biāo)注等操作,實(shí)驗(yàn)結(jié)果取得了比目前主流的卷積神經(jīng)網(wǎng)絡(luò)更好的性能,顯示了本文方法的有效性。
卷積神經(jīng)網(wǎng)絡(luò)是目前應(yīng)用最為廣泛的一種深度學(xué)習(xí)結(jié)構(gòu),具有學(xué)習(xí)復(fù)雜、高維和非線性映射關(guān)系的能力。卷積神經(jīng)網(wǎng)絡(luò)的基本框架由卷積層、采樣層和全連接層堆疊而成,每一層的輸出為下一層的輸入。卷積層通過卷積核運(yùn)算產(chǎn)生特征圖;采樣層對卷積層產(chǎn)生的特征圖進(jìn)行采樣,提取局部最優(yōu)特征生成特征映射圖;采樣層輸出的結(jié)果經(jīng)拼接作為全連接層的輸入,然后利用softmax輸出分類結(jié)果。
卷積神經(jīng)網(wǎng)絡(luò)具備獨(dú)特的二維數(shù)據(jù)處理方式,現(xiàn)已在多個(gè)領(lǐng)域得到廣泛應(yīng)用。Seimanet等[7]設(shè)計(jì)了一個(gè)5層的CNN,并且使用多層卷積層的輸出作為全連接的輸入,在門牌號識別的問題上取得較好的精度。Du等[8]提出基于卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征的提取,對在線的手寫漢字進(jìn)行識別。Yang等[9]提出一種深度卷積神經(jīng)網(wǎng)絡(luò)的人臉檢測模型,使用卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)得到局部人臉映射圖并計(jì)算候選框圖像的局部人臉得分,從而檢測人臉。Guo等[10]提出將卷積神經(jīng)網(wǎng)絡(luò)和隱馬爾可夫模型(HMM)結(jié)合起來,自然場景的文字識別中得到了非常好的效果。
對于情感分析而言,基于卷積神經(jīng)網(wǎng)絡(luò)的方法在建模、解釋、表達(dá)能力以及優(yōu)化等方面優(yōu)勢比較明顯[11],使用卷積神經(jīng)網(wǎng)絡(luò)模型能夠挖掘出文本所蘊(yùn)含的更深層次的自然語言信息。蔡慧蘋等[12]將word embedding與卷積神經(jīng)網(wǎng)絡(luò)結(jié)合來解決中文的情感分類問題。Kalchbrenner等[13]提出了一種DCNN(Dynamic Convolutional Neural Network)的網(wǎng)絡(luò)模型,使用了一種動(dòng)態(tài)池化的方法,能夠處理可變長度的輸入。馮多等[14]提出CNNSC模型對中文微博進(jìn)行情感分析,考慮到中文的特殊性,研究了不同語義單元對CNNSC分類效果的影響。Johnson等[15]及Zhang等[16]使用CNN進(jìn)行文本分類,并進(jìn)行了特殊場景下的改良。這些工作表明了卷積神經(jīng)網(wǎng)絡(luò)在領(lǐng)域中具有廣闊的應(yīng)用前景。
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)是單通道的卷積層堆疊而成的,并且每層只用一個(gè)固定大小的卷積核。由于使用不同大小的卷積窗口能夠提取出含有不同信息的特征,為了充分地提取特征并降低特征提取過程中的偶然性,如圖1所示,本文設(shè)置多個(gè)卷積通道并使用不同的卷積窗口,從而提取出不同粒度大小的局部特征,再把這些特征結(jié)合起來。
圖1 多個(gè)不同尺寸的卷積核
通過這樣網(wǎng)絡(luò)提取到的特征優(yōu)于使用單一卷積核,但其在網(wǎng)絡(luò)訓(xùn)練的過程中,參數(shù)量遠(yuǎn)大于使用單一卷積核,過高的參數(shù)計(jì)算量會(huì)使得模型效率低下。為此本文提出一種分解卷積的方法,如圖2所示。
圖2 卷積操作
如圖2(a)所示,使用傳統(tǒng)卷積操作,當(dāng)輸入維度為6×6,使用卷積窗口為3×3進(jìn)行特征提取后,生成4×4的特征映射圖。如圖2(b)所示,使用分離卷積操作,輸入維度為6×6,先將3×3的卷積窗口分解成1×3和3×1的卷積窗口,使用卷積窗口為1×3進(jìn)行特征提取后,生成4×6的特征映射圖,然后使用卷積窗口為3×1進(jìn)行特征提取后,也生成4×4的特征映射圖。然而3×3的卷積窗口需要訓(xùn)練9個(gè)參數(shù),而1×3和3×1的卷積窗口需要訓(xùn)練6個(gè)參數(shù)。當(dāng)輸入維度以及需要輸出的維度較大時(shí),分離卷積操作能夠明顯降低需要訓(xùn)練的參數(shù),使得模型的訓(xùn)練時(shí)間明顯降低。
當(dāng)使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像識別時(shí),由于像素矩陣中的每一個(gè)像素點(diǎn)與其四周的像素點(diǎn)有關(guān),所以卷積核在像素矩陣的行和列同時(shí)進(jìn)行卷積操作。對于文本矩陣而言,行與行之間具有語序特征,不同維度之間具有不同的語義信息。因此,使用分解卷積操作進(jìn)行文本特征提取,在加快模型訓(xùn)練速度的同時(shí)能夠提高卷積神經(jīng)網(wǎng)絡(luò)的提取文本特征的能力,能較好地保留文本最初的語義和語序特征。
本文所提出的分解卷積神經(jīng)網(wǎng)絡(luò)模型的具體結(jié)構(gòu)如圖3所示。
圖3 分解卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
1)輸入層
給定一段長度為L的文本s,wi為s中的第i個(gè)詞所對應(yīng)的d維詞向量,那么文本s在輸入層可以表示為一個(gè)L×d的二維矩陣w1:L,
本文所使用的數(shù)據(jù)集中最長評論為119個(gè)詞語,詞向量維度為300維,即L=119,d=300。對于長度小于L的句子,進(jìn)行補(bǔ)零處理。
2)卷積層
即特征提取層,對輸入層的二維矩陣進(jìn)行特征提取。其原理是通過卷積核對不同區(qū)域進(jìn)行相同的信息轉(zhuǎn)換,將局部的特征泛化,從而保留整體的特征。對輸入層的L×d矩陣w1:L進(jìn)行特征提取時(shí),首先使用1×d卷積運(yùn)算濾波器對于句子中的每個(gè)詞xj進(jìn)行卷積操作,然后加上相對的偏置,最后通過一個(gè)非線性激活函數(shù)生成相應(yīng)的特征mij:
其中?是元素乘法,b為偏置,f為激活函數(shù)。常用的激活函數(shù)有sigmoid、Relu等。由于卷積神經(jīng)網(wǎng)絡(luò)采用反向傳播算法來訓(xùn)練參數(shù)值,而sigmoid函數(shù)在反向傳播求導(dǎo)時(shí)要進(jìn)行除法運(yùn)算,計(jì)算量相對來說比較大。因此本文采用Relu函數(shù)作為激活函數(shù)。Relu具有稀疏激活性的特點(diǎn),使得部分神經(jīng)元的輸出值為0,從而減少參數(shù)間的依存關(guān)系,能夠有效地避免模型訓(xùn)練出現(xiàn)過擬合現(xiàn)象。
當(dāng)卷積運(yùn)算濾波器對整個(gè)輸入矩陣逐個(gè)進(jìn)行卷積后,會(huì)得出特征映射圖mi∈?L:
然后使用ki×1的卷積運(yùn)算濾波器對特征映射圖mi進(jìn)行卷積操作,生成新的特征cij和特征映射圖ci:
3)池化層
將卷積層提取出的特征進(jìn)一步聚合,起到二次提取特征的作用。最大池化是最常用的一種操作,即取局部接受域中最突出的特征,舍棄其他弱的此類特征,生成特征值為:
4)全連接層
池化層輸出的結(jié)果經(jīng)拼接之后為文本的最終表達(dá),將其作為全連接層的輸入,然后利用softmax輸出分類結(jié)果。根據(jù)訓(xùn)練數(shù)據(jù)的實(shí)際分類標(biāo)簽,采用反向傳播算法對卷積神經(jīng)網(wǎng)絡(luò)的卷積核和偏置矩陣進(jìn)行不斷更新。
本文所完成的實(shí)驗(yàn)均在如表1所示的實(shí)驗(yàn)環(huán)境中進(jìn)行。
表1 實(shí)驗(yàn)環(huán)境及配置
實(shí)驗(yàn)所使用的數(shù)據(jù)來自京東的商品評論。該數(shù)據(jù)集經(jīng)過去重、分詞和去停用詞等預(yù)處理工作后,共10000條評論樣本,其中商品的正面評論和負(fù)面評論各5000條。
為測試模型的性能,對基本的卷積神經(jīng)網(wǎng)絡(luò)(CNN)與本文提出的分解卷積神經(jīng)網(wǎng)絡(luò)(FCNN)進(jìn)行實(shí)驗(yàn)對比。對于CNN模型和FCNN模型都使用三個(gè)卷積通道并使用不同的卷積窗口進(jìn)行特征提取。網(wǎng)絡(luò)的超參數(shù)具體值設(shè)置如表2所示。
表2 卷積神經(jīng)網(wǎng)絡(luò)參數(shù)設(shè)置
本文針對每個(gè)模型進(jìn)行10次實(shí)驗(yàn),每次實(shí)驗(yàn)取9份為訓(xùn)練集,1份為測試集,取10次實(shí)驗(yàn)結(jié)果的均值為模型最終的分類準(zhǔn)確率。CNN模型和FCNN模型實(shí)驗(yàn)結(jié)果如圖4所示。
圖4 不同模型的準(zhǔn)確率
從圖4的實(shí)驗(yàn)結(jié)果可以明顯看出,F(xiàn)CNN較CNN具有更高分類準(zhǔn)確率。取10次實(shí)驗(yàn)結(jié)果的均值CNN的準(zhǔn)確率為90.85%,而FCNN的準(zhǔn)確率達(dá)93.27%。這是由于本文提出的FCNN模型,能夠?qū)⑤^好地保留文本原始的語義和語序特征,有效地提高了模型的表達(dá)能力和分類性能。
為了進(jìn)一步分析FCNN模型的性能,這里分別選取CNN和FCNN其中一次的實(shí)驗(yàn)結(jié)果,如圖5所示。
圖5 收斂性對比曲線
由圖5可以看出,CNN模型在第10次迭代開始收斂,而本文提出的FCNN模型在第6次開始收斂,本文提出的FCNN模型具有較好的收斂性。
本文提出一種分解卷積神經(jīng)網(wǎng)絡(luò)模型,并將其應(yīng)用于文本情感分析中。實(shí)驗(yàn)結(jié)果表明,與目前主流的卷積神經(jīng)網(wǎng)絡(luò)模型相比,本文提出的分解卷積神經(jīng)網(wǎng)絡(luò)模型表現(xiàn)出較好的性能。由于卷積神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,需要設(shè)置大量的參數(shù),因此下一步計(jì)劃對參數(shù)進(jìn)行優(yōu)化進(jìn)一步提高模型的性能。