任偉建,劉圓圓,計(jì) 妍,康朝海
(東北石油大學(xué) a.電氣信息工程學(xué)院;b.黑龍江省網(wǎng)絡(luò)化與智能控制重點(diǎn)實(shí)驗(yàn)室,黑龍江 大慶 163318)
隨著社交媒體的快速發(fā)展,以微博為載體的新聞傳播途徑也受到了越來(lái)越多媒體人的青睞。2020年初發(fā)生新冠肺炎疫情后,以微博為代表的社交媒體實(shí)時(shí)記錄疫情蔓延情況和各地戰(zhàn)役情況的新聞報(bào)道,其在宣傳防疫措施等方面發(fā)揮了重要作用。各級(jí)政府紛紛選擇注冊(cè)官方微博賬號(hào),及時(shí)發(fā)布疫情相關(guān)信息,網(wǎng)民在評(píng)論區(qū)發(fā)表個(gè)人的看法,表達(dá)個(gè)人的觀點(diǎn)和態(tài)度[1]。由于微博網(wǎng)民人數(shù)眾多,時(shí)效性強(qiáng),可代表大多數(shù)人的觀點(diǎn)。筆者針對(duì)新冠肺炎疫情發(fā)生以來(lái)的相關(guān)微博話題以及評(píng)論進(jìn)行情感分析,深度分析處于疫情不同期間,不同地點(diǎn),網(wǎng)民們的情緒變化。
情感分析又稱情感傾向性分析或意見(jiàn)挖掘,是從用戶建議中提取信息的過(guò)程,通過(guò)文本、音頻、圖像獲取用戶的看法、態(tài)度以及情感等[2]。目前,情感分析方法可分兩大類:基于情感詞典與規(guī)則的方法和基于機(jī)器學(xué)習(xí)的方法。
基于情感詞典和規(guī)則的方法是利用構(gòu)建的情感詞典獲取文本中與情感相關(guān)詞的加權(quán)情感值,并通過(guò)該值確定文本的情感傾向。中文情感詞典應(yīng)用的比較廣泛的有知網(wǎng)詞典HowNet、臺(tái)灣大學(xué)的NTUSD(National Taiwan University School of Dentistry)和大連理工大學(xué)的中文情感詞匯本體庫(kù)[3]等。在數(shù)據(jù)缺乏的情況下,基于情感詞典與規(guī)則的方法可取得較好的分類結(jié)果[4],但情感詞典也存在一定的局限性,針對(duì)不同領(lǐng)域需要構(gòu)建不同的情感詞典,對(duì)不同領(lǐng)域,情感分類效果也有很大差距。
基于機(jī)器學(xué)習(xí)的方法,通過(guò)訓(xùn)練帶有標(biāo)簽的數(shù)據(jù),得到一個(gè)情感分類器,再預(yù)測(cè)測(cè)試集中句子的情感傾向,常用的機(jī)器學(xué)習(xí)算法有決策樹(shù)、樸素貝葉斯和支持向量機(jī)[5]等。李銳等[6]對(duì)公開(kāi)的微博情感分析語(yǔ)料對(duì)詞向量進(jìn)行加權(quán),利用SVM(Support Vector Machine)模型進(jìn)行訓(xùn)練,得到情感極性分類評(píng)估指標(biāo)F1為89.35%。Britzolakis等[7]利用多個(gè)機(jī)器學(xué)習(xí)算法對(duì)推特上的新聞進(jìn)行情感分析,都達(dá)到了較好的分類效果。與基于情感詞典與規(guī)則的方法相比,機(jī)器學(xué)習(xí)的方法更簡(jiǎn)單,效果更好,但機(jī)器學(xué)習(xí)會(huì)忽略文本之間的相關(guān)性,分類效果一般。深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一種,含有多個(gè)隱藏層的多層感知器就是一種深度學(xué)習(xí)結(jié)構(gòu)。Collobert等[8]將卷積神經(jīng)網(wǎng)絡(luò)引入了自然語(yǔ)言處理中的許多任務(wù)中,并證明了其提出的模型在各項(xiàng)任務(wù)中都獲得了很好的表現(xiàn);但在傳統(tǒng)CNN(Convolation Neural Networks)深度模型中,卷積濾波器的詞容量有限,導(dǎo)致其無(wú)法捕捉到句子中的詞語(yǔ)間的長(zhǎng)距離依賴關(guān)系。Socher等[9]提出使用遞歸神經(jīng)網(wǎng)絡(luò)(RNN:Recursive Neural Network),對(duì)文本進(jìn)行更細(xì)致的分析,通過(guò)實(shí)踐,傳統(tǒng)RNN在解決長(zhǎng)序列之間的關(guān)聯(lián)時(shí)表現(xiàn)很差,原因是在進(jìn)行反向傳播時(shí),過(guò)長(zhǎng)的序列導(dǎo)致梯度的計(jì)算異常,發(fā)生梯度消失或爆炸。
筆者提出一種聯(lián)合的模型架構(gòu),該模型將循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)與長(zhǎng)短期記憶(LSTM:Long Short-Term Memory)網(wǎng)絡(luò)連接,并在疫情語(yǔ)料庫(kù)上進(jìn)行情感分析測(cè)試。經(jīng)過(guò)多次訓(xùn)練后,發(fā)現(xiàn)該模型在訓(xùn)練大語(yǔ)料時(shí)速度相比傳統(tǒng)的深度學(xué)習(xí)算法有了很大的提高。而且經(jīng)過(guò)RNN層處理后的文本大大的降低了詞向量的維度,彌補(bǔ)了單一的RNN模型在處理長(zhǎng)序列問(wèn)題時(shí)的不足,使LSTM層能更快速、更準(zhǔn)確地得出情感分析的結(jié)果。
為實(shí)現(xiàn)對(duì)微博文本的情感分析,筆者選擇Word-Embedding編碼方式[10],即詞向量模式,表示微博用戶的評(píng)論數(shù)據(jù)。自然語(yǔ)言處理中常用的編碼方式是one-hot編碼方式,但是這種方式每個(gè)詞都需要占用很多空間,并且無(wú)法反映詞匯之間的相關(guān)性。
FastText模型[11]是基于skip-gram基礎(chǔ)上加以改進(jìn),對(duì)輸入上下文的每個(gè)詞匯采用基于詞n-gram格式進(jìn)行分解,并將分解處理后的所有單詞n-gram和原詞進(jìn)行相加,代表上下文的語(yǔ)義信息,假設(shè)通過(guò)分解后得到n-gram的字典大小為G,對(duì)一個(gè)詞匯w,記gw∈{1,…,G}為出現(xiàn)在詞匯w中所有n-gram集合。對(duì)每個(gè)n-gram序列g(shù)使用向量Zg進(jìn)行表示,因此評(píng)分函數(shù)為
(1)
其中vc是上下文詞向量序列。
FastText模型輸入一個(gè)詞的序列(一段文本或一句話),輸出這個(gè)詞序列屬于不同類別的概率[12-14]。序列中的詞和詞組組成特征向量,其通過(guò)線性變換映射到中間層,中間層再映射到標(biāo)簽。FastText在預(yù)測(cè)標(biāo)簽時(shí)使用了非線性激活函數(shù),但在中間層不使用非線性激活函數(shù)。采用FastText預(yù)訓(xùn)練模型對(duì)詞匯進(jìn)行詞嵌入表示可以大大減少one-hot編碼帶來(lái)的冗余和稀疏問(wèn)題。FastText模型如圖1所示。
圖1 FastText模型結(jié)構(gòu)Fig.1 FastText model structure
筆者首先利用jieba分詞,將整句的文本分成詞語(yǔ)和詞語(yǔ)之間的組合,再利用FastText模型轉(zhuǎn)化為詞向量。
為實(shí)現(xiàn)中文微博情感分析,筆者提出了對(duì)LSTM進(jìn)行改進(jìn)后的深度學(xué)習(xí)模型。該模型融合了RNN和LSTM模型。
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)(包括CNN),輸入和輸出都是互相獨(dú)立的,不能很好地考慮上下文之間的聯(lián)系,但RNN引入“記憶”的概念,能記錄序列前的信息,簡(jiǎn)單看,就是把序列按時(shí)間展開(kāi),如圖2所示。
圖2 典型RNN網(wǎng)絡(luò)Fig.2 Typical RNN network
其中Xt是時(shí)刻t處的輸入,St是時(shí)間t時(shí)的“記憶”,St=(UXt+WSt-1),f可以是tanh等激活函數(shù)。Ot是時(shí)間t處的輸出,比如在預(yù)測(cè)下個(gè)詞時(shí),softmax輸出屬于每個(gè)候選詞的概率??梢园央[藏狀態(tài)St視作“記憶體”,捕捉了之前時(shí)間點(diǎn)上的信息。輸出Ot由當(dāng)前時(shí)間及之前所有的“記憶”共同計(jì)算得到。不同于CNN,這里的RNN其整個(gè)神經(jīng)網(wǎng)絡(luò)都共享一組參數(shù)(U,V,W),極大地減小了需要訓(xùn)練和預(yù)估的參數(shù)量。
在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)中,各個(gè)網(wǎng)絡(luò)層無(wú)法進(jìn)行參數(shù)共享[15]。而在循環(huán)神經(jīng)網(wǎng)絡(luò)中,由于循環(huán)神經(jīng)網(wǎng)絡(luò)的每個(gè)步驟都是做相同的工作,僅是輸入不同,因此,每輸入一步各層之間參數(shù)共享,則在網(wǎng)絡(luò)中循環(huán)神經(jīng)網(wǎng)絡(luò)需要學(xué)習(xí)的參數(shù)就會(huì)減少,所需的訓(xùn)練時(shí)間會(huì)大幅減少。使用循環(huán)神經(jīng)網(wǎng)絡(luò)判別某句話的情感色彩,無(wú)需知道每個(gè)步長(zhǎng)的輸出,僅需要知道最后步長(zhǎng)的輸出,循環(huán)神經(jīng)網(wǎng)絡(luò)的核心是隱藏層能捕捉序列信息。
上面給出的RNN模型解決了對(duì)之前的信息保存的問(wèn)題,但存在長(zhǎng)期依賴的問(wèn)題,隨著時(shí)間間隔不斷增大,儲(chǔ)存的信息會(huì)無(wú)法連接,也就是說(shuō)記憶容量有限。LSTM其實(shí)是RNN的一種,RNN-LSTM相較于傳統(tǒng)循環(huán)神經(jīng)網(wǎng)絡(luò),它從設(shè)計(jì)上就避免了時(shí)序數(shù)據(jù)預(yù)測(cè)過(guò)程中長(zhǎng)短時(shí)依賴問(wèn)題,而設(shè)計(jì)的關(guān)鍵就是隱藏層中獨(dú)特的記憶單元。圖3為 RNN-LSTM 隱藏層記憶單元結(jié)構(gòu),該結(jié)構(gòu)包含了3種門,分別是輸入門(Input Gate)、遺忘門(Forget Gate)和輸出門(Output Gate)。
圖3 RNN-LSTM隱藏層記憶單元結(jié)構(gòu)Fig.3 RNN-LSTM hidden layer memory cell structure
將RNN-LSTM 隱藏層記憶單元結(jié)構(gòu)比作一個(gè)記憶細(xì)胞(memory cell),該細(xì)胞控制著記憶單元中信息的傳播途徑。A區(qū)域表示遺忘區(qū),遺忘門(Forget Gate)接收來(lái)自上一時(shí)刻隱藏層的輸出(ht-1)和當(dāng)前時(shí)刻輸入(Xt)并決定丟棄當(dāng)前狀態(tài)下部分信息;B區(qū)域表示更新區(qū),其決定了當(dāng)前狀態(tài)需要存儲(chǔ)的新信息,并完成記憶細(xì)胞的信息更新;C區(qū)域表示輸出區(qū),輸出門(Output Gate)決定了當(dāng)前狀態(tài)下細(xì)胞輸出的內(nèi)容。
經(jīng)過(guò)上述分析,當(dāng)輸入的文本向量為X=[x1,x2,…,xn]時(shí),LSTM的具體流程如下。
it=σ(Wi[ht-1,xt]+bi)
(2)
(3)
ft=σ(Wfxt+Ufht-1+bf)
(4)
(5)
第3步上述記憶狀態(tài)單元都更新完畢后,計(jì)算輸出門的值,具體公式如下
ot=σ(Woxt+Uoht-1+VoCt+bo)
(6)
ht=ottanh(Ct)
(7)
綜上,將RNN和LSTM進(jìn)行融合,RNN-LSTM模型通過(guò)門的控制,解決了時(shí)序數(shù)據(jù)預(yù)測(cè)過(guò)程中長(zhǎng)短時(shí)依賴問(wèn)題,這對(duì)于長(zhǎng)時(shí)段歷史數(shù)據(jù)預(yù)測(cè)研究有很大的幫助。結(jié)構(gòu)如圖4所示,主要由輸入層、RNN層、Dropout層、LSTM層和全連接層組成。
文化與旅游產(chǎn)業(yè)融合是指兩大產(chǎn)業(yè)之間相互交叉滲透而使產(chǎn)業(yè)邊界模糊化,出現(xiàn)新型交融業(yè)態(tài)的過(guò)程。旅游產(chǎn)業(yè)結(jié)構(gòu)升級(jí)是指產(chǎn)業(yè)結(jié)構(gòu)由低階向高階的演進(jìn)過(guò)程,主要體現(xiàn)在要素資源的流動(dòng)與配置所產(chǎn)生的生產(chǎn)率提升效應(yīng)。旅游產(chǎn)業(yè)結(jié)構(gòu)的變動(dòng)通常與消費(fèi)需求、技術(shù)水平、空間要素緊密相關(guān),而文化與旅游產(chǎn)業(yè)融合又是影響文化旅游消費(fèi)、技術(shù)創(chuàng)新和空間集聚的重要因素。因此,本文主要從需求擴(kuò)展路徑、技術(shù)創(chuàng)新路徑、協(xié)同集聚路徑來(lái)剖析文化與旅游業(yè)融合對(duì)旅游產(chǎn)業(yè)升級(jí)的作用機(jī)制。
筆者模型的整體流程如圖5所示,首先對(duì)輸入的文本通過(guò)FastText模型進(jìn)行詞向量化,將句子轉(zhuǎn)換為詞向量后輸入到RNN-LSTM模型,得到情感分析結(jié)果。
Scrapy是Python開(kāi)發(fā)的一個(gè)快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點(diǎn)并從頁(yè)面中提取結(jié)構(gòu)化的數(shù)據(jù)[16]。筆者利用此框架對(duì)微博上關(guān)于疫情的評(píng)論和話題進(jìn)行爬取。
為了能爬取數(shù)據(jù),首先查看瀏覽器發(fā)送給微博服務(wù)器的Request請(qǐng)求和服務(wù)器返回給瀏覽器的Response響應(yīng),尋找Request請(qǐng)求中網(wǎng)址中的相同點(diǎn)并總結(jié)出規(guī)律,然后運(yùn)用Scrapy爬蟲框架編寫多個(gè)Request請(qǐng)求模仿瀏覽器的請(qǐng)求,最終獲得數(shù)據(jù)。
筆者要針對(duì)全國(guó)網(wǎng)民在微博上發(fā)布的關(guān)于疫情的評(píng)論進(jìn)行情感分析,所以分別對(duì)每個(gè)省的評(píng)論進(jìn)行了爬取,共爬取全國(guó)34個(gè)地區(qū)關(guān)于疫情的微博評(píng)論。爬取的時(shí)間為2020年1月1日-2021年3月1日,總計(jì)爬取了3萬(wàn)多條數(shù)據(jù)。
爬取到的評(píng)論,通過(guò)數(shù)據(jù)篩選、去除無(wú)效字符等數(shù)據(jù)清洗操作,共得到36 435條有效數(shù)據(jù),將數(shù)據(jù)分為兩大類:一類是積極的情感評(píng)論18 995條;另一類是消極的情感評(píng)論17 440條。數(shù)據(jù)標(biāo)簽的規(guī)定是:帶有開(kāi)心、致敬、加油等字眼且句子整體是積極陽(yáng)光的為積極評(píng)論,帶有失望、謠言等不滿厭惡的視為消極評(píng)論。樣本數(shù)據(jù)示例如表1所示。
表1 樣本數(shù)據(jù)Tab.1 Sample data
為驗(yàn)證RNN-LSTM模型預(yù)測(cè)性能,該模型和基準(zhǔn)實(shí)驗(yàn)在Windows10系統(tǒng)上進(jìn)行,CPU為Intel(R)Xeon(R)Bronze 3204 CPU@1.90 GHz,GPU為Quadro P6000,使用Python3.6編程語(yǔ)言,采用FastText表示語(yǔ)義信息。
經(jīng)過(guò)多輪測(cè)試調(diào)優(yōu),具體模型超參數(shù)如下。
1) 迭代次數(shù)設(shè)置。通過(guò)多次實(shí)驗(yàn),模型在驗(yàn)證集的準(zhǔn)確率大多在迭代50次之后基本不發(fā)生變化,所以將迭代次數(shù)設(shè)置為100。
2) Batchsize參數(shù)設(shè)置。實(shí)驗(yàn)中多次增大Batchsize值,計(jì)算模型運(yùn)行時(shí)間,選擇時(shí)間最為合適的Batchsize的值為64。
3) Dropout層參數(shù)設(shè)置。為避免模型過(guò)擬合,在模型中加入一層Dropout層,參數(shù)設(shè)置為0.2。
4) 損失函數(shù)設(shè)置。情感分析屬于一個(gè)分類問(wèn)題,因此采用交叉熵作為損失函數(shù)。交叉熵公式為
(8)
5) 激活函數(shù)設(shè)置。實(shí)驗(yàn)對(duì)比了Relu、Tanh、Sigmoid等激活函數(shù),發(fā)現(xiàn)Sigmoid激活函數(shù)效果最佳,得到的損失值更小。Sigmoid激活函數(shù)是極端情況下(二分類)下的Softmax。
6) 優(yōu)化器。選擇Adam作為優(yōu)化器優(yōu)化目標(biāo)函數(shù)。Adam使用動(dòng)量和自適應(yīng)學(xué)習(xí)率加快收斂速度,其計(jì)算效率高,內(nèi)存需求少,非常適合數(shù)據(jù)或參數(shù)較大的問(wèn)題。
筆者采用分類任務(wù)中常見(jiàn)的評(píng)估標(biāo)準(zhǔn):運(yùn)用準(zhǔn)確率、召回率F1值和ROC(Receiver Operating Characteristic Curve)值對(duì)RNN-LSTM模型進(jìn)行評(píng)估,混淆矩陣如表2所示。
表2 混淆矩陣Tab.2 Confusion matrix
具體評(píng)估方法如下:
1) 準(zhǔn)確率表示預(yù)測(cè)正確的樣本占總樣本的比重,計(jì)算公式如下
(9)
2) 召回率表示實(shí)際類別且預(yù)測(cè)類別都為正的樣本占所有實(shí)際類別為正的樣本比重,計(jì)算公式如下
(10)
3) F1值為準(zhǔn)確率和召回率的加權(quán)調(diào)和平均值,計(jì)算公式如下
(11)
筆者將訓(xùn)練數(shù)據(jù)的20%作為模型的驗(yàn)證集,即29 148條數(shù)據(jù)作為訓(xùn)練集,7 287條數(shù)據(jù)作為驗(yàn)證集。對(duì)比模型主要有3種,SVM模型、RNN模型和LSTM模型,利用這3種模型與筆者采用的RNN-LSTM模型進(jìn)行訓(xùn)練結(jié)果進(jìn)行對(duì)比。實(shí)驗(yàn)中,對(duì)選定的數(shù)據(jù)集執(zhí)行相同的預(yù)處理步驟,此外,網(wǎng)絡(luò)初始參數(shù)相同,激活函數(shù)相同都為Sigmoid函數(shù)。評(píng)估指標(biāo)為準(zhǔn)確率、召回率、F1-score、ROC,實(shí)驗(yàn)結(jié)果對(duì)比如表3所示。
表3 實(shí)驗(yàn)結(jié)果對(duì)比Tab.3 Comparison of experimental results
通過(guò)表3可以發(fā)現(xiàn),筆者采用的模型框架RNN-LSTM模型較傳統(tǒng)的分類模型正確率更高,分類效果更好。較單一的RNN、LSTM模型,分類效果也得到了提升,以上實(shí)驗(yàn)結(jié)果驗(yàn)證了RNN-LSTM模型可以有效提高情感分類效果。
應(yīng)用RNN-LSTM模型得到情感均值作為情感指數(shù),然后對(duì)不同地區(qū)的微博話題及評(píng)論做了地域性分析,得到網(wǎng)民情感值分布如圖6,圖7所示。
由圖6可以看出,不同的省市在地圖上顯示的顏色都不一樣。顏色越深代表這個(gè)地區(qū)的情感指數(shù)越高。網(wǎng)友發(fā)表的關(guān)于新冠的疫情的言論越積極。其中在2020年西藏、湖北、江蘇、浙江以及臺(tái)灣情感指數(shù)較高,由于西藏的網(wǎng)民基數(shù)較少,故不具有代表性,但在湖北等地區(qū)可以看出雖然疫情嚴(yán)重,但話題的導(dǎo)向是積極陽(yáng)光的,網(wǎng)民的評(píng)論也具有正能量。
如圖7所示,對(duì)2021年3月的話題和評(píng)論進(jìn)行情感分析,可看出此時(shí)黑龍江等地區(qū)顏色較深,因?yàn)?021年初黑龍江疫情爆發(fā),這時(shí)話題的導(dǎo)向也轉(zhuǎn)變?yōu)榉e極陽(yáng)光的,因此可得出結(jié)論,疫情越嚴(yán)重的地方情感指數(shù)越高,因?yàn)樵掝}的導(dǎo)向是積極向上的,網(wǎng)民的評(píng)論也都是對(duì)抗擊疫情充滿信心和希望的。
圖6 2020年網(wǎng)民情感值分布圖 圖7 2021年網(wǎng)民情感值分布圖 Fig.6 Emotional value distribution Fig.7 Emotional value distribution of Internet users in 2020 of Internet users in 2021
筆者以新冠肺炎疫情為研究背景,研究使用Scrapy爬蟲框架對(duì)微博熱門話題以及評(píng)論進(jìn)行爬取。針對(duì)爬取的話題及評(píng)論進(jìn)行情感分析,基于FastText進(jìn)行特征提取,提出了一種基于RNN-LSTM混合模型的情感分析的方法,且得到了較以往方法更優(yōu)的準(zhǔn)確率,證實(shí)筆者提出的模型能很好的對(duì)短文本進(jìn)行情感分析。并將訓(xùn)練出來(lái)的情感得分與地圖相結(jié)合,得出了全國(guó)網(wǎng)民情感分布地圖。并且該地圖反映出的結(jié)果與疫情實(shí)際發(fā)生狀況相符。