







收稿日期:2023-07-27
DOI:10.19850/j.cnki.2096-4706.2024.05.024
摘" 要:互聯網的興起使微博等自媒體平臺成為網民表達意見的主要途徑。同時,網絡輿情的迅速傳播使得網民輿論管理成為一個難題。針對傳統方法在微博輿情管理上的局限性,文章設計一種基于分布式爬蟲的微博輿情監測與情感分析系統,并借助情感分析和LDA主題提取技術,對熱點事件進行分析,幫助政府和企業更好地把握輿情發展動態,捍衛其社會公信力。
關鍵詞:網絡輿情;分布式爬蟲;情感分析;LDA主題提取
中圖分類號:TP311.1" 文獻標識碼:A" 文章編號:2096-4706(2024)05-0111-05
Design of Sinaweibo Public Opinion Supervision and Sentiment Analysis System Based on Distributed Crawlers
HE Xiyuan, ZHANG Yue, ZHANG Bingwen
(School of Information Engineering, Shandong Youth University of Political Science, Ji'nan" 250103, China)
Abstract: The rise of the Internet has made Sinaweibo and other We Media platforms the main way for netizens to express their opinions. At the same time, the rapid spread of Internet public opinion makes the public opinion management of netizens a difficult problem. Aiming at the limitations of traditional methods in Sinaweibo public opinion management, this paper designs a Sinaweibo public opinion monitoring and sentiment analysis system based on distributed crawler. It uses sentiment analysis and LDA topic extraction technology to analyze hot events, helping governments and enterprises better grasp the development dynamics of public opinion and defend their social credibility.
Keywords: Internet public opinion; distributed crawler; sentiment analysis; LDA topic extraction
0" 引" 言
近年來,微博作為中國最受歡迎的社交平臺之一,已成為人們信息交流的主要途徑。微博每天都發布上億條信息,海量信息中蘊藏著巨大的價值。通過分析,可以有效了解網民們對熱點事件的態度,并對輿情發展動態進行有效監控。了解社情民意、調整政策、回應社會關切對于政府和企業具有重要意義。
傳統的輿情分析方法主要采用人工方法或機器學習進行。然而,在網絡時代下,這些方法已經難以滿足快速處理分析的需求。一方面,微博對用戶IP的訪問次數進行限制,導致數據獲取困難。另一方面,微博所涵蓋的數據規模巨大,其半結構化和非結構化數據類型使得數據處理存儲困難。
分布式爬蟲技術可以有效解決傳統的輿情分析方法在應用中存在的局限。分布式爬蟲技術可以充分利用分布式系統的優勢,實現大規模數據的快速抓取和高效處理,為輿情分析提供更為全面準確的數據支持。情感分析和主題提取是常用的輿情分析方法[1]。情感分析技術能夠展現網民對社會熱點的情感態度,而主題提取則可以在大量的輿情信息中識別出輿情熱點。為了彌補傳統輿情分析方法的缺陷,本文從數據采集、處理、存儲、文本挖掘和可視化展示五個方面設計了一個基于分布式爬蟲技術的輿情監測和分析系統,用于挖掘輿情事件的熱點和情感傾向,幫助政府和企業引導輿情。
1" 架構設計
為了滿足網絡輿情發展的特點和輿情管理的相關需求,微博的輿情分析系統應該具備以下主要功能:采集微博熱度輿情事件、定時采集熱點事件、以監控事件發展動態以及篩選輿情數據。為此,本系統通過微博熱搜榜上的熱搜關鍵詞獲取數據。
根據上述需求,本系統的架構設計包括數據采集、數據存儲、數據分析和數據呈現四個方面。系統架構圖如圖1所示。
1.1" 數據采集層
由于微博采取了一系列的反爬機制,數據的獲取變得十分困難。采用BeautifulSoup和Request進行數據爬取時,在爬取時間和獲取數據量方面的效果并不理想。因此,本文主要使用兩個爬蟲來獲取數據,分別是基于Scrapy框架的分布式爬蟲和基于多線程爬蟲,這可以大大提升爬取效率。具體過程如圖2所示。
圖2" 數據爬取流程圖
1.1.1" 基于Scrapy框架的分布式爬蟲
Scrapy框架是一種開放源碼的、以Python為基礎的、可以快速有效地從大規模網頁中獲得有關信息的工具。Scrapy用途廣泛,可以用于數據挖掘、監測和自動化測試[2]。該框架方便擴展并且易于開發。
微博平臺每天涌現出數量驚人的博文,而一個社會熱點所涉及的博文數量往往更是龐大且海量。為了滿足輿情分析的需求,單個主機遠遠不夠,因此需要采用分布式設計。文章向每一臺主機共享一個Scrapy隊列,調度程序在每一臺主機上獲得一個請求以進行爬行。這種設計使得爬蟲程序能夠在多臺主機上運行,從而大幅提高其爬取效率[3]。
在Scrapy框架下,爬蟲的分布式采集方式是通過設定關鍵詞,獲得一個或幾條連續的微博搜索結果,并將結果寫入文件或數據庫。微博關鍵詞檢索是一種檢索博文中含有指定關鍵詞的微博的方法,允許用戶指定搜索的時段。例如,設定“圍棋”為關鍵詞,爬取在9月到10月期間所有包含該關鍵詞的微博。爬蟲程序將對該時間段內的微博內容進行篩選爬取。獲取的內容涵蓋了微博用戶ID、微博ID、博文內容、發布位置、點贊數和評論數等信息。
1.1.2" 多線程爬蟲
為了更有效地執行多線程爬蟲,本文采用了Python的Thread庫。多線程爬蟲通常使用分布式爬蟲獲取微博用戶ID和微博ID對URL進行地址定位,以確定所要訪問的內容。然后,根據預設的線程數量將任務平均分配到各個線程中,以抓取微博下的二級評論信息和發布微博的用戶信息。
根據微博網頁的類型,該系統使用Python的lxml類庫和re類庫實現Web頁面的分析。lxml庫是Python中用于解析HTML和XML文檔的高效工具。這個類庫能夠對文本進行快速的分析和抽取。使用re庫可以快速靈活地抽取所需要的信息,并且輕松處理網頁數據。為了提高數據價值,該系統在獲取微博評論、用戶ID和評論時間的同時,將根據用戶ID進入評論者主頁,以獲取評論者的個人信息。
1.1.3" 爬蟲優化
在進行微博數據獲取時,經常會面臨反爬蟲機制的限制和障礙。微博的反爬機制主要包括登錄驗證、IP限制、Cookie池和數據加密。這些機制為數據獲取增加了難度。本文將采用以下方法來提高程序性能。
1)在Scrapy框架中,可以通過自定義中間件和擴展等方式,結合Selenium來實現請求的模擬登錄。這樣可以避免被反爬機制識別為機器登錄,同時實現爬取到微博登錄后才能瀏覽的數據。使用Selenium還可以自由切換IP和User-Agent等參數,從而提高爬取的成功率,降低IP被禁的風險。
2)設置代理IP池。用戶頻繁對網頁進行訪問可能會導致IP被封。雖然本文采用了多線程爬蟲來提高效率,但其也存在被封IP的風險。因此,該系統設置了一個穩定的代理IP池,一旦發現IP被封,即及時更換。保持系統的穩定運行。
1.2" 數據存儲層
微博數據往往呈現出無結構的形式[4]。微博是一種隨性而發的文本內容,可以包含文本、圖片、視頻、表情等不同的內容形式,并可能出現錯別字、縮寫、網絡用語等非標準的文本和語言表達。因此,傳統的關系型數據庫很難滿足存儲微博數據的要求。Mongodb是一種非關系型數據庫,能夠存儲非結構化的數據,因此成為處理微博數據的理想方案。此外,它還具有高性能、高可靠性、可擴展性和靈活性,能夠快速存儲和處理大量的微博數據。
1.3" 分析層
1.3.1" 文本預處理
為達到更好的文本分析效果,對于微博文本進行預處理時,需要運用噪聲消除、停用詞去除、文本分割等技術。在Numpy庫的基礎上,利用Pandas工具對數據進行預處理,以解決數據不完整、冗余和臟數據等問題。在分詞過程中,將中文分詞多個單詞,這些單詞在語義上是完整的。與英文不同的是,中文沒有明顯的分詞界限。因此,在中文中進行分詞是一件非常困難的事情。為了解決這個問題,該系統使用了jieba庫,這是一款強大而靈活的中文分詞工具,能夠精確地進行分詞操作。通過對微博評論進行文本分詞,利用停用詞表刪除無實際意義的停用詞,這樣提升了程序的運行速度和效率,并為文本分析做準備。文本預處理流程如圖3所示。
1.3.2" 情感分析
文本情感分析,又稱傾向性分析,是對具有主觀情感色彩的文本進行分析、處理、歸納和預測的過程[5]。本文采用了一種基于貝葉斯的文本分類方法,該方法具有計算復雜度低等優點。在對評論文本進行TF-IDF處理的基礎上,對其進行矢量表達,并對其進行情緒分類,將其分為兩個類別。為提高模型準確度,本文爬取了十幾萬條微博博文和評論數據,涵蓋軍事、娛樂、音樂、美食等領域。然后,進行模型的訓練。根據訓練好的模型得出情感得分,得分越高情感越積極,越低則越消極。通過對某一輿情事件的情感值進行匯總統計,可以很直觀地看出公眾對該事件的態度。算法流程如圖4所示。
圖3" 文本預處理流程圖
1.3.3" 基于LDA主題提取
LDA是由Blei等[6]提出的一種基于Dirichlet分布的概率話題模型,它包含了文檔、主題和詞項3個層次。LDA廣泛應用于無監督訓練中[7-10],因為它可以有效地訓練且不需要帶標簽的訓練數據。
按照LDA模型,文檔生成過程如圖5所示。
圖5" LDA算法模型
首先,根據參數α的Dirichlet分布中采樣來產生一個文檔相應話題的多項式分布θ;其次,根據題目的多項式分布θ中采樣,以產生文檔i第j個詞的題目z;然后,根據參數β的Dirichlet分布中采樣,得到相應于主題z的特征性詞匯的多項式分布u;最后,根據單詞的多項式分布u對單詞進行抽樣,最終產生單詞w。
在此基礎上,提出了一種基于LDA的網絡輿情話題抽取方法。該系統先對采集到的輿情事件文檔進行降噪和分詞處理,得到以詞匯為單位的語料集合。然后,對文本中的每一個詞進行隨機的主題劃分。其次,利用Gibbs抽樣方法,根據詞頻和詞頻分布對各詞頻進行加權,對詞頻進行賦值。這一過程一直持續到文件、主題和詞匯的分配趨于一致為止。本文在20個主題中選取排名前5的主題來反映該輿情事件的主要熱點和趨勢,這樣的分析方法可以幫助用戶更好地了解事件的關鍵信息,進一步揭示其背后的本質。
1.4" 呈現層
本文旨在通過繪制圖表的形式,以使用戶能夠直觀地了解事件輿情的發展趨勢。詞云圖將微博博文的熱點呈現出來,用戶可以通過詞云圖快速了解熱點事件的信息。為繪制詞云圖,在微博數據預處理過程中,本文進行了降噪、去停、分詞等操作,得到關鍵詞。WordCloud庫是一個基于Python的開源詞云生成庫,可以方便地生成美觀、高度自定義的詞云圖。該庫的功能包括將給定的文本轉化為詞頻分布,然后根據詞頻繪制出具有藝術效果的詞云圖像。其提供了豐富的參數和方法,使用戶能夠輕松實現對詞云圖的個性化定制。
情感分析的結果和主題展示的呈現通過Echarts庫實現。Echarts提供了Python的接口PyEcharts,為Python用戶提供了更加方便的操作和使用方式。Echarts圖形類型廣泛,交互能力強,兼容性好,為用戶提供了個性化的樣式設計。
Django是一種以Python為基礎、帶有模板標記的網絡框架,可以加快開發速度。此外,支持自定義前端設計,輕松實現圖表和頁面間的兼容。另外,Django還提供了大量的第三方插件和類庫,這些類庫能夠提供給用戶更好的互動體驗。
2" 實驗及結果評估
本文以“唐山打人”事件為關鍵詞,爬取了2022年7月1日到9月30日的近2萬條微博博文和評論數據,并對該事件進行情感分析和主題提取,以揭示事件的輿情變化趨勢和公眾關注的熱點。
2.1" 統計事件的情感比例
根據情感分析結果,對微博評論進行正向、負向和中向三種類型的研究,并對輿情評論中各類情感進行統計。利用Echarts繪制動態圖表,以更直觀地展示公眾對該熱點事件的情感態度。根據圖6,可以了解各類數據的分布情況。在獲取的數據中,消極信息占據了76.7%的比例,這反映了網民對該事件的不滿、擔憂或批評。而通過圖7,可以具體地了解三類情感在輿情評論中的占比情況。
圖6" 事件整體數據概覽
圖7" 情感分析占比
2.2" 主題排行
根據LDA主題模型的結果,從20個主題中選出排名前5的主題詞,以更好地反映輿情事件的關注點和熱點。另外,使用Pandas庫對熱點詞進行了統計,得到了其在微博博文中出現的次數,圖8可以明確反映出各主題詞的出現頻率。根據圖8可知,唐山和暴力是出現頻率較高的主題詞,反映了公眾對于“唐山打人”事件的關注點和態度。
圖8" 主題詞排名
2.3" 繪制輿情地圖
根據采集到的微博評論的IP地址,將各評論所在地的省份進行分類匯總,并通過Echarts庫生成地域分布圖,可以直觀地展示各省對該輿情事件的關注度和態度。通過輿情地圖,可以發現該熱點事件引起了公眾的廣泛關注,進一步傳播和擴散,各省份之間的態度和情感也存在一定的差異和分歧。
2.4" 詞云圖
微博數據文本預處理后,使用WordCloud庫繪制了詞云圖,更好地突顯熱點詞。通過觀察詞云圖,用戶可直觀地了解整個輿情事件中關鍵詞的出現頻率和重要性,從而進一步了解事件的主要熱點和趨勢。具體效果如圖9所示。
圖9" 詞云圖
3" 結" 論
隨著網絡輿情形勢的不斷復雜化,準確掌握輿情發展趨勢顯得尤為緊迫。本文設計了一種利用情感分析和主題提取的輿情監測與分析系統。該系統采用分布式爬蟲和多線程爬蟲相結合的形式采集微博數據并進行文本預處理、情感分析、LDA主題模型提取等步驟,實現微博輿情的自動化監測和分析。同時,通過數據可視化技術,以圖表和詞云圖的形式呈現結果,用戶可直觀地了解輿情事件的關鍵信息和趨勢。在實際應用中,該系統展現了高效性、準確性和自動化的特點,具有廣泛的實用性和應用價值。針對不同的輿情事件,可以通過該系統進行自動化監測和分析,可以幫助政府和公司及時了解公眾聲音,把握輿情發展的動態,做出更好的決策。與此同時,該系統抓取數據的速度、情感分析模型和主題提取模型的準確性、用戶的交互性等有待提高。相信在未來的研究中,可以進一步完善和提高該系統的精度和實用性,為更好地服務社會提供更可靠的技術支撐。
參考文獻:
[1] 葉艷,吳鵬,周知,等.基于LDA-BiLSTM模型的在線醫療服務質量識別研究 [J].情報理論與實踐,2022,45(8):178-183+168.
[2] 姚云飛,杜洪波,梁建輝.基于SpringMVC框架畢業設計管理系統設計 [J].軟件,2018,39(1):91-93.
[3] 周毅,李威,何金,等.基于Scrapy框架的分布式網絡爬蟲系統設計與實現 [J].現代信息科技,2021,5(19):43-46.
[4] 劉子謙,王志強.基于爬蟲和文本處理的微博輿情分析系統 [J].北京電子科技學院學報,2020,28(3):31-39.
[5] 孫強,李建華,李生紅.基于Python的文本分類系統開發研究 [J].計算機應用與軟件,2011:28(3):13-14.
[6] BLEI D M,NG A Y,JORDAN M I. Latent Dirichlet alloction [J].Journal of Machine Learning Research,2003,3:993-1022.
[7] 邰悅,葛斌,李慧宗.基于改進LDA的細粒度主題建模方法研究 [J].佳木斯大學學報:自然科學版,2022,40(5):1-4.
[8] 張東鑫,張敏.圖情領域LDA主題模型應用研究進展述評 [J].圖書情報知識,2022,39(6):143-157.
[9] 楊文忠,丁甜甜,康鵬,等.基于輿情新聞的中文關鍵詞抽取綜述 [J].計算機工程,2023,49(3):1-17.
[10] 高萬林,張港紅,李楨,等.關于農業信息化與農村信息化關系的探討 [J].中國農學通報,2011,27(1):466-470.
作者簡介:何西遠(2002—),男,漢族,山東濟寧人,本科在讀,研究方向:大數據、人工智能。