程政陽,王家航,邱明月
1.1.1 新浪微博發展現狀
中國互聯網絡信息中心(CNNIC)發布第43 次《中國互聯網絡發展狀況統計報告》。報告顯示,截至2018 年12 月,我國網民規模為8.29 億,互聯網普及率達59.6%①。經過許多年的發展,微博平臺上有大量的用戶,幾乎涵蓋了整個中國網民的群體,許多輿情事件的首曝地都是在微博平臺上。因此針對新浪微博上的新浪輿情進行研究有很大的實用性,研究的成果即情報產品也能為公安部門進行決策提供參考。
1.1.2 研究工具介紹
R 是用于統計分析和繪圖的語言和操作環境。R是屬于GNU 系統的免費、免費和開源軟件。它是統計計算和統計制圖的極好工具。R 語言是S 語言的一個分支,廣泛應用于統計學領域,大約在1980 年誕生。可以認為R 是S 語言的一個實現。S 語言是美國電話電報公司貝爾實驗室為數據勘探、統計分析和繪圖而開發的一種解釋性語言。S 語言的原始實現版本主要是S-PLUS。S-PLUS 是一個基于S 語言的商業軟件,由Mathsoft 統計科學部進一步改進。后來,新西蘭奧克蘭大學的羅伯特·紳士和羅斯·伊哈卡以及其他志愿者開發了一個R 系統。R 開發核心團隊負責開發。R 可以看作是由美國電話電報公司貝爾實驗室的里克·貝克爾、約翰·錢伯斯和艾倫·威爾克斯開發的S 語言的一種實現。當然,S語言也是S-PLUS 的基礎。所以,它們在程序語法上幾乎是相同的,也許只是在功能上略有不同。程序可以很容易地移植到一個程序中,其中許多程序只需稍加修改就可以應用到R 中。
本文采用的研究方法主要是文本情感分析和聚類分析的方法,旨在通過文本情感分析分析微博評論的情感分值,判斷輿情事件整體的情感方向,為下一步制定輿情引導策略提供參考依據,另外通過聚類分析可以清楚地劃分微博評論的類別,緊接著可以進行觀點提取,通過這樣的手段可以了解到輿情事件中網民的觀點分布,從中提取對公安情報工作有價值的信息,為公安部門服務。
微博是一個用戶量十分龐大的平臺,每年發生的涉警輿情事件有很多,對于微博中所有輿情事件進行研究顯然不現實。在《2018 年度中國互聯網輿論分析報告》中,2018 年度互聯網輿情事件共有20 起,其中涉警輿情事件有7 起,如表1 所示,且熱度都比較高,所以從新浪涉警輿情入手研究涉警輿情比較容易。而在研究新浪輿情時,微博評論最能夠反應社情民意。
綜上所述,基于新浪微博的分析需要,參考輿情事件的熱門程度和發生時間等因素,筆者選取了2019 年3 月24 日發生的熱點輿情事件“常德滴滴司機遇害事件”作為此次微博評論獲取的對象,爬取的對象為澎湃新聞在2019 年4 月29 日發出的微博“常德殺害滴滴司機大學生被診斷患抑郁癥,有限定刑事責任能力”下方的評論4000 條作為下文分析的數據來源,以便進行接下來的數據分析。

表1 2018年度中國互聯網輿論分析報告
根據常德市公安局鼎城區分局通報,2019 年3 月23 日深夜,犯罪嫌疑人楊某淇(男,現年19歲,武陵區人)搭乘網約車從武陵區前往江南城區。3 月24 日0 時左右,在江南城區大湖路常南汽車總站附近下車時,坐在后排的楊某淇乘司機陳某不備,朝陳某連捅數刀,致陳某死亡。楊某淇事后到公安機關投案自首,據楊某淇供述,其因悲觀厭世早有輕生念頭,當晚因精神崩潰無故將司機陳某殺害。
4 月29 日下午,被害司機家屬向澎湃新聞出示了嫌犯楊某淇的精神鑒定意見書,該鑒定意見書顯示,楊某淇診斷為抑郁癥,在本案中實施危害時有限定(部分)刑事責任能力。當天下午,澎湃新聞從常德市鼎城區公安局證實了該份鑒定意見書的真實性。29 日,受害者家屬表示已經向公安部門提出重新鑒定申請,不認可嫌犯有“作案時有限定(部分)刑事責任能力”的鑒定結論。
本次的輿情事件始發于3 月23 日,這次事件帶著“警察”“滴滴出行”“網約車”“司機死亡”這些敏感的標簽而且事件發生的場所是在2018 年中頻繁出事的網約車上,所以事件肇始時就有很多人在關注著,在4 月29 日下午18 時55 分澎湃新聞在新浪微博客戶端發表“常德殺害滴滴司機大學生被診斷患抑郁癥,有限定刑事責任能力”的微博后引起網友熱議,評論上萬。
筆者是通過微博評論研究與輿情事件中情感變化趨勢,所以微博評論的數據就很重要。因此,本文的數據爬取也從微博評論下手,在網頁上爬取數據的手段和方式有許多種,本文選擇的是通過R 語言爬取。爬取原理如圖1 所示。

圖1 爬取原理
在正式爬取數據之前要做一些準備,首先,要安裝幾個需要的程序包“RCurl”“jsonlite”“stri ngr”“xlsx”“XML”“plyr”“reshape”,安裝的代碼是install.packages()。在安裝完這些程序包之后需要將其在r 語言中加載才能進行使用,加載的代碼是library()。在完成這些準備工作之后就可以進行爬取了。
爬取數據的第一步是測試我們所要爬取微博評論鏈接的url,我們爬取的微博是澎湃新聞的微博賬號下關于常德滴滴司機事件的微博。之后為了數據能夠順利爬取,要將爬蟲程序偽裝成一個瀏覽器,而實現這一手段的就是偽裝程序的報頭。
第二步就可以開始爬取數據了,爬取數據的代碼是webpage<-getURL(url,httpheader=myHttphea der),這一步爬取的數據格式是JSON 格式的,不是我們需要的結果,這個時候就需要使用之前加載的jsonlite 程序包中的fromJSON 函數來進行解析,解析的代碼是temple<-fromJSON(webpage)。這樣就可以初步的將微博評論的數據爬取了下來,爬取的數據包含評論的id、評論發表的事件、評論來源、用戶ID 和評論內容等。但是,我們最需要分析的數據----微博評論的格式依舊存在瑕疵,這樣的情況主要有兩個問題:1)評論中使用微博表情,以<span class…………</span>的形式呈現出來;2)還有一些雜亂的數據,以<a …………</a>的形式呈現出來。因此,需要之前加載的字符串處理包并借助正則表達式,再使用str_replace_all 函數把它替換掉。現在就數據就處理完畢了。但是爬取的數據僅僅是一頁10 條的微博,為了爬取更多的微博評論就需要搜集更多的微博ID 并加入循環結構。這樣就完成了數據的爬取,爬取之后的數據刪除掉一些分析所不需要的列,最終的結果是一個包含博主id、博主昵稱、評論內容、點贊數、回復數、發布時間,行數為4 000 行的數據。如圖2 數據預覽所示。

圖2 數據預覽
在對爬取下來的數據進行預處理之后,就可以對數據進行分析處理。但是所需要處理的數據大部分是文本型的數據,對于文本型數據直接進行處理比較困難。所以,筆者選擇對文本型數據進行一些先期處理,提取其中的情感態度,將微博評論的情感態度用具體的數值表現出來,之后再對這些數值進行進一步的分析處理。
筆者所采用的方法是基于語料庫的分析方法,語料庫需要大量的數據去進行訓練,才能產生比較好的效果,而本文所采集的4 000 條數據對于訓練一個效果較好的模型來較少,所以,本文選擇使用開源的語料庫來進行處理分析,即使用R 的Snowballc 程序包來實現。Snowballc 程序包是一個R 寫的類庫,可以用于處理中文文本,此程序包中所有的算法都是自己實現的,并且自帶訓練好的語料庫,可以直接使用。除此之外,要注意的是此程序包自帶的語料庫即訓練好的模型與本文所采集的數據所要適用的模型有一些出入,需要對模型進行一些調整。
在正式的情感分值計算之前要對微博評論數據進行分詞處理,分詞處理選擇的是逆向匹配法。逆向匹配法是將微博評論輸入到R 語言中作為一個完整的字符串,將字符串的第一個字與情感詞語料庫進行對比,如果沒有這一個字,就將這個字刪除,進行第一個詞的對比,直到字符串結束。舉個例子,以“這個東西很不錯”輸入到程序之后,“這”字先與語料庫進行對比,沒有匹配的字符之后,就將這個詞進行刪除,進行下一個詞的對比,直到比對到“不”字之后,可以與語料庫中某個詞進行對比了,然后比對到“錯”字,這個字符串比對結束,就保留了“不錯”這個詞作為結果。在這個過程需要使用循環結構。循環結構的原理是事先將字符串的字符數量導入到R 語言中并賦值給一個變量y,同時設置一個變量x 并且給這個變量賦值為0,然后對數據進行處理,每處理一個字就給變量x加上1,并與變量y進行對比,如果x小于y就繼續運行程序,否則就終止程序。
對于文本情感分析我們選擇使用“readxl”“Sn owballc”“Rwordseg”“stringr”這4 個程序包來完成,首先要將四個程序包加載,加載使用的函數是library(),在加載完成之后,讀取數據和情感詞典就可以將處理好數據導入到R 語言中進行處理。
這里處理的原理是將分詞完畢的數據與R 語言中的語料庫進行對比,如果出現了一個積極情感性質的詞語就記1 分,如果出現一個消極情感性質的詞語就記-1 分,最終將得到的分值進行匯總計算,得出該微博評論總的情感分值。因為要處理的數據總共有4000 條,所以這里要使用循環結構。循環結構的原理是事先將數據的總行數導入到R 語言中并賦值給一個變量y,同時設置一個變量x 并且給這個變量賦值為0,然后對數據進行處理,每處理一條數據就給變量x 加上1,并與變量y 進行對比,如果x 小于y 就繼續運行程序,否則就終止程序。
將整個數據分為消極類和特別消極類,4 000條數據每條數據的分值在-94~1 之間分布。一條數據的分值越小,該數據是消極的概率就越大,反之,一條數據的分值越大接近正數,該數據是積極的概率就越大。分析的結果如圖3 情感分析數據展示。

圖3 情感分析數據展示
正式運行K-means 模型進行運算時,本文將點贊數、回復數和情感分析的分值導入到模型中進行運算,最終得到的結果如圖4 聚類分析模型概覽。可以看到模型將數據分為了3 類,模型訓練的質量也比較好,在模型訓練中最重要的變量是情感分析的分值。
圖5 模型詳細數據是模型的詳細數據,其中占據模型絕大部分數據是聚類1(2840 條數據,占71.7%)和聚類2(913 條數據,占23.0%)。可以看到聚類1 情感分析的平均分值是-8.51,聚類2 情感分析的平均分值是-28.04,分值的差距較大,結合上文可以將聚類1 分為較為積極性質的評論,將聚類2 和3 分為消極性質的評論。

圖4 聚類分析模型概覽

圖5 模型詳細數據
根據以上模型分析的結果我們可以得出以下的結論,本次涉警輿情事件中,輿論情感方向是負面情感占絕大多數,但是這些負面的情感并不是針對公安部門的。根據詞頻分析和詞云的結果來說,網民評論大多是針對嫌疑人的譴責和嫌疑人想用自己患有抑郁癥為自己罪行開脫這一行為的不滿。
從微博評論的角度入手分析涉警輿情事件中人民群眾的情感趨勢是本文的研究角度,傳統的涉警輿情分析更多地從輿情聲量的趨勢入手,分析其傳播途徑、首曝平臺和人民群眾的主要觀點而對微博中大量的評論數據僅停留于簡單的應用。筆者認為,應對微博評論這種數據量大的文本型數據,利用人工處理比較困難,直接運用一些數理統計的模型對數據進行處理也不現實。所以,本文使用R 語言對這些數據進行文本情感分析,將文本型數據轉化為筆者熟悉的數值型數據進行處理。而面對數值型數據,存在很多成熟的、效果良好的數理統計模型可以分析處理。
本文對涉警輿情的情感趨勢進行分析發現在一起涉警輿情事件人們的情感趨勢在事件發展初期都傾向于兩極分化,即積極情感和消極情感的評論占大多數。在事件發展的中期,如果出現負面的新聞事件或公告,會導致輿情整體的情感傾向趨向于負面。如果出現中性的新聞事件或公告,會導致輿情整體的情感傾向趨向于中性。這是本文的研究發現。
注釋
①CNNIC:2019年第43次中國互聯網絡發展狀況統計報告[EB/OL].http://www.199it.com/archives/839412.html,2019-2-28.