鄧 磊,孫培洋
(1.西北政法大學(xué) 新聞傳播學(xué)院, 陜西 西安 710000;2.西安理工大學(xué) 自動(dòng)化與信息工程學(xué)院,陜西 西安 710000)
在互聯(lián)網(wǎng)飛速發(fā)展的時(shí)代,基于聯(lián)聯(lián)網(wǎng)的各種自媒體平臺(tái)層出不窮。與傳統(tǒng)媒體相比,網(wǎng)絡(luò)輿論的表達(dá)具有快速性、隨機(jī)性、匿名性和便捷性等特點(diǎn)。截至2021年12月,我國網(wǎng)民規(guī)模達(dá)10.32億,較2020年12月增長4 296萬,互聯(lián)網(wǎng)普及率達(dá)73.0%,較2020 年12月提升2.6個(gè)百分點(diǎn);我國手機(jī)網(wǎng)民規(guī)模達(dá)10.29億,較2020年12月增長4 298萬,網(wǎng)民使用手機(jī)上網(wǎng)的比例為99.7%[1]。通過網(wǎng)絡(luò)媒體,越來越多的網(wǎng)民可通過網(wǎng)絡(luò)自主獲取信息,自由地發(fā)表看法和分享觀點(diǎn)。這樣比較容易引起突發(fā)公共事件,甚至影響社會(huì)穩(wěn)定。
利用輿情監(jiān)測(cè)系統(tǒng)對(duì)網(wǎng)絡(luò)熱點(diǎn)事件進(jìn)行及時(shí)監(jiān)測(cè)和研究判斷,適時(shí)化解輿情危機(jī)并引導(dǎo)正確發(fā)展,可使網(wǎng)絡(luò)輿情成為民們發(fā)表意見的窗口以及領(lǐng)導(dǎo)者和相關(guān)部門決策重要依據(jù),因此建立網(wǎng)絡(luò)輿情監(jiān)測(cè)系統(tǒng),對(duì)網(wǎng)絡(luò)信息進(jìn)行及時(shí)有效的監(jiān)測(cè)、預(yù)警和引導(dǎo)尤為重要。
本文提出一種基于深度學(xué)習(xí)的網(wǎng)絡(luò)輿情監(jiān)測(cè)系統(tǒng)框架。該系統(tǒng)能自動(dòng)采集全網(wǎng)多數(shù)門戶網(wǎng)站、微博和微信公眾號(hào)中包括文章與評(píng)論在內(nèi)的數(shù)據(jù)。在數(shù)據(jù)處理時(shí),該系統(tǒng)先對(duì)文本進(jìn)行清洗,再進(jìn)行分詞、過濾停用詞,然后利用Word2Vec等進(jìn)行詞嵌入,將文本矢量化。隨后該系統(tǒng)可將矢量化的文本導(dǎo)入LSTM(Long Short-Term Memory)模型中進(jìn)行情感分析,做出輿情判斷,并最終對(duì)輿情預(yù)警進(jìn)行可視化展示。測(cè)試結(jié)果表明,利用本系統(tǒng)能及時(shí)、準(zhǔn)確、客觀地向有關(guān)部門和管理人員反映重點(diǎn)輿情。
基于深度學(xué)習(xí)的網(wǎng)絡(luò)輿情監(jiān)測(cè)系統(tǒng)共分4層,包括信息采集層、數(shù)據(jù)資源層、數(shù)據(jù)分析應(yīng)用層和應(yīng)用服務(wù)層。系統(tǒng)架構(gòu)如圖1所示。
圖1 網(wǎng)絡(luò)輿情監(jiān)測(cè)系統(tǒng)架構(gòu)圖
信息采集層負(fù)責(zé)從各門戶網(wǎng)站、微博、微信公眾號(hào)等網(wǎng)絡(luò)平臺(tái)自動(dòng)采集數(shù)據(jù)。數(shù)據(jù)資源層負(fù)責(zé)數(shù)據(jù)存儲(chǔ),系統(tǒng)數(shù)據(jù)庫分為兩大類,一類為常規(guī)的關(guān)系數(shù)據(jù)格式,另一類則為數(shù)據(jù)量更大的NoSQL數(shù)據(jù)格式。數(shù)據(jù)采集時(shí)采用MySQL數(shù)據(jù)庫,數(shù)據(jù)倉庫則采用Hive數(shù)據(jù)庫。數(shù)據(jù)分析應(yīng)用層首先需要進(jìn)行數(shù)據(jù)預(yù)處理,對(duì)信息采集層采集到的內(nèi)容進(jìn)一步處理,例如網(wǎng)頁解析、去重網(wǎng)頁消除、文本提純、語音文本屬性分析、分詞和詞性標(biāo)注等,然后進(jìn)行文本挖掘和情感分析,最后做出可視化輿情預(yù)警,并提供統(tǒng)計(jì)分析功能。應(yīng)用服務(wù)層可為不同的用戶提供相應(yīng)的接口。
在信息采集模塊中,本系統(tǒng)采用Scrapy框架開發(fā)爬蟲模塊。Scrapy框架是用 Python實(shí)現(xiàn)的一個(gè)方便爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)的應(yīng)用框架,常被應(yīng)用在數(shù)據(jù)挖掘、信息處理和存儲(chǔ)歷史數(shù)據(jù)等程序中。將Scrapy-Redis組件集成到Scrapy框架中可以較好地利用Redis分布式的功能,使本文所提系統(tǒng)的爬蟲模塊實(shí)現(xiàn)分布式爬取數(shù)據(jù),有效提高爬行效率[2]。
本文系統(tǒng)對(duì)門戶網(wǎng)站抓取的策略如下:首先根據(jù)關(guān)鍵詞搜索實(shí)現(xiàn)深度優(yōu)先策略,其次實(shí)現(xiàn)廣度優(yōu)先策略。該策略可對(duì)微博和微信公眾號(hào)實(shí)現(xiàn)定向抓取,即可定時(shí)抓取預(yù)先設(shè)定賬號(hào)的文章和評(píng)論,還可對(duì)微博根據(jù)關(guān)鍵詞實(shí)現(xiàn)數(shù)據(jù)抓取。
本系統(tǒng)存儲(chǔ)模塊采用Hadoop框架,關(guān)系數(shù)據(jù)庫采用MySQL數(shù)據(jù)庫,NoSQL數(shù)據(jù)庫采用Hbase,數(shù)據(jù)倉庫則采用Hive。
Hadoop框架是一個(gè)處理、存儲(chǔ)和分析海量的分布式、非結(jié)構(gòu)化數(shù)據(jù)的開源框架,可方便地部署到多臺(tái)性能一般的計(jì)算機(jī)集群里,具有較好的跨平臺(tái)特性[3]。Hive是一個(gè)建立在Hadoop上的數(shù)據(jù)倉庫基礎(chǔ)構(gòu)架,它提供一系列的工具,可以較好地實(shí)現(xiàn)數(shù)據(jù)的提取轉(zhuǎn)化加載[4]。
本系統(tǒng)數(shù)據(jù)庫的微信公眾號(hào)文章表結(jié)構(gòu)如圖2所示。其中,mid為文章id,biz為公眾號(hào)的id,title為文章名,content_url為文章url鏈接,time為文章發(fā)布時(shí)間,author為發(fā)文作者,comment_num為評(píng)論數(shù)量,read_num為閱讀數(shù),like_num為點(diǎn)贊數(shù),copyright_stat為狀態(tài)碼,is_headline為是否頭條,crawlingtime為抓取時(shí)間。
圖2 微信公眾號(hào)文章表結(jié)構(gòu)
微信公眾號(hào)文章評(píng)論表的結(jié)構(gòu)如圖3所示。其中,content_id為內(nèi)容id,mid為評(píng)論所對(duì)應(yīng)的文章id,nick_name為評(píng)論作者昵稱,logo_url為頭像url鏈接,comment_id為評(píng)論id,content為評(píng)論內(nèi)容,like_num為點(diǎn)贊數(shù),comment_time為評(píng)論時(shí)間,create_time為抓取時(shí)間。
圖3 微信公眾號(hào)文章評(píng)論表結(jié)構(gòu)
在信息預(yù)處理模塊中,為了得到矢量化的文本,需要進(jìn)一步處理由輿情信息采集模塊采集到的內(nèi)容。
本系統(tǒng)對(duì)文本數(shù)據(jù)預(yù)處理流程如圖4所示。首先對(duì)網(wǎng)頁文章或評(píng)論內(nèi)容的文本進(jìn)行分詞,分詞工具采用Jieba分詞、NLTK(Natural Language Toolkit)或者HanLP(Han Language Processing);然后過濾停用詞,再利用Word2Vec或者ELMO(Embeddings from Language Models)等進(jìn)行詞嵌入,從而將文本矢量化。
圖4 文本處理流程圖
Word2Vec的本意就是“詞到向量”,使用它來矢量化文本,可以獲得上下文的關(guān)系,能較好地保證詞與詞之間的語義和句法關(guān)系[5]。
Word2Vec包含CBOW(Continuous Bag of Words Model)和Skip-gram(Continuous Skip-gram Model)兩種模型。Skip-gram模型是根據(jù)詞語w(t)預(yù)測(cè)上下文2n個(gè)詞語,而CBOW模型是根據(jù)w(t)上下文2n個(gè)詞語來預(yù)測(cè)w(t)[6-8]。CBOW模型結(jié)構(gòu)如圖5所示,Skip-gram模型結(jié)構(gòu)如圖6所示。因?yàn)镃BOW模型適用于文本量較大的運(yùn)算,而網(wǎng)絡(luò)輿情監(jiān)測(cè)系統(tǒng)預(yù)處理后的數(shù)據(jù)量相對(duì)較大,故本文所提出的系統(tǒng)使用CBOW模型來矢量化文本。
圖5 CBOW模型結(jié)構(gòu)
圖6 Skip-gram模型結(jié)構(gòu)
處理和挖掘模塊是整個(gè)系統(tǒng)中的關(guān)鍵模塊。該模塊利用數(shù)據(jù)挖掘算法對(duì)經(jīng)過預(yù)處理得到的矢量化文本數(shù)據(jù)進(jìn)行挖掘,得到有用的輿情信息。本文系統(tǒng)使用了TDT(Topic Detection and Tracking)、命名實(shí)體識(shí)別、文本分類算法、文本聚類算法、關(guān)聯(lián)分析和情感傾向分析等關(guān)鍵技術(shù)。
對(duì)于輿情監(jiān)測(cè)系統(tǒng),情感分析技術(shù)尤為關(guān)鍵。情感分析是一種常見的自然語言處理方法的應(yīng)用,其主要目的是將需要進(jìn)行情感分析的文本劃分為其所屬類別,例如敏感、非敏感和中性等。情感分析的常用方法有兩種,一種是基于詞典的傳統(tǒng)分析方法,一種是基于機(jī)器學(xué)習(xí)算法的方法?;谠~典的方法主要通過制定一系列的情感詞典和規(guī)則,對(duì)文本進(jìn)行分詞、關(guān)鍵詞提取統(tǒng)計(jì)、計(jì)算情感值,最后將情感值作為文本的情感傾向依據(jù)。這種方法依賴于情感詞典的好壞。國內(nèi)常用的情感詞典有知網(wǎng)(HowNet)情感詞典、臺(tái)灣大學(xué)(NTSUSD)簡體中文情感極性詞典和大連理工大學(xué)情感詞匯本體[9]。基于機(jī)器學(xué)習(xí)的方法利用數(shù)據(jù)和算法的支持,底層利用的詞嵌入技術(shù)可以降低文字長短不均帶來的處理困難,使用深度學(xué)習(xí)的抽象特征可以減少人工提取特征的工作量,還可以模擬詞與詞之間的聯(lián)系,提高處理靈活度[10-11]。
輿情傳播過程隨著時(shí)間序列的變化而變化的。遞歸神經(jīng)網(wǎng)絡(luò)(Recursive Neural Network, RNN)有較好的處理時(shí)間序列數(shù)據(jù)的能力,但RNN在處理過程中需要保留前面的輸入數(shù)據(jù),會(huì)導(dǎo)致長距離依賴問題。長短期記憶網(wǎng)絡(luò)(Long Short-term Memory, LSTM)具有保持長期記憶性的特點(diǎn),在時(shí)間序列數(shù)據(jù)處理方面有著更好的性能,被廣泛用于處理文本數(shù)據(jù)和聲音數(shù)據(jù)等時(shí)間序列任務(wù)[12-15]。因此,本系統(tǒng)采用LSTM來實(shí)現(xiàn)情感分析。
LSTM模型結(jié)構(gòu)如圖7所示,其各部分定義與命名為:(1)Cell為記憶單元,表示神經(jīng)元的狀態(tài)的記憶,記作ct;(2)Input Gate為輸入門限,用以控制信息是否流入Memory Cell中,記作it; (3)Forget Gate為遺忘門限,用來控制上一時(shí)刻Memory Cell中的信息是否累積到當(dāng)前時(shí)刻,記作ft; (4)Output Gate為輸出門限,控制當(dāng)前時(shí)刻Memory Cell中的信息是否流入當(dāng)前隱藏狀態(tài)ht中,記作ot[16-18]。
圖7 LSTM模型結(jié)構(gòu)
在t時(shí)刻,LSTM常用的計(jì)算式為
ft=Sigmoid(Wf×[ht-1,xt]+bf)
(1)
it=Sigmoid(Wi×[ht-1,xt]+bi)
(2)
ot=Sigmoid(Wo×[ht-1,xt]+bo)
(3)
(4)
(5)
ht=ot×tanh(ct)
(6)
式中,W分別代表其相應(yīng)門限的遞歸連接權(quán)重;Sigmoid和tanh為兩種激活函數(shù)。當(dāng)給定當(dāng)前輸入和上一時(shí)刻狀態(tài)后,LSTM網(wǎng)絡(luò)將逐步更新其隱藏狀態(tài)ht,直至輸出層產(chǎn)生預(yù)測(cè)值。
本系統(tǒng)數(shù)據(jù)挖掘模塊中所應(yīng)用的模型均通過PyTorch框架實(shí)現(xiàn)。PyTorch是一個(gè)開源的Python優(yōu)先的深度學(xué)習(xí)框架,利用它不僅可以使用較強(qiáng)的GPU加速Tensor計(jì)算,構(gòu)建動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò)也更為容易。
以2022年5月17日西安3歲男孩掉進(jìn)下水道失蹤事件作為測(cè)試內(nèi)容,利用關(guān)鍵詞全網(wǎng)搜索爬取數(shù)據(jù),爬取數(shù)據(jù)總量為11 248條。經(jīng)系統(tǒng)分析發(fā)現(xiàn),其中敏感數(shù)據(jù)量7 505條,非敏感數(shù)據(jù)量3 310條,中性數(shù)據(jù)量433條,比例如圖8所示。
圖8 情感分析結(jié)果圖
為使用戶能夠及時(shí)觀察輿情信息,系統(tǒng)自動(dòng)將與搜索關(guān)鍵詞相近的、轉(zhuǎn)發(fā)或評(píng)論較多的信息以“重要信息提醒”的形式向用戶發(fā)出告警,如圖9所示。
圖9 重要信息圖
系統(tǒng)還能將搜索到的輿情數(shù)據(jù)以發(fā)文日期為橫軸(可自定義發(fā)文日期范圍),以每天發(fā)文數(shù)量為縱軸給出輿情走勢(shì)圖,方便用戶做出判斷。輿情走勢(shì)圖示例如圖10所示。
圖10 輿情走勢(shì)圖
系統(tǒng)將分詞時(shí)產(chǎn)生的高頻詞語,以熱點(diǎn)詞云的形式展示,使用戶更容易掌控輿情的特征,如圖11所示。
圖11 熱點(diǎn)詞云圖
隨著網(wǎng)絡(luò)用戶數(shù)量的不斷增加,對(duì)網(wǎng)絡(luò)輿情的監(jiān)測(cè)和分析愈發(fā)重要。本文給出了一個(gè)完整的網(wǎng)絡(luò)輿情監(jiān)測(cè)系統(tǒng)框架,該系統(tǒng)包括信息采集層、數(shù)據(jù)資源層、數(shù)據(jù)分析應(yīng)用層和應(yīng)用服務(wù)層4部分。本文討論了實(shí)現(xiàn)該系統(tǒng)所需要的關(guān)鍵技術(shù),并給出了實(shí)驗(yàn)結(jié)果。后期將圍繞輿情信息分析的具體需求,針對(duì)輿情服務(wù)的特點(diǎn),將研究預(yù)測(cè)輿情的發(fā)展趨勢(shì)作為研究的重點(diǎn)。