夏輝麗,楊立身,薛 峰
(1.鄭州經(jīng)貿(mào)學(xué)院 計算機與人工智能學(xué)院,河南 鄭州 451191;2.河南理工大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,河南 焦作 454003)
近年來,社交數(shù)據(jù)在規(guī)模、種類和復(fù)雜性方面都在快速增長,因此大量網(wǎng)絡(luò)文檔(統(tǒng)稱為“推文”)的分類語義辨識及辨識準(zhǔn)確度是利用推文的重要依據(jù)[1,2]。
針對推文語義的情感分析,國內(nèi)外學(xué)者進行了大量的研究。文獻[3]基于Lexicon方法對已知情感進行編譯,在一定程度上降低了對情感詞典的依賴程度,但占用了大量計算資源;文獻[4]提出了一種在句子、語義層面進行情感分析的混合方法,提高了語義方向極辨識準(zhǔn)確度,但對語義情緒的要求較為嚴(yán)格;文獻[5]用表情符號分析了影響文本挖掘和情感分析的因素,但需要大量收集先驗情感“正面”和“負面”的文本數(shù)據(jù);文獻[6]提出了一種情感功能分類器,可以提高對未知情感分類的速度,但其分類結(jié)果誤差較大;文獻[7]基于支持向量機將推文分為“正面”和“負面”,但綜合性能有待進一步提升。綜上所述,現(xiàn)有研究難以對具有大量信息的推文的語義和情感進行快速、準(zhǔn)確的分類和辨識。
為了提高推文情感分析的準(zhǔn)確度和速度,基于MapReduce平臺,提出了利用自注意力雙向分層語義模型的大規(guī)模網(wǎng)絡(luò)文檔情感分析方法,在對文檔預(yù)歸類的條件下,通過云平臺對大量數(shù)據(jù)的并行處理能力,利用自注意力機制分辨詞匯的情感語義,提高對文檔情感的分析效率,具有處理海量文檔數(shù)據(jù)的能力,實現(xiàn)更高準(zhǔn)確度和更低召回率。
推文的情感分析需要計算待分析推文與現(xiàn)有文檔之間的語義相似度,其中每個文檔代表一個類(“正面”、“負面”或“中立”),情感分析的目標(biāo)是給推文提供與其具有最大相似性的文檔類。因此,語義相似度的計算就像一個信息檢索系統(tǒng),希望找到與查詢所表達的用戶需求相關(guān)的文檔。分類的推文將扮演查詢的角色,代表這3個類的3個現(xiàn)有文檔將扮演所尋求的文檔數(shù)據(jù)庫的角色[8,9]。
首先,通過相似度計算對所有待分析的推文進行預(yù)歸類。相似性度的計算基于以下原則:給定由本體W形成一組節(jié)點和根節(jié)點R,X和Y是本體的兩個要素,相似性計算是根據(jù)節(jié)點X和Y與根節(jié)點R的距離(N1和N2)而來的,相似度計算是來源于節(jié)點X和Y與根節(jié)點R的距離(N1和N2)以及包含歸類概念(subsuming concept,CS),可以使用下式定義
(1)
如果X和Y與之間的語義距離值很小,則兩個概念更相似。相似度是根據(jù)連接層次結(jié)構(gòu)中路徑長度定義的。c1和c2之間的相似度為
Sim(c1,c2)=2×D-Lenovo(c1,c2)
(2)
式中:D是連接c1和c2的最長可能路徑,Lenovo(c1,c2)是c1和c2之間的最小路徑。圖1展示了相似度提取的流程。
圖1 相似度提取的流程
將特定概念的熵(信息內(nèi)容)與所尋求相似度相結(jié)合,可得改進的相似度衡量公式,為
(3)
在改進的相似度公式中,c1和c2之間的距離可以通過下式計算
dist(c1,c2)=E(c1)+E(c2)-2(2×E(CS(c1,c2)))
(4)
如果兩個推文通過非常短的路徑連接在一起并且“不改變方向”,那么這兩個推文是相似的。相似度的計算基于從一個語義到另一個語義概念的最短路徑的權(quán)重以及方向的變化。
根據(jù)3個類別(正面、負面和中性)進行分類,使用深度學(xué)習(xí)和自注意力機制在語義上進行分類,通過對推文的權(quán)重學(xué)習(xí),對基本模型進行一定程度上的優(yōu)化。并通過使用Hadoop集群和Hadoop分布式文件系統(tǒng)在多臺機器之間并行化分類來存儲分類和分類結(jié)果[10,11]。使用MapReduce編程模型,并將其用于并行化。
提出的方法代表了一種情緒分析的分類,將推文分為3類,包括正面、負面和中立,是一種主觀性分類。為了使分類結(jié)果更易區(qū)分,將推文進一步分為兩類:情感推文,這種類別的推文內(nèi)容是表達情緒或觀點的主觀推文(極性分類)關(guān)于某事,它被分為兩類(正面或負面),另一種推文不表達任何情緒或觀點,稱為事實推文或客觀推文(沒有情緒),并且它被分類為一類(中性)。第二種方法將推文分為兩類(正面或負面),稱為極性分類(感性推文)。
自注意力機制的分類方法通過基于神經(jīng)網(wǎng)絡(luò)的雙向雙層長短時間記憶網(wǎng)絡(luò)(LSTM)引入,通過雙向長短記憶模型(BiLSTM)學(xué)習(xí)語義。對于句子L={v1,v2,…,vn},其中,vi表示句子中的第i個詞(i=1,2,…,n),每一個詞都可以通過先驗的詞向量矩陣V映射為m維向量,詞向量的值通過嵌入算法預(yù)先得出,因此存在
Q=(v1,v2,…,vn)∈Vm×n
(5)
通過BiLSTM獲取語義的過程中,需要分別計算每層的正向序列和逆向序列隱藏層,前向推算方法為
gk,f=λ(Rg,f·(dt-1,f,vt)+gk-1,f)+gk-1,f
(6)
Tk,f=Sigmoid(RU,f·(dt-1,f,vt)+gk-1,f)+gU,f
(7)
Uk,f=(gk,f+ok,f)⊙Tk,f+gk,f·Uk-1,f
(8)
dt-1,f=gk,f⊙Uk,f
(9)
其中,vt表示句子中第t個詞語義;gk,f,Rg,f,gk-1,f,RU,f,gU,f分別為隱藏層和輸入層向量的更新及操作參數(shù);dt-1,f為隱藏層向量;Tk,f,Uk-1,f為輸入向量。后向推算方法為
gk,b=λ(Rk,b·(dt-1,b,vt)+gk-1,b)+gk-1,b
(10)
Tk,b=Sigmoid(RU,b·(dt-1,b,vt)+gk-1,b)+gU,b
(11)
Uk,b=(gk,b+ok,b)⊙Tk,b+gk,b·Uk-1,b
(12)
dt-1,b=gk,b⊙Uk,b
(13)
其中,角標(biāo)b表后向推算,其余變量含義與前向推算相同。
句子L經(jīng)前向推算與后向推算遍歷后,得到語義特征
D=(d1,d2,…,dn)∈Rn×2u
(14)
其中
dt=(vt,dt-1)‖(vt,dt+1)
(15)
其中,u為隱藏層單元數(shù)。
經(jīng)LSTM獲得文本語義后,通過自注意力機制分配詞語權(quán)重,對詞語對句子語義的影響打分。對于語義為di的句子,各詞語權(quán)重qi表示為
qi=sigmoid(scor(di))
(16)
式中:scor(di)用以度量第i個單詞的重要程度,通過加性注意力機制(additive attention)、點乘注意力機制(multiplicative attention)實現(xiàn)和自注意力機制(self-attention)實現(xiàn),分別表示為
(17)
(18)
(19)
其中,vq,Rq,gq分別為打分參數(shù),另外加性注意力機制對i時刻句子上下文表示di增加全連接網(wǎng)絡(luò)。
判斷詞語權(quán)重后,將句子二維映射為矩陣表示,區(qū)別于傳統(tǒng)注意力機制,最終經(jīng)自注意力機制得到的語義分類結(jié)果為
F=softmax(Rq2sigmoid(DT))
(20)
式中:DT∈R2u×n;Rq2表示模型訓(xùn)練參數(shù)。可以理解為,二維映射后句子的矩陣表示形式,行向量表示不同層面信息,即一個句子得到了多語義層面的理解,豐富了句子表達,減少了一維壓縮后的語義缺失問題。
提出的多機制分布式系統(tǒng)對推文進行分類,其思想是基于多個機制計算推文和3個意見文件之間的語義相似性(正文件dp、負文件dn和中性文件dne)。每個文檔代表一個類,即每個文檔包含代表一個類的單詞,例如,積極類的文檔包含單詞:positive,good,happy等,而消極類的文檔包含單詞:negative,bad,sad等。
使用深度學(xué)習(xí)和自注意力機制,基于信息檢索系統(tǒng)(information research system,IRS)的概念和語義相似性來設(shè)計混合方法,從信息檢索系統(tǒng)的角度來計算用戶需求(請求)和一組文檔之間的語義相似性,找到與請求相關(guān)的文檔,在案例中考慮推文將請求分類為3個意見文件,作為信息獲取系統(tǒng)的文件數(shù)據(jù)庫。引入自注意力機制到輸出層的上一層,為句子的語義提供多角度的矩陣形式的表示。用不同詞語的加權(quán)平均表示優(yōu)化后模型的文本分布形式
(21)
式中:fhi是不同詞語的權(quán)值,fai是不同的語義表示。以下公式顯示了如何根據(jù)提出的方法對推文進行分類
CV=max[SimLC(t,dp),SimLC(t,dn),SimLC(t,dne)]
(22)
式中:CV是分類值(積極、消極和中性),SimLC(t,dp)是推文和3個意見文檔之間的語義相似性,t是待分類的推文,dp、dn和dne分別表示積極、消極和中性。
以下公式可用來計算與使用或者不使用文本預(yù)處理的分類率和錯誤率
(23)
ER=1-SR
(24)
其中,CR為分類率,ER為錯誤率。
對于評估情緒分類系統(tǒng),僅僅使用CR和ER是不夠的,語義分析評估中最常用的測量是4個指標(biāo):準(zhǔn)確度、召回率、精確度和F1分數(shù),這些度量由下列公式給出:
準(zhǔn)確度:所有預(yù)測正確的實例占所有預(yù)測實例的部分
(25)
精確度:所有預(yù)測為積極樣本并且實際為積極的樣本占所有預(yù)測的積極樣本的比例
(26)
召回率:真陽性預(yù)測樣本占所有實際正確樣本的比例
(27)
F1分數(shù):精度和召回率的諧波平均
(28)
其中,TP(真陽性):正確預(yù)測的正值表示推文類的值為正,并且分類后的預(yù)測值為正;TN(真陰性):正確預(yù)測的負值意味著推文類的值為負,并且分類后的預(yù)測值為負;FP(假陽性):當(dāng)推文為負數(shù)但分類后的預(yù)測類為正數(shù);FN(假陰性):當(dāng)推文是正數(shù)但分類后的預(yù)測類是負數(shù)。
圖2展示了使用提出的推文分類方法的步驟,第一步是收集要分析的推文(分類),使用了兩種方法收集推文,第一種是用基于java的Twitter的高級可編程序中斷控制器(advanced programmable interrupt, API),稱為Twitter4j,它使提出的方法能夠收集用戶的推文。這個API提供了許多功能,可以對推文進行分類。
圖2 提出方法的語義分類步驟
收集推文的第二種方法是阿帕奇飲水法,它是一種工具/服務(wù)/數(shù)據(jù)的提取機制,用于收集聚合和傳輸大量流數(shù)據(jù),例如日志文件,來自各種源的事件到集中式數(shù)據(jù)存儲。該方法具有高可靠性、分布式和可配置的優(yōu)點,它主要用于將各種服務(wù)器的流數(shù)據(jù)(日志數(shù)據(jù))復(fù)制到分布式文件系統(tǒng)。Apache Flume使收集大量數(shù)據(jù)成為可能,如推文,并將它們存儲在分布式文件系統(tǒng)(Hadoop distributed file system,HDFS)。使用Flume來促進收集推文并將它們直接存儲在HDFS中以便在之后進行分析[12,13]。
收集推文之后,第二步是創(chuàng)建3份意見文件。每個文檔都是一個文本文件,其中包含代表一個類的單詞,也就是說在其中的積極意見文檔中放入積極詞匯,如快樂、善良、愉快、友善等。
第三步是應(yīng)用文本預(yù)處理方法。在對推文進行分類之前,重要的是對其進行一些處理以便于分類并減少其中存在的噪聲。這些處理稱為文本預(yù)處理。
文本預(yù)處理包括消除或轉(zhuǎn)換推文的內(nèi)容以減少其噪音并促進分類階段。在文獻中本文發(fā)現(xiàn)了幾種類型的文本預(yù)處理,即替換否定提及、刪除鏈接,將包含重復(fù)字母的單詞還原為其原始英語形式、刪除數(shù)字、刪除停用詞以及通過使用首字母縮寫詞典將首字母縮略詞擴展為其原始單詞。本文也發(fā)現(xiàn)了一些經(jīng)常使用的表情符號。在本文的工作中,主要使用了一下方法:
(1)標(biāo)記化。通過刪除空格、逗號和其它符號將推文拆分為術(shù)語或標(biāo)記的階段。這是一個重要的步驟,因為在我們的工作中,我們專注于單個詞來計算它們之間的語義相似性;
(2)刪除停用詞。刪除停止詞,如介詞,are,is,am和冠詞(a,an,the)等。停用詞不強調(diào)任何情緒,因此刪除它們以減少停止詞是很重要的來自推文的噪音;
(3)刪除Twitter標(biāo)記。例如主題標(biāo)簽(#),轉(zhuǎn)發(fā)(RT)和賬戶ID(@)等;
(4)刪除數(shù)字。數(shù)字不表達任何情緒或態(tài)度。一般來說,在測量情緒時數(shù)字是沒用的,從推文中刪除它們可以改進推文內(nèi)容的質(zhì)量。
在文檔預(yù)歸類后,使用深度學(xué)習(xí)和自注意力機制計算待分析推文中的語義相似性,建立自注意力雙向分層語義模型,對模型進行預(yù)訓(xùn)練來更新訓(xùn)練參數(shù),并且在計算語義相似性后,推文將采用與其具有最大相似性的文檔的類。
如果有一個大的推文數(shù)據(jù)庫,那么在對推文進行分類時出現(xiàn)的問題之一就是等待獲得分類結(jié)果的時間。為了克服這個問題,使用Hadoop框架,通過在多個機器(Hadoop集群)之間共享分類,使用分布式文件,將推文分類的工作與提出的兩種方法并行化。分布式文件系統(tǒng)用于存儲推文以進行分類,也用于存儲分類結(jié)果,以及MapReduce編程模型,用于并行化和開發(fā)所提出的方法。
需要注意的是,并行化目標(biāo)不是研究Hadoop集群,而只是描述如何使用Hadoop以及更準(zhǔn)確地使用Hadoop MapReduce并行化本文提出的工作。集群安裝在Ubuntu 16.04操作系統(tǒng)中[14],它將作為集群(主)的主機,安裝在虛擬工作站中的兩個Hadoop節(jié)點上。
圖3展示了使用HDFS和Hadoop MapReduce并行的步驟。第一步是存儲推文的數(shù)據(jù)集,以便在HDFS中進行分類,以在多臺機器之間共享存儲(Hadoop集群)。在這一步中,使用Twitter4j API和阿帕奇飲水法來收集推文,在文本預(yù)處理步驟之后,它是通過應(yīng)用我們的方法進行分類的步驟,但這次是使用MapReduce編程模型(以并行方式)。
圖3 HDFS和Hadoop MapReduce并行化流程
每次迭代時,MapReduce操作的輸入(對于每個推文)包含要分類的推文,輸出包含分類的推文。分類是通過應(yīng)用本文提出的第一個方法完成的,分類結(jié)果存儲在HDFS中。在分類過程結(jié)束時,將結(jié)果存儲在HDFS中作為兩列,一列用于推文作為MapReduce算法的鍵,另一列用于推文的類作為值(積極、消極或中性)。
圖4展示了使用HDFS和Hadoop MapReduce并行化的改進流程。
圖4 改進的HDFS和Hadoop MapReduce并行化的流程
與圖3所示的流程相比,圖4中的流程首先要做的事情是在HDFS中存儲待分類的推文,可以使用Twitter4j API或者阿帕奇飲水法實現(xiàn)。在存儲步驟之后,就是使用本文所提出的第二種方法基于MapReduce 模型(以并行化的方式)進行推文的分類。
每次迭代時MapReduce的輸入都包含一個要進行分類的推文,在應(yīng)用了不同的文本預(yù)處理方法和我們提出的方法之后,本文將推文分為兩類(積極或消極)。在分類過程結(jié)束時,將結(jié)果存儲在HDFS中作為兩列,一列是被分類的推文,作為MapReduce的鍵,另一列用于推文的類別作為MapReduce的值。
通過比較現(xiàn)有方法和所提出方法的實驗結(jié)果,驗證提出的方法在語義分析上的優(yōu)勢。對比內(nèi)容包括分類率、錯誤率、精確度、召回率和評分。
語義分類采用并行方式,使用Hadoop框架和HDFS以及數(shù)據(jù)集的MapReduce編程模型完成,該數(shù)據(jù)集包含來自Twitter4j API和阿帕奇飲水法收集的不同主題的推文。這兩個工具允許從Twitter收集推文。實驗數(shù)據(jù)為8000條推文,包含4000個積極推文和4000個消極推文。這8000條推文是從名為Sentiment 150的數(shù)據(jù)集中隨機選擇的,這一數(shù)據(jù)集可在http://help.sentiment150.com/for-students上找到[15,16]。
為了驗證文本預(yù)處理方法應(yīng)用于語義分類及其提高分析質(zhì)量的效果,做了一個對比實驗,包括使用和不使用文本預(yù)處理方法的實驗對比,表1展示了該實驗的結(jié)果。
表1 文本預(yù)處理對推文情感分類結(jié)果的影響
根據(jù)表1的實驗結(jié)果,當(dāng)使用文本預(yù)處理時,文獻[3]、文獻[4]和文獻[5]方法的分類準(zhǔn)確度低于提出的方法的分類準(zhǔn)確度??傮w來看,不適用文本預(yù)處理的子分類準(zhǔn)確度要低于使用文本預(yù)處理的分類準(zhǔn)確度,也就是說,使用文本預(yù)處理方法對分類有正面影響,它允許減少推文中存在的噪音和錯誤分類的推文數(shù)量,也就是說,文本預(yù)處理提高了分類的質(zhì)量。
從表1中還能看出,與文獻[3]、文獻[4]和文獻[5]的方法相比,提出的方法可以減少錯誤分類的推文數(shù)量。
圖5展示了提出的方法與文獻[3]、文獻[4]和文獻[5]中的方法所得到的模擬結(jié)果的準(zhǔn)確率結(jié)果。如圖5所示,提出的方法在準(zhǔn)確度上優(yōu)于其它3種算法,具有準(zhǔn)確度,準(zhǔn)確度約為89.6%。實驗結(jié)果表明:提出的方法在語義分析的問題上具有更高的準(zhǔn)確度和分析質(zhì)量。
圖5 提出的方法與文獻[3]、文獻[4]和文獻[5]方法的精確度
圖6給出了不使用任何文本預(yù)處理方法的情況下,提出的方法獲得的分類率CR,圖7給出了在不適用文本處理方法的情況下提出的方法所得到的錯誤率ER,圖8展示了在使用提出的文本預(yù)處理方法的情況下所得到的分類率CR,圖9展示了在使用提出的文本預(yù)處理方法的情況下所得到的錯誤率ER。
圖6 在不帶文本預(yù)處理情況下的分類率
圖7 在不帶文本預(yù)處理情況下的錯誤率
圖8 在帶文本預(yù)處理情況下的分類率
從圖6和圖8中可以看出,相比于文獻[3]、文獻[4]和文獻[5]的方法,提出的方法具有更高的分類率CR,這表明提出的方法在進行語義分類時具有更高的分類速度和效率;從圖7和圖9中可以看出,提出的方法具有更高的錯誤率ER,這進一步表明提出的方法在進行語義分類時具有更高的準(zhǔn)確度和質(zhì)量。
圖9 在帶文本預(yù)處理情況下的錯誤率
從圖6~圖9中,可以得到一個結(jié)論:無論采用文本預(yù)處理方法還是不采用文本預(yù)處理方法,相比于文獻[3]、文獻[4]和文獻[5]中的方法,提出的方法具有更高質(zhì)量的語義分類效率和準(zhǔn)確度。
圖10展示了提出的方法和文獻[3]、文獻[4]和文獻[5]中的方法所得到的評分結(jié)果。相比于文獻[3]、文獻[4]和文獻[5]中的方法,提出的方法具有更高的評分,說明提出的方法在語義分析的問題上能夠提高綜合評分。
圖10 提出的方法所得到的評分結(jié)果
圖11展示了提出的方法的計算時間,與文獻[3]、文獻[4]和文獻[5]中的方法相比,提出的方法在語義分析上花費的時間較少,約為文獻[5]的方法的53.2%左右,這驗證了提出的方法具有更高的分析速度和分析效率。
圖11 語義分析的計算時間
提出一種利用自注意力機制的大規(guī)模網(wǎng)絡(luò)文檔情感分析方法,研究了大規(guī)模推文的情感分析問題。通過自注意力機制與深度學(xué)習(xí)方法進行語句分類,在分布式并行化分類的基礎(chǔ)上,通過二維映射的語句矩陣,有效實現(xiàn)大規(guī)模網(wǎng)絡(luò)文檔的情感分析,提出的方法能夠有效地對語句進行辨識,完成情感多層次分類,有效提高分析準(zhǔn)確度與分類率,在大幅降低語句情感分類錯誤的情況下提高了分析效率。
下一步研究主要針對語義的地域性,討論時空分布對語句情感分析的影響,完善大數(shù)據(jù)技術(shù)下的高效情感內(nèi)容分析,提高情感分析方法的適用性。