袁藝琳 張子威 焦潔瓊 李新越 李姍姍*
(防災科技學院,河北 廊坊101601)
當今移動互聯網技術迅猛發展,人們每天通過網絡了解信息。在這個信息爆炸的時代,媒體形態比以往任何時候都要豐富,數據規模、類型呈幾何式增長,但是數據價值普遍較低,信息越多,人們的思維越混亂,越難以辨別真偽[1]。因此,采集大量輿情數據并進行清洗、分析,最后以圖表形式呈現有助于梳理輿情事件信息。
災害輿情是一類常見的網絡輿情。我國國土面積遼闊,人口基數龐大,自然災害頻發,重大自然災害的發生嚴重影響人們的生活和工作[2]。隨著現代化電子信息技術的飛速發展,災害事件借助網絡的便利平臺快速傳播,有助于幫助網友更好的了解災情,但同時也易造成虛假、不良消息誤導網友情緒[3]。為了有效管理災害輿情信息,提出了災害輿情分析系統的設計。
自媒體時代,每個人既是信息的接收者,也是信息的傳播者。由于微博的及時、便捷、實時互動性和社交性的特點,社會突發事件引發的網絡輿情在微博平臺中得到迅速傳播[4]。因此,系統選擇微博作為數據源。該系統以輿情事件為主要研究對象,從事件概況、傳播分析、輿論聚合、人群畫像幾個角度展示輿情事件,期望為用戶提供更好的使用體驗。
系統數據采集流程為數據獲取、數據解析、數據儲存。針對微博結構復雜、數據量大的特點,我們選擇Scrapy 框架。Scrapy是用純Python 實現的一個開源網絡爬蟲框架,是為了高效地爬取網站數據、提取結構性數據而編寫的應用框架[5]。Scrapy 框架各個模塊間分工明確,Scrapy Engine 負責各個模塊間數據和信號的傳遞;Scheduler 負責接收Scrapy Engine 的請求并將其加入隊列進行管理;Downloader 負責接收Scrapy Engine 的Request請求,將獲取到的Response 返回給Scrapy Engine;Downloader Middlewares 可以自定義下載的參數;Spider Middlewares 可以自定義Request 請求和過濾Response;Spider 負責處理所有Responses 并分析提取數據;Item Pipeline 負責數據存儲;編寫相關的規則即可自動采集數據且具有很好的拓展性和可維護性。
災害輿情分析系統選擇Django2.1.8 作為系統架構,基于Anaconda3 集成環境開發。系統前臺使用Boostrape4.0 框架構建,ECharts 加載、渲染數據。后臺使用Python 作為腳本開發語言,Mysql8.0 為系統數據庫,網站部署在服務器上。Django 作為開源的Python Web 框架,是模型(Model)、模板(Template)和視圖(Views)模式。與常見的MVC 設計模式相比,Django 框架將控制器部分進行了封裝,為使用者提供了許多便利[6]。ECharts 是一個純Javascript 圖表庫,提供多達12 類的數據可視化圖表,賦予用戶挖掘和整合數據的能力[7]。利用ECharts 圖表庫實現評估數據可視化分析,能夠極大提升后臺的數據處理速度和前端的體驗效果[8]。
災害輿情分析系統為B/S 結構設計。前端有各個功能模塊組成,后臺實現系統用戶管理、災害輿情信息管理功能的實現。系統通過數據接口讀取Mysql 中的數據。
災害輿情分析系統數據流主要分為災害輿情信息采集、災害輿情數據分析和災害輿情分析系統網站三個部分。系統監控微博熱搜,選取與災害有關的熱搜話題作為關鍵字通過WeiboSpider 采集話題相關的微博和評論數據并存入MongoDB數據庫中。編寫Python 腳本清洗MongoDB 中的數據,按照規則分析數據,將分析結果存入Mysql 數據庫中完成災害輿情數據分析。災害輿情分析系統網站前臺加載、渲染結果數據。具體流程圖如圖1 所示。

圖1 系統數據流程圖
災害輿情分析系統主要設有用戶模塊、災害輿情信息展示模塊、系統管理模塊三大主要模塊。用戶模塊包含用戶登錄功能和用戶注冊功能。災害輿情信息展示模塊包含事件概況、傳播分析、輿論聚合、人群畫像四個方面,多維度呈現災害輿情事件。網站管理模塊包含用戶信息管理和災害輿情信息管理,可以對用戶信息和災害輿情事件信息進行管理。具體系統流程圖如圖2 所示。

圖2 系統結構圖
用戶模塊分為用戶登錄和用戶注冊兩個部分。使用災害輿情分析系統,首先需要登錄。用戶輸入用戶名、密碼,由系統判斷是否正確,如果正確,登錄成功,進入系統。如果不正確則提示用戶進行修改。如果用戶沒有賬號,則需填寫相關信息進行注冊。
災害輿情信息展示模塊是系統的核心模塊。用戶可以查看災害輿情事件列表。災害輿情事件列表展示災害輿情事件名稱、事件簡介、事件熱度和事件發生時間。用戶還可以選擇按最新或最熱檢索災害輿情事件。系統也支持模糊搜索功能,幫助用戶快速查找需要的信息。
點擊災害輿情事件,可以查看該事件的詳細分析結果。災害輿情分析結果從事件概況、傳播分析、輿論聚合、人群畫像4個角度展現災害輿情事件。事件概況主要介紹災害輿情事件的名稱和簡介,并通過折線圖展現事件在過去幾個小時的熱度變化趨勢。事件傳播分析使用柱狀圖直觀呈現點贊數、評論數與轉發數并以餅圖體現事件情感趨勢。輿論聚合分為詞云展示和意見領袖觀點兩個部分。通過詞云可以快速了解事件輿論動態,參考意見領袖觀點有助于判斷輿論發展方向。
系統管理模塊分為用戶信息管理和災害輿情事件管理。系統管理模塊十分重要,在某些場景下,系統對災害輿情事件的判斷可能會出現偏差,這時就需要人為干預;隨著系統后期的推廣,可能會出現惡意用戶注冊的情況,這也需要人為清除。系統管理員可以對用戶信息和災害輿情信息進行增加、刪除、修改、查詢等操作。這樣有助于有效阻止惡意用戶注冊和及時矯正災害輿情事件信息產生的偏差。系統管理員不對普通用戶開放注冊,保證了系統的安全性。
該文介紹了一款災害輿情分析系統的設計與實現過程,得到如下結論:
5.1 災害輿情分析系統前期采用Scarpy 框架可以完成數據的采集,編寫Python 腳本清洗、分析數據,以圖表形式表現數據,簡化數據流。
5.2 災害輿情分析系統基于B/S 結構設計,使用Django 框架,各功能模塊相互獨立,前端展示部分與后臺管理模塊獨立開發,減輕系統維護壓力。
5.3 災害輿情分析系統前臺采用Bootstrap 框架,界面友好、清晰。ECharts 圖表直觀呈現數據分析結果,為用戶帶來良好的使用體驗。