孟慶昊,沈 妍,李青君,蘇 波
(首都師范大學(xué) 物理系,北京 100037)
以互聯(lián)網(wǎng)為媒介的網(wǎng)絡(luò)輿情信息是網(wǎng)民在特定事件中的態(tài)度、意見和看法,具有強(qiáng)烈的情感表達(dá)色彩[1]。在21世紀(jì)這個信息化的時代背景下,數(shù)以億計的用戶在微博上圍繞國家政策、民計民生、娛樂八卦等話題不斷產(chǎn)生出海量的體現(xiàn)著個人意志的輿情數(shù)據(jù),若不加以引導(dǎo),任由其肆意發(fā)展那么謠言重傷、惡語相向?qū)涑庵麄€社會,由此可見建立一個完善的輿情監(jiān)控體系顯得尤為重要[2]。
2020年新冠肺炎席卷全球,醫(yī)療行業(yè)受到社會廣泛關(guān)注,隨之而來的便是海量輿情信息的爆發(fā),針對這一社會現(xiàn)狀,本課題以Python作為開發(fā)語言,設(shè)計實現(xiàn)一套基于爬蟲技術(shù)的醫(yī)療行業(yè)輿情監(jiān)控系統(tǒng)。摒棄以往數(shù)據(jù)獲取方式,為解決數(shù)據(jù)信息獲取困難等問題。本系統(tǒng)使用通用爬蟲作為數(shù)據(jù)源獲取手段進(jìn)行系統(tǒng)開發(fā),并以CSV文件的形式存儲數(shù)據(jù)。系統(tǒng)以自然語言處理作為工作核心,使用Sonw模型、樸素貝葉斯算法、Jieba分詞、LDA聚類以及關(guān)鍵詞提取等技術(shù)對初始數(shù)據(jù)集進(jìn)行處理和分析,使用PyEcharts、Tkinter工具將處理結(jié)果和輿情信息以可視化界面的方式向用戶展示出來。
網(wǎng)絡(luò)爬蟲(Web Crawler)又稱為網(wǎng)絡(luò)蜘蛛(Web Spider),是一個智能抓取網(wǎng)頁的程序,網(wǎng)絡(luò)爬蟲最初設(shè)計用于搜索引擎中,成為搜索引擎不可缺少的組成部分。首先給定一些種子鏈接放到爬蟲隊列中,網(wǎng)絡(luò)爬蟲通過鏈接對應(yīng)的頁面抓取新鏈接放到隊列中,繼續(xù)抓取更多的鏈接,重復(fù)這一周而復(fù)始的過程,直到滿足爬蟲設(shè)定的終止條件為止[3]。按照爬蟲的功能、結(jié)構(gòu)、爬行策略以及實現(xiàn)技術(shù)的不同,網(wǎng)絡(luò)爬蟲可以劃分為3大類:通用爬蟲(General Crawler)、聚焦爬蟲(Focused Crawler)和深度爬蟲(Deep Crawler)。
本輿情監(jiān)控系統(tǒng)使用Anaconda進(jìn)行開發(fā),用到了一些Python自帶的庫文件:包括Pyecharts可視化庫、CVS存儲爬取數(shù)據(jù)、Tkinter庫搭建操作界面等。本系統(tǒng)所用技術(shù)如下:
(1)Anaconda是主流的Python IDE之一,擁有很多方便高效的工具,是Python開發(fā)人員的得力助手。另外還支持基于Django框架的專業(yè)Web開發(fā),是一款開源的Python開發(fā)平臺。
(2)本系統(tǒng)主要借助了一些Python內(nèi)置的庫文件,如re、selenium、pandas、requests、os、pickle等模塊。這些模塊拿之即用,免去了繁瑣的開發(fā)過程,極大地提高了開發(fā)效率。
(3)Ui界面采用Python內(nèi)置的Tkinter,相較于Pyqt5小巧,并且高效,完全能勝任本系統(tǒng)的功能需求。
2.2.1 輿情采集模塊
輿情采集利用網(wǎng)絡(luò)爬蟲技術(shù)來完成微博上關(guān)于醫(yī)療衛(wèi)生行業(yè)熱點話題的信息采集。
2.2.2 數(shù)據(jù)處理模塊與輿情應(yīng)用模塊對爬取到的數(shù)據(jù)進(jìn)一步篩選統(tǒng)計處理,需完成下述功能:輿情信息查詢即實現(xiàn)對醫(yī)療輿情信息的基于關(guān)鍵詞的數(shù)據(jù)查詢功能;
統(tǒng)計分析即對醫(yī)療輿情信息進(jìn)行歸類匯總,通過自然語言處理,根據(jù)不同條件形成可視化數(shù)據(jù);
輿情預(yù)警是整個系統(tǒng)的核心功能之一,通過文本的情感傾向性分析,進(jìn)行輿情信息正負(fù)面情緒識別,并對負(fù)面醫(yī)療輿情進(jìn)行預(yù)警。
2.2.3 系統(tǒng)管理模塊
該模塊實現(xiàn)用戶注冊、用戶登錄、醫(yī)療關(guān)鍵字設(shè)定等主要系統(tǒng)功能。
2.3.1 系統(tǒng)總體結(jié)構(gòu)設(shè)計
通過對醫(yī)療行業(yè)輿情監(jiān)控系統(tǒng)的整體分析,將系統(tǒng)功能劃分為4大功能模塊,其體系結(jié)構(gòu)如圖1所示。
圖1 系統(tǒng)總體結(jié)構(gòu)圖
2.3.2 數(shù)據(jù)處理流程設(shè)計
系統(tǒng)數(shù)據(jù)處理模塊主要完成對微博上公開的醫(yī)療行業(yè)輿情信息的清洗、處理和存儲,為接下來實現(xiàn)數(shù)據(jù)可視化展示打下基礎(chǔ)。系統(tǒng)數(shù)據(jù)處理流程圖如圖2所示。
圖2 數(shù)據(jù)處理流程圖
2.4.1 情感分析功能
輿情信息的情感分析處理是基于Python的SonwNLP模型作為情感分析的模型,該模型原理是機(jī)器學(xué)習(xí)中的Naive-Bayes分類方法,對數(shù)據(jù)文本利用Jieba分詞工具進(jìn)行分詞并使用哈工大停用詞表去除停用詞[4]。在此基礎(chǔ)處理后,提取單句的關(guān)鍵詞信息,將單句評論的詞匯作為模型特征:(ω1,ω2,...,ωn),再利用樸素貝葉斯公式進(jìn)行打分:
其中:C1代表積極類情緒,等式右邊的計算基于訓(xùn)練好的模型,分?jǐn)?shù)越高代表語句情感越積極。情感分析功能實現(xiàn)如圖3所示。
圖3 情感分析結(jié)果圖
2.4.2 關(guān)鍵詞搜索功能
輿情信息關(guān)鍵詞搜索功能涉及的核心算法有LDA聚類、關(guān)鍵詞提取技術(shù)等。首先根據(jù)關(guān)鍵詞信息對整個數(shù)據(jù)源LDA聚類,篩選出符合要求的微博數(shù)據(jù)。作為一個主題生成模型,同時也是一個三層貝葉斯概率模型,用于基于關(guān)鍵詞的數(shù)據(jù)篩選效果良好[5]。接著使用NLP技術(shù)中的關(guān)鍵詞提取技術(shù),對符合條件的微博數(shù)據(jù)進(jìn)行關(guān)鍵詞提取整合。最后交付可視化系統(tǒng)進(jìn)行展示。如圖4所示為搜索關(guān)鍵詞為“醫(yī)療”時用戶關(guān)注的輿情信息詞云生成圖。
圖4 關(guān)鍵詞搜索詞云生成圖
2.4.3 可視化功能實現(xiàn)
通過對輿情信息獲取模塊爬到的數(shù)據(jù)源經(jīng)過上述處理后,利用Python可視化包庫進(jìn)行數(shù)據(jù)統(tǒng)計、畫出數(shù)據(jù)分析結(jié)果柱狀圖、餅狀圖、關(guān)鍵詞詞云等可視化圖像。醫(yī)療行業(yè)網(wǎng)絡(luò)輿情監(jiān)控系統(tǒng)主界面如圖5所示。
圖5 系統(tǒng)界面圖
本課題選取通用爬蟲作為數(shù)據(jù)獲取工具,以自然語言處理技術(shù)作為核心工作,成功設(shè)計出一套基于爬蟲技術(shù)的醫(yī)療行業(yè)輿情監(jiān)控系統(tǒng),對時下熱點話題——新冠肺炎的輿論監(jiān)控和導(dǎo)向起到了一定的作用。