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