白曉雷,霍瑞雪
(國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)與信息安全管理中心河北分中心,河北 石家莊 050000)
目前,微博作為一個(gè)典型的自媒體社交工具,其每天會(huì)產(chǎn)生海量的話(huà)題與評(píng)論。如何利用自動(dòng)化方法對(duì)其進(jìn)行情感判定并提高準(zhǔn)確率成為一個(gè)重要問(wèn)題,尤其是針對(duì)反諷這一特殊的情感類(lèi)別。筆者在前期工作中使用了融合微博語(yǔ)言特征的詞袋模型進(jìn)行訓(xùn)練,但仍存在準(zhǔn)確率、召回率不高的問(wèn)題。因此,本文在前期工作的基礎(chǔ)上,基于微博數(shù)據(jù)采用融合微博融合語(yǔ)言特征的卷積神經(jīng)網(wǎng)絡(luò)模型對(duì)中文反諷識(shí)別進(jìn)行了研究。
Konstantin 等研究人員[1]基于英文語(yǔ)料在各種分類(lèi)模型下結(jié)合各種反諷特征進(jìn)行研究,發(fā)現(xiàn)人工選取的特征提高了反諷識(shí)別準(zhǔn)確率。Aniruddha Ghosh[2]等研究人員率先基于英文語(yǔ)料采用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)和長(zhǎng)短期記憶人工神經(jīng)網(wǎng)絡(luò)(Long Short-Term Memory,LSTM)來(lái)識(shí)別反諷,并得出深度學(xué)習(xí)方法優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)方法的結(jié)論。國(guó)內(nèi)山西大學(xué)盧欣等研究人員使用深度學(xué)習(xí)的方法對(duì)中文反諷識(shí)別進(jìn)行了研究[3],但實(shí)驗(yàn)結(jié)果依然存在準(zhǔn)確率等指標(biāo)不高的問(wèn)題。
本文在收集和分析海量微博反諷語(yǔ)句后,得出了主要4 種類(lèi)型的語(yǔ)言特征[4]。
(1)固定搭配,如“再……一點(diǎn)”,例子“重慶可以再濕一點(diǎn)嗎?我的衣服晾了兩天一件都沒(méi)干”。
(2)特定副詞,如“真有你的”,例子“欠錢(qián)逾期不還,找你要還這種態(tài)度,真有你的”。
(3)特定的語(yǔ)氣詞,如“呵呵”等,例子“呵呵,你竟然是這種人”。
(4)網(wǎng)絡(luò)梗。微博的用戶(hù)以年輕人為主,含有大量年輕人熟知的網(wǎng)絡(luò)梗,如“看這大神犀利的操作,我也是醉了”等。
本文在前期工作的基礎(chǔ)上先后共爬取了8 萬(wàn)余條微博的數(shù)據(jù),主要內(nèi)容為用戶(hù)評(píng)論信息,但這些文本信息存在大量的噪聲,如不規(guī)范的字符等。為濾除這些噪聲,本文在進(jìn)行訓(xùn)練前對(duì)文本數(shù)據(jù)進(jìn)行了預(yù)處理,如去掉特殊字符等。文本預(yù)處理后,人工對(duì)其進(jìn)行標(biāo)注。標(biāo)注方法僅區(qū)分反諷與非反諷(反諷標(biāo)1,非反諷標(biāo)0)。標(biāo)注完成后,統(tǒng)計(jì)其中有3 000 余條反諷語(yǔ)句。為平衡數(shù)據(jù)集,本文從反諷語(yǔ)句與非反諷語(yǔ)句中各抽取3 000 條共6 000 條作為數(shù)據(jù)集。
文本分類(lèi)通常使用卡方檢驗(yàn)或者TF-IDF 的方法進(jìn)行特征選擇,本文選擇使用卡方檢驗(yàn)的方式進(jìn)行特征選擇。卡方檢驗(yàn)是通過(guò)對(duì)特征進(jìn)行打分后排序,最后選擇排名靠前的特征來(lái)表示文本。
卡方檢驗(yàn)公式為:
式中,A為實(shí)際值,T為理論值。
針對(duì)反諷數(shù)據(jù)集進(jìn)行深入分析,人工提取了若干個(gè)特征,再通過(guò)計(jì)算這些特征卡方值得到的TOP5 如表1 所示。
表1 特征卡方統(tǒng)計(jì)值
詞嵌入向量是指把一個(gè)詞轉(zhuǎn)換為一個(gè)對(duì)應(yīng)的詞向量的過(guò)程。由于計(jì)算機(jī)無(wú)法識(shí)別文本信息,因此在利用機(jī)器學(xué)習(xí)的方式進(jìn)行文本訓(xùn)練時(shí),需要提前將文本轉(zhuǎn)化為詞向量。目前,常用的詞向量訓(xùn)練模型為Word2Vec 模型,其包含CBOW 模型和skip-gram 模型。本文選擇使用skip-gram 模型訓(xùn)練詞向量。
skip-gram 模型是從目標(biāo)詞w的上下文中選擇一個(gè)詞,將其詞向量組成上下文的表示。
對(duì)于整個(gè)語(yǔ)料而言,skip-gram 模型的目標(biāo)函數(shù)為:
式中,w為中心詞,Context(w)為文本環(huán)境,W為整個(gè)語(yǔ)料庫(kù)的詞語(yǔ)集。
3.4.1 卷積神經(jīng)網(wǎng)絡(luò)在文本處理上的應(yīng)用
卷積神經(jīng)網(wǎng)絡(luò)在文本上的應(yīng)用一般使用卷積操作處理詞向量,生成多個(gè)特征向量。對(duì)這些特征向量進(jìn)行最大或平均池化操作,得到相對(duì)應(yīng)的句子重要特征,最后池化操作得到的特征組合即為文本的向量表示。對(duì)于本文的反諷識(shí)別問(wèn)題,將其連接至softmax 層或sigmoid 層,即可構(gòu)建出完整的模型。
卷積神經(jīng)網(wǎng)絡(luò)一般由輸入層、卷積層、池化層、全連接層和輸出層構(gòu)成。輸入層一般將文本分詞并進(jìn)行詞向量轉(zhuǎn)換后形成的矩陣輸入至卷積神經(jīng)網(wǎng)絡(luò),如x(x1,x2,…,xn),其中xi∈Rk表示句子中的第i個(gè)詞的詞向量,向量維度為k。卷積層使用卷積核對(duì)x(x1,x2,…,xn)進(jìn)行運(yùn)算,卷積核矩陣為w∈Rh,k,其中h為卷積核處理詞的數(shù)量。卷積層運(yùn)算為:
式中,f為激活函數(shù),xi:i+h-1表示從第i到第i+h-1 個(gè)詞語(yǔ),b表示偏置量。經(jīng)過(guò)單個(gè)卷積核操作后得到特征向量c(c1,c2,…,cn-h+1),c的維度為n-h+1。
池化層采用最大池化的方式獲取特征向量c中數(shù)值最大的元素,每個(gè)特征向量池化后取其中一個(gè)最大值并舍棄其他值。經(jīng)過(guò)池化層操作后,得到特征信息c'(c'1,c'2,…,c'm):
全連接層將特征向量映射到向量z(zj)上,并輸入分類(lèi)器進(jìn)行分類(lèi)。根據(jù)softmax 公式得到各個(gè)類(lèi)別的概率分布p(yi|z;θ):
式中,θ為變量參數(shù),bj為偏置參數(shù),yi為分類(lèi)類(lèi)別。輸出層輸出概率最大的分類(lèi)類(lèi)別作為預(yù)測(cè)值。
3.4.2 模型結(jié)構(gòu)
本文使用的模型結(jié)構(gòu)如圖1 所示。該模型共分為6 個(gè)層,分別為輸入層、融合層、卷積層、池化層、全連接層和輸出層[5]。下面將對(duì)模型結(jié)構(gòu)進(jìn)行詳細(xì)介紹。
圖1 模型結(jié)構(gòu)
(1)輸入層。該層主要是把數(shù)據(jù)清洗后的微博句子與經(jīng)卡方檢驗(yàn)后選取的TOP20 的微博語(yǔ)言特征分別進(jìn)行分詞與詞向量轉(zhuǎn)換形成句子矩陣與特征矩陣,最后輸入到該模型。
(2)融合層。將特征矩陣與句子矩陣進(jìn)行融合。
(3)卷積層。對(duì)特征數(shù)據(jù)使用多個(gè)卷積核進(jìn)行卷積操作,由于CNN 處理文本時(shí)在矩陣的行方向移動(dòng)卷積核窗口無(wú)任何作用,因此卷積核的寬度即為特征向量維度。
(4)池化層。池化層用于接收卷積層提取的特征向量。選擇對(duì)這些特征向量進(jìn)行最大池化處理,以提取特征向量中更加重要的特征。采用最大池化處理能夠有效降低網(wǎng)絡(luò)訓(xùn)練參數(shù)和模型的過(guò)擬合程度。
(5)全連接層。全連接層在整個(gè)卷積神經(jīng)網(wǎng)絡(luò)中起到“分類(lèi)器”的作用,主要將學(xué)到的“分布式特征表示”映射到樣本標(biāo)記空間。
(6)輸出層。使用sigmoid 函數(shù)對(duì)待判定句子進(jìn)行反諷二分類(lèi)識(shí)別,輸出概率大于等于0.5 則打標(biāo)簽“1”(判定為反諷),若輸出概率小于0.5 則打標(biāo)簽“0”(判定為非反諷)。
3.5.1 模型參數(shù)
數(shù)據(jù)集中最長(zhǎng)的句子包含116 個(gè)詞,詞向量為300 維,數(shù)據(jù)集中的80%作為訓(xùn)練集,20%作為測(cè)試集。模型卷積窗口大小為3、4、5,每種窗口512個(gè),迭代次數(shù)為20 次,batch size 為32。由于模型按照此參數(shù)設(shè)置出現(xiàn)了過(guò)擬合現(xiàn)象,且無(wú)論如何調(diào)整這些參數(shù)過(guò)擬合現(xiàn)象均未得到改善。因此,加入dropout 參數(shù)(drop=0.5)與正則化,最終解決了過(guò)擬合問(wèn)題。以上所有參數(shù)均為多次調(diào)參后的最優(yōu)結(jié)果。
3.5.2 模型評(píng)估結(jié)果及分析
前期實(shí)驗(yàn)中,融合微博反諷特征的詞袋模型分別使用隨機(jī)森林分類(lèi)器、樸素貝葉斯分類(lèi)器、支持向量機(jī)分類(lèi)器的實(shí)驗(yàn)評(píng)估結(jié)果,分別如圖2、圖3和圖4 所示。本文使用的融合微博反諷特征的卷積神經(jīng)網(wǎng)絡(luò)模型評(píng)估結(jié)果如圖5 所示。如表2 所示,與融合微博反諷特征的詞袋模型使用傳統(tǒng)機(jī)器學(xué)習(xí)分類(lèi)器評(píng)估結(jié)果相比,本文使用的融合微博反諷特征的卷積神經(jīng)網(wǎng)絡(luò)模型精確率與召回率均有明顯提高,改善了反諷識(shí)別率較低的問(wèn)題。
圖2 融合反諷特征的隨機(jī)森林分類(lèi)器詞袋模型評(píng)估結(jié)果
圖3 融合反諷特征的樸素貝葉斯分類(lèi)器詞袋模型評(píng)估結(jié)果
圖4 融合反諷特征的支持向量機(jī)分類(lèi)器詞袋模型評(píng)估結(jié)果
圖5 融合反諷特征的卷積神經(jīng)網(wǎng)絡(luò)模型評(píng)估結(jié)果
表2 融合反諷特征前后訓(xùn)練結(jié)果對(duì)比
本文主要研究融合微博語(yǔ)言特征的卷積神經(jīng)網(wǎng)絡(luò)反諷文本識(shí)別模型,與前期工作中提出的融合微博語(yǔ)言特征使用傳統(tǒng)機(jī)器學(xué)習(xí)分類(lèi)器的詞袋模型相比,準(zhǔn)確率、召回率等指標(biāo)均有明顯提升。