張亞娟 孫如浩 張汝峰等
關鍵詞:輿情監控;新浪微博;爬蟲工具;Scrapy;自然語言處理
中圖法分類號:TP311 文獻標識碼:A
1引言
目前,網絡普及率高,網絡信息傳播速度快,涉及人民群眾切身利益問題,會第一時間出現在網絡上,并迅速傳播,形成網絡輿情。網絡輿情傳播成放射狀,速度快且不斷迭代,部分人在傳播時會根據自己的態度、看法和認識進行加工,或者在傳播過程中產生誤傳,在這個反復迭代的過程中,會導致輿情產生源頭到最后傳送的結果不一致情況,會出現誤導大家的情況,因此,輿情監控和應對處理尤為重要。網絡輿情表達了群眾對某一事件的想法和態度,可以理解社會各個層面的人們的感情、態度、見解、意見、行動傾向等,對于相關管理部門制定相關應對策略具有重要的意義。實現輿情監控并有效引導輿論走向,對于社會良好運轉有著積極的意義。
對于相關部門來講,網絡輿情代表部分網民的看法和態度,根據輿情了解人民群眾的所需所想,是施政的重要參考,也是制定相關政策的重要依據;對于企業來講,及時發現企業品牌相關網絡輿情,然后積極應對、化解矛盾,對于樹立良好的企業形象和提升品牌價值具有重要的意義;對于高校來講,及時發現校園網絡輿情,關注學生思想動態,以及學生的真實需求,并針對具體問題正確引導學生輿情走向,是高校開展思政工作的重要途徑。
綜上所述,獲取網絡輿情對于社會良好運轉,打造積極向上的網絡環境尤為重要,因此,輿情監控具有重要的作用。
2國內外研究現狀
輿情監控是利用數據采集、智能分析等技術,在海量的網絡信息中自動抓取、文本分析、語義分類、自動聚類,從而實現輿情監控,得到輿論走向,掌握網民對于某一事件的態度。目前,輿情監控是研究的熱點問題,國內外眾多學者關于網絡輿情監控構建及輿情應對和處理方面提出了較多方法。
在輿情監控系統構建方面,楊浩等提出了自組織網絡的方法,通過構造控制模型和目標函數,實現了突發性輿情交互信息監控:王越將聚類算法應用在了校園網絡輿情監控中,對獲取的數據進行相似度計算,并利用K-means算法提取熱門話題,實現輿情監控與預警:楊寒冰等提出利用貝葉斯網絡對情感傾向進行分類,并結合堆疊降噪自編碼器,構造了輿情分析監控模型:郝立華針對高職院校校園輿情管理提出了基于SQL Server數據庫輿情監控系統,采用SVM算法提取數據特征:Hu等提出信息自動采集、信息預處理、輿情數據庫、輿情分析與服務、輿情可視化與報告等輿情監測系統的架構。
在輿情應對和處理方面,梁瑛楠等提出了突發公共事件的相關部門應對方法,研究了輿情預警機制、輿情處理機制、法律法規及問責機制、強化公民認識等問題;何劍宇從提升輿情風險預警、加強監測預警和強化立法與管理三個方面,研究了網絡輿情監控工作的風險防范及處理:高亞飛等提出了利用多數據源信息實現基于大數據的新媒體輿情優化,將多種維度因素有機結合,推進了新媒體輿情的決策優化:莫揚海提出了四個層次的“信息生態型”輿情知識服務運行結構,分析了輿情知識服務與輿情服務的差異。
本文以新浪微博為例,利用Scrapy爬蟲獲取數據,利用百度大腦的自然語言處理接口AipNlp庫進行數據分析,從而構建輿情監控系統。新浪微博是新浪旗下基于用戶關系的社交媒體平臺,以文字、圖像、視頻等媒體形式,實現信息的即時分享和傳播互動。截至2021年底,新浪微博的月活躍用戶數為5.73億,平均日活躍用戶數為2.49億,是網絡信息傳播的重要平臺。
3系統構建
基于Python的新浪微博輿情監控系統架構主要分為數據采集層、分析層和應用層,系統框架圖如圖1所示。數據采集層主要是進行數據采集,在微博上抓取相關數據,并進行存儲。分析層主要是對采集的數據進行分析,首先進行數據清洗,去除無關和冗余數據,并獲取相關特征,實現詞頻統計、情感分析和趨勢分析,并將分析結果進行儲存。在應用層,主要是構建網頁,實現人機操作,并將上述分析結果進行可視化。
在數據采集層,利用Scrapy爬取相關網絡信息,并按照一定規則存儲到MySQL數據庫中。在分析層,利用pandas對數據進行清洗,使數據具有統一的格式,WordCloud對網絡信息數據進行統計詞頻,并按照詞頻多少生成詞云,百度大腦的自然語言處理接口AipNlp庫進行情感分析,Scrapy抓取微博熱度生成趨勢圖,相關數據存儲到MySQL中。在應用層,利用Django框架開發Web網頁,便于人機操作,并通過ECharts將分析結果和數據進行可視化。
3.1網絡爬蟲
網絡爬蟲是自動抓取網絡信息的程序,能夠自動抓取需要獲取的數據。網絡爬蟲是輿情監控的第一步,為保證輿情分析的準確性和可靠性,需要大而全的獲取網絡信息。本文利用Scrapy框架開發網絡信息爬蟲工具進行網絡爬蟲,然后爬取的網絡數據利用MySQL進行儲存。
Scrapy是利用Python開發的能夠爬取網站數據、提取結構性數據而編寫的應用框架,具有引擎模塊、調度器模塊、下載器、爬蟲模塊、管道模塊、下載器中間件、爬蟲中間件等組件。Scrapy框架用途廣泛,可用于數據挖掘、數據檢測等方面,且程序開發簡單,Scrapy框架主要包括引擎、調度器、下載器、爬蟲、管道、下載中間件和Spider中間件等。至于爬蟲工具開發,主要為新建項目、創建應用、明確字段、制作爬蟲和存儲內容五步。
Scrapy框架有數據處理和存儲模塊,通過PyMySQL的模塊將網絡數據信息數據存儲到MySQL數據庫。MySQL是一種關系型數據庫管理系統,關系數據庫將數據保存在不同的表中,從而方便訪問。將獲取的網絡數據信息儲存在MySQL數據庫中,便于后續信息處理。
3.2輿情分析
在數據爬蟲時,為保證輿情監測的準確性,爬取的信息容量大且比較全面,因此,數據格式會比較混亂、噪聲信息多、干擾大。另外,存在一定冗余信息,所以需要對抓取的數據進行數據清洗。利用Python中pandas工具進行數據清洗,pandas是基于Numpy的一種工具,能夠對各種數據進行清洗和加工。首先去除冗余數據,然后對數據格式進行歸一化,從而得到質量高的網絡信息數據。
利用WordCloud對網絡信息數據進行統計詞頻,并生成詞云。詞云也稱為文字云,是將頻率出現高的詞匯顯示更加顯著,而頻率出現低的詞匯顯示弱化,甚至不顯示的一種表現形式,觀看者能直觀地看到要表達的主旨。WordCloud是Python的一個第三方庫,以詞語為基本單位,對文本內容中的詞頻進行可視化匯總,更加直觀和美觀地展示文本詞頻。另外,詞云的形狀、尺寸和顏色可以進行設置。
在情感分析時,利用百度大腦的自然語言處理接口AipNlp庫。AipNlp庫具有詞法分析、依存句法分析、詞向量表示、中文DNN語言模型接口、詞義相似度、短文本相似度、評論觀點抽取、情感傾向分析、文章分類、對話情緒識別接口等功能。AipNlp庫功能豐富,能夠對數十種自然語言實現處理,能夠滿足多種場景需求,具有標準的封裝接口,可以降低人工開發成本,并可以通過云計算,降低硬件需求,另外支持用戶多,可以滿足千億量級用戶調用。
3.3結果可視化
利用Django框架開發Web網頁,實現人機交互和信息的展示,并通過ECharts對分析結果進行可視化。
Django是一個由Python開發的一個開放源代碼的Web應用框架,采用了MVT框架,即模型(Model,數據存取層)、視圖(View,表現層)和模板(Template,業務邏輯層)。Django框架功能完善、要素齊全,自帶大量常用工具和框架,擁有豐富、動態的數據庫操作接口,數據模型的設計不依賴特定的數據庫,適合快速開發各種類型的網站。
最后,利用ECharts對分析結果進行可視化,ECharts是使用JavaScript開發的開源可視化庫,可以直觀顯示數據可視化圖表,并可以對可視化圖表形式進行設置。ECharts可以生成的圖表種類豐富,視覺效果好。
4新浪微博輿情監控系統
按照上述系統架構,通過Python及相關模塊開發,采用Web網頁進行交互操作和可視化顯示,可以對網絡文本實現詞頻統計、情感分析和趨勢分析,并將分析結果進行儲存,從而實現新浪微博的輿情監控系統。
以熱點“新冠疫情”為關鍵詞進行網絡信息抓取,然后對輿情進行分析,并分析變化趨勢。通過詞頻分析,前10的詞匯有:疫情、防控、新冠、肺炎、核酸、工作、檢測、人員、病例、區域,然后生成詞云圖(如圖2所示)。通過詞云圖可以看出疫情防控是人們關注的重點,其次是核酸檢測,此前核酸檢測是阻斷疫情的有效手段。另外,病例、區域也是人們關注的重點。
通過情感分析,生成餅狀圖(如圖3所示),消極態度占50.03%,積極態度占49.97%。人們對于疫情的態度是一半是消極的,說明部分人們生活和工作狀態比較消極,需要相關部門進行積極引導。通過爬蟲工具在新浪微博上爬取相關微博的熱度,并構建熱度趨勢圖,24小時討論熱度圖如圖4(a)所示,7天討論熱度圖如圖4(b)所示。
5結束語
本文設計了基于Python的新浪微博輿情監控系統,提出了三層系統框架,在設計過程中使用了Django, Scrapy, MySQL,pandas,WordCloud,AipNlp等工具,該系統能夠通過網頁進行交互操作,并通過圖表進行可視化。最后,以“新冠疫情”為熱點問題,對輿情監控系統進行測試,可以有效對輿情信息進行監控。未來將擴大信息采集面,獲得更全面、更真實的輿情信息,便于有效引導化解矛盾,構建和諧的網絡環境。
作者簡介:
張亞娟(1988—),碩士,講師,研究方向:信號檢測與處理。
張汝峰(1992—),碩士,講師,研究方向:計算機視覺、信息處理(通信作者)。