袁藝琳 張子威 焦?jié)嵀?李新越 李?yuàn)檴?
(防災(zāi)科技學(xué)院,河北 廊坊101601)
當(dāng)今移動(dòng)互聯(lián)網(wǎng)技術(shù)迅猛發(fā)展,人們每天通過(guò)網(wǎng)絡(luò)了解信息。在這個(gè)信息爆炸的時(shí)代,媒體形態(tài)比以往任何時(shí)候都要豐富,數(shù)據(jù)規(guī)模、類型呈幾何式增長(zhǎng),但是數(shù)據(jù)價(jià)值普遍較低,信息越多,人們的思維越混亂,越難以辨別真?zhèn)蝃1]。因此,采集大量輿情數(shù)據(jù)并進(jìn)行清洗、分析,最后以圖表形式呈現(xiàn)有助于梳理輿情事件信息。
災(zāi)害輿情是一類常見(jiàn)的網(wǎng)絡(luò)輿情。我國(guó)國(guó)土面積遼闊,人口基數(shù)龐大,自然災(zāi)害頻發(fā),重大自然災(zāi)害的發(fā)生嚴(yán)重影響人們的生活和工作[2]。隨著現(xiàn)代化電子信息技術(shù)的飛速發(fā)展,災(zāi)害事件借助網(wǎng)絡(luò)的便利平臺(tái)快速傳播,有助于幫助網(wǎng)友更好的了解災(zāi)情,但同時(shí)也易造成虛假、不良消息誤導(dǎo)網(wǎng)友情緒[3]。為了有效管理災(zāi)害輿情信息,提出了災(zāi)害輿情分析系統(tǒng)的設(shè)計(jì)。
自媒體時(shí)代,每個(gè)人既是信息的接收者,也是信息的傳播者。由于微博的及時(shí)、便捷、實(shí)時(shí)互動(dòng)性和社交性的特點(diǎn),社會(huì)突發(fā)事件引發(fā)的網(wǎng)絡(luò)輿情在微博平臺(tái)中得到迅速傳播[4]。因此,系統(tǒng)選擇微博作為數(shù)據(jù)源。該系統(tǒng)以輿情事件為主要研究對(duì)象,從事件概況、傳播分析、輿論聚合、人群畫(huà)像幾個(gè)角度展示輿情事件,期望為用戶提供更好的使用體驗(yàn)。
系統(tǒng)數(shù)據(jù)采集流程為數(shù)據(jù)獲取、數(shù)據(jù)解析、數(shù)據(jù)儲(chǔ)存。針對(duì)微博結(jié)構(gòu)復(fù)雜、數(shù)據(jù)量大的特點(diǎn),我們選擇Scrapy 框架。Scrapy是用純Python 實(shí)現(xiàn)的一個(gè)開(kāi)源網(wǎng)絡(luò)爬蟲(chóng)框架,是為了高效地爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫(xiě)的應(yīng)用框架[5]。Scrapy 框架各個(gè)模塊間分工明確,Scrapy Engine 負(fù)責(zé)各個(gè)模塊間數(shù)據(jù)和信號(hào)的傳遞;Scheduler 負(fù)責(zé)接收Scrapy Engine 的請(qǐng)求并將其加入隊(duì)列進(jìn)行管理;Downloader 負(fù)責(zé)接收Scrapy Engine 的Request請(qǐng)求,將獲取到的Response 返回給Scrapy Engine;Downloader Middlewares 可以自定義下載的參數(shù);Spider Middlewares 可以自定義Request 請(qǐng)求和過(guò)濾Response;Spider 負(fù)責(zé)處理所有Responses 并分析提取數(shù)據(jù);Item Pipeline 負(fù)責(zé)數(shù)據(jù)存儲(chǔ);編寫(xiě)相關(guān)的規(guī)則即可自動(dòng)采集數(shù)據(jù)且具有很好的拓展性和可維護(hù)性。
災(zāi)害輿情分析系統(tǒng)選擇Django2.1.8 作為系統(tǒng)架構(gòu),基于Anaconda3 集成環(huán)境開(kāi)發(fā)。系統(tǒng)前臺(tái)使用Boostrape4.0 框架構(gòu)建,ECharts 加載、渲染數(shù)據(jù)。后臺(tái)使用Python 作為腳本開(kāi)發(fā)語(yǔ)言,Mysql8.0 為系統(tǒng)數(shù)據(jù)庫(kù),網(wǎng)站部署在服務(wù)器上。Django 作為開(kāi)源的Python Web 框架,是模型(Model)、模板(Template)和視圖(Views)模式。與常見(jiàn)的MVC 設(shè)計(jì)模式相比,Django 框架將控制器部分進(jìn)行了封裝,為使用者提供了許多便利[6]。ECharts 是一個(gè)純Javascript 圖表庫(kù),提供多達(dá)12 類的數(shù)據(jù)可視化圖表,賦予用戶挖掘和整合數(shù)據(jù)的能力[7]。利用ECharts 圖表庫(kù)實(shí)現(xiàn)評(píng)估數(shù)據(jù)可視化分析,能夠極大提升后臺(tái)的數(shù)據(jù)處理速度和前端的體驗(yàn)效果[8]。
災(zāi)害輿情分析系統(tǒng)為B/S 結(jié)構(gòu)設(shè)計(jì)。前端有各個(gè)功能模塊組成,后臺(tái)實(shí)現(xiàn)系統(tǒng)用戶管理、災(zāi)害輿情信息管理功能的實(shí)現(xiàn)。系統(tǒng)通過(guò)數(shù)據(jù)接口讀取Mysql 中的數(shù)據(jù)。
災(zāi)害輿情分析系統(tǒng)數(shù)據(jù)流主要分為災(zāi)害輿情信息采集、災(zāi)害輿情數(shù)據(jù)分析和災(zāi)害輿情分析系統(tǒng)網(wǎng)站三個(gè)部分。系統(tǒng)監(jiān)控微博熱搜,選取與災(zāi)害有關(guān)的熱搜話題作為關(guān)鍵字通過(guò)WeiboSpider 采集話題相關(guān)的微博和評(píng)論數(shù)據(jù)并存入MongoDB數(shù)據(jù)庫(kù)中。編寫(xiě)Python 腳本清洗MongoDB 中的數(shù)據(jù),按照規(guī)則分析數(shù)據(jù),將分析結(jié)果存入Mysql 數(shù)據(jù)庫(kù)中完成災(zāi)害輿情數(shù)據(jù)分析。災(zāi)害輿情分析系統(tǒng)網(wǎng)站前臺(tái)加載、渲染結(jié)果數(shù)據(jù)。具體流程圖如圖1 所示。
圖1 系統(tǒng)數(shù)據(jù)流程圖
災(zāi)害輿情分析系統(tǒng)主要設(shè)有用戶模塊、災(zāi)害輿情信息展示模塊、系統(tǒng)管理模塊三大主要模塊。用戶模塊包含用戶登錄功能和用戶注冊(cè)功能。災(zāi)害輿情信息展示模塊包含事件概況、傳播分析、輿論聚合、人群畫(huà)像四個(gè)方面,多維度呈現(xiàn)災(zāi)害輿情事件。網(wǎng)站管理模塊包含用戶信息管理和災(zāi)害輿情信息管理,可以對(duì)用戶信息和災(zāi)害輿情事件信息進(jìn)行管理。具體系統(tǒng)流程圖如圖2 所示。
圖2 系統(tǒng)結(jié)構(gòu)圖
用戶模塊分為用戶登錄和用戶注冊(cè)兩個(gè)部分。使用災(zāi)害輿情分析系統(tǒng),首先需要登錄。用戶輸入用戶名、密碼,由系統(tǒng)判斷是否正確,如果正確,登錄成功,進(jìn)入系統(tǒng)。如果不正確則提示用戶進(jìn)行修改。如果用戶沒(méi)有賬號(hào),則需填寫(xiě)相關(guān)信息進(jìn)行注冊(cè)。
災(zāi)害輿情信息展示模塊是系統(tǒng)的核心模塊。用戶可以查看災(zāi)害輿情事件列表。災(zāi)害輿情事件列表展示災(zāi)害輿情事件名稱、事件簡(jiǎn)介、事件熱度和事件發(fā)生時(shí)間。用戶還可以選擇按最新或最熱檢索災(zāi)害輿情事件。系統(tǒng)也支持模糊搜索功能,幫助用戶快速查找需要的信息。
點(diǎn)擊災(zāi)害輿情事件,可以查看該事件的詳細(xì)分析結(jié)果。災(zāi)害輿情分析結(jié)果從事件概況、傳播分析、輿論聚合、人群畫(huà)像4個(gè)角度展現(xiàn)災(zāi)害輿情事件。事件概況主要介紹災(zāi)害輿情事件的名稱和簡(jiǎn)介,并通過(guò)折線圖展現(xiàn)事件在過(guò)去幾個(gè)小時(shí)的熱度變化趨勢(shì)。事件傳播分析使用柱狀圖直觀呈現(xiàn)點(diǎn)贊數(shù)、評(píng)論數(shù)與轉(zhuǎn)發(fā)數(shù)并以餅圖體現(xiàn)事件情感趨勢(shì)。輿論聚合分為詞云展示和意見(jiàn)領(lǐng)袖觀點(diǎn)兩個(gè)部分。通過(guò)詞云可以快速了解事件輿論動(dòng)態(tài),參考意見(jiàn)領(lǐng)袖觀點(diǎn)有助于判斷輿論發(fā)展方向。
系統(tǒng)管理模塊分為用戶信息管理和災(zāi)害輿情事件管理。系統(tǒng)管理模塊十分重要,在某些場(chǎng)景下,系統(tǒng)對(duì)災(zāi)害輿情事件的判斷可能會(huì)出現(xiàn)偏差,這時(shí)就需要人為干預(yù);隨著系統(tǒng)后期的推廣,可能會(huì)出現(xiàn)惡意用戶注冊(cè)的情況,這也需要人為清除。系統(tǒng)管理員可以對(duì)用戶信息和災(zāi)害輿情信息進(jìn)行增加、刪除、修改、查詢等操作。這樣有助于有效阻止惡意用戶注冊(cè)和及時(shí)矯正災(zāi)害輿情事件信息產(chǎn)生的偏差。系統(tǒng)管理員不對(duì)普通用戶開(kāi)放注冊(cè),保證了系統(tǒng)的安全性。
該文介紹了一款災(zāi)害輿情分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程,得到如下結(jié)論:
5.1 災(zāi)害輿情分析系統(tǒng)前期采用Scarpy 框架可以完成數(shù)據(jù)的采集,編寫(xiě)Python 腳本清洗、分析數(shù)據(jù),以圖表形式表現(xiàn)數(shù)據(jù),簡(jiǎn)化數(shù)據(jù)流。
5.2 災(zāi)害輿情分析系統(tǒng)基于B/S 結(jié)構(gòu)設(shè)計(jì),使用Django 框架,各功能模塊相互獨(dú)立,前端展示部分與后臺(tái)管理模塊獨(dú)立開(kāi)發(fā),減輕系統(tǒng)維護(hù)壓力。
5.3 災(zāi)害輿情分析系統(tǒng)前臺(tái)采用Bootstrap 框架,界面友好、清晰。ECharts 圖表直觀呈現(xiàn)數(shù)據(jù)分析結(jié)果,為用戶帶來(lái)良好的使用體驗(yàn)。