


摘要:境外輿情對于我國的國際形象和國內的穩定具有重要作用,是國家安全的重要部分。通過對Twitter數據分析,該文設計了基于Twitter的境外輿情分析系統。該系統使用Twitter提供的APl數據作為數據源,使用自然語言處理的方法進行數據清洗,通過數據挖掘方法對數據進行大數據分析,最后通過工具進行可視化展示。
關鍵詞:社交網絡;境外輿情分析;大數據挖掘;Twitter
中圖分類號:G350 文獻標識碼:A
文章編號:1009-3044(2020)27-0030-04
開放科學(資源服務)標識碼(OSID):
1 背景
輿情是公眾對社會現象、問題、信仰、態度、情緒等的反應。境外輿情對于我國的國際形象和國內的穩定具有重要作用,是國家安全的重要部分。通過境外輿情進行分析系統,及時發現并處理不利于我國的輿論是十分必要的。
Twitter[1](官方中文譯名推特,但繁體中文和簡體中文的界面均記作Twitter)是一個社交網絡與微博服務,它可以讓用戶更新不超過280個字符的消息(中文、日文和韓文為140個),這些消息也被稱作“推文(Tweet)”,是全球使用最多的社交網絡服務。
Twitter是互聯網上訪問量最大的十個網站之一,世界排名前100名的公司中已經有73%出現在了Twitter上,比爾·蓋茨、Lady Gaga、FBI、美國紅十字會、卡塔爾半島電視臺等很多名人和組織都通過Twitter與大眾進行互動,甚至還有60余位國家首腦活躍其中。從個人的生活瑣事至官方代言、企業營銷,再到全球性的新聞事件,以Twitter為代表的微博網站作為互聯網Web2.0時代的最新的應用,憑借其對信息傳播模式的變革影響著這個世界的溝通方式與生活方式。因此,Twitter數據十分適合進行境外輿情分析。
2 系統設計
通過對Twitter平臺進行分析。它與其他數據分析系統有相當大的區別:
1 )Twitter在國內無法訪問,需要使用境外代理服務。
2)Twitter數據是以數據流的方式進行傳輸,需要使用Twit-ter自身的數據傳輸接口[2-4]。
3 )Twitter數據的鍵值的特殊格式需要使用NoSQL方式進行存儲。
4)輿情分析主要任務包括發現目前流行的話題和話題的導向。
系統分為五個部分,系統結構如圖1所示:
1)輿情數據抓取:使用python的tweepy[5]工具包來獲取Twitter數據。
2)輿情數據預處理:使用NLTK[6]工具包來進行數據預處理。
3)輿情數據存儲;使用NoSQL數據庫MongoDB[7]來存儲數據。
4)輿情數據分析:使用GemSim[8]發現輿情主題,使用vad-erSentiment[9]進行主題情感分析。
5)分析結果可視化:使用Flask[10]開發web應用,使用mat-plotlib[11],D3.js[12]和wordcloudn3]來進行數據可視化。
2.1 Twitter數據抓取
基于Twitter Streaming API[6]的Twitter實時數據抓取。Twit-ter公司為了便于開發者使用Twitter的數據,提供了開發者平臺,該平臺提供了不同的API接口,用于調取不同的Twitter數據。該接口分為兩大類:‘rwitter REST API和Twitter StreamingAPI。Twitter REST API用于讀寫Twitter數據,包括用戶資料、用戶推文、用戶好友、用戶時間軸、檢索推文、地理位置信息、區域話題趨勢等等。Twitter REST API使用Twitter應用和用戶提供的OAuth信息進行身份驗證,返回結果是JSON格式數據。Twitter Stream API用于實時的監控和獲取Twitter數據流。
OAuth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯系人列表),而無須將用戶名和密碼提供給第三方應用。Twitter OAuth由以下四個部分組成:consumer key,consumer se-cret.access token和access token secret。JSON這種數據格式的特點是,冗余少,數據結構清晰,非常適用于對數據的抽取分析。
Twitter的Streaming API提供給開發者獲取Twitter全球實時數據流的途徑。通過該方法抓取的Twitter實時數據流,效率高質量好,但由于抽樣獲取數據不齊全。Twitter Streaming API包括三個方面Public Streams,User Streams和Site Streams。一般使用Public Streams,Twitter Streaming API和REST API的區別如圖3,圖4所示。
為了便于使用本系統使用基于python實現的Twitter API工具包tweepy來調用Twitter Streaming API獲取實時數據。tweepy工具包可以使用地理坐標信息或關鍵詞信息來獲取實時數據。
2.2 Twitter數據預處理
Twitter數據文本含有很多標簽、注釋、標簽和地址等特殊符號的情況,綜合使用Python自然語言處理工具包NLTK和正則表達式等工具對其進行數據清洗。主要處理過程包括,提取詞元(token)、詞根化(stemming),保留表情、標簽等特殊符號,去停用詞.完整的Twitter數據預處理過程如圖4所示。
2.3 數據存儲
通過Twitter Streaming API抓取的數據格式JSON,先分析該JSON文件的結構,如表1所示。
從結構中我們可以選出重要的字段,“text”推文的文本內容,“created at”推文創建時間,“favorite count”喜愛的成員個數,“retweet count”轉推成員個數,“retweeted”是否被轉推,“Lang”語言,“id”推文的標識,“entities”推文中實體名:如URLs,hashtag,“place”推文發布位置信息,“user”推文發布者信息和“source”發送推特源等字段。
這種用JSON格式數據的鍵值性數據,并不適合存儲在關系型數據庫中。可以存儲到MongoDB這樣的NoSQL型數據庫,使用它存儲twitter數據最大的好處是大大地壓縮存儲空間,而且對于大量數據可以提供強大的查詢操作和檢索機制,分析處理過程。
在python中使用pymongo[15]來對mongo dB數據庫進行操作,對于獲取的每一條twitter數據只需要將我們關心的推文內容,地理位置,標簽,創建時間,語言,發送源等字段信息保存起來即可,大幅減少需要存儲的數據量。存儲在mongodb數據庫中狀態,可以通過命令行查看(如圖5),也可以通過可視化軟件Rob0 3T[16](如圖6)來加以查看。
2.4 twitter熱點主題發現
隱含狄利克雷分布簡稱LDAn[17](Latent Dirichlet allocation),是一種主題模型,它可以將文檔集中每篇文檔的主題按照概率分布的形式給出。同時它是一種無監督學習算法,在訓練時不需要手工標注的訓練集,需要的僅僅是文檔集以及指定主題的數量k即可。此外LDA的另一個優點則是,對于每一個主題均可找出一些詞語來描述它。LDA方法原理示意圖如圖7所示。
LDA是一種典型的詞袋模型,即它認為一篇文檔是由一組詞構成的一個集合,詞與詞之間沒有順序以及先后的關系。一篇文檔可以包含多個主題,文檔中每一個詞都由其中的一個主題生成。
狄利克雷分布作為多項式分布的共軛先驗概率分布。因此正如LDA貝葉斯網絡結構中所描述的,在LDA模型中一篇文檔生成的方式圖8所示。
但GemSim庫已經提供了所有需要的基本功能。通過以下步驟使用GemSim提取LDA主題模型:
1)獲取語料。
2)文本預處理。
3)LDA分析。
4)顯示結果。
表2為使用GemSim建立里約2016奧運會LDA話題模型代碼示例。圖9為獲得的十大話題。
2.5 twitter情感分析
文本情感分析是以情感為計算對象,對文本的正面和負面情緒等不同情緒,通過工程方法進行分析處理,得出情感傾向性的計算過程。通常情況下,文本情感分析被當作分類問題來處理。與常規的文本分類問題不同的是情感分類的類別標簽是情感因素。文本情感分析可分為二分類和多分類。前者是將文本情感分為正面和負面;后者是將情感細化為高興、悲傷、憤怒、害怕、憎恨等。按照文本情感分析的粒度大小,文本情感分析可劃分為詞語級別的情感分析、句子級別的情感分析和段落級別的情感分析。情感分析也稱為觀點挖掘,是自然語言處理的核心研究內容之一。其研究目的是使用自然語言處理手段對文本中體現的個人觀點情感進行分析、評估。
為了高效地對twilter文本進行情感分析,本系統使用py—thon的基于情感詞典的VADER分析包vaderSentiment,進行情感分析,而且實驗證明它對于mitter這樣的微博分析尤其出色。其情感詞典不僅包括了很多的帶有很強感情色彩的詞語及對應的分值比例還包括了twitter數據中可能會出現的表情符號的感情分值和比例,因此對于twilter的情感分析十分高效精確。開發vaderSentiment分析包的佐治亞理工學院的C.J.Hutto等人,通過實驗分析出對于小而多的社交網站數據的情感分析,使用vaderSentiment效果更好。
2.6 數據可視化
數據可視化是數據挖掘的一個重要的部分。數據可視化借助圖形化手段,清晰有效地傳達與溝通信息。數據可視化與信息圖形、信息可視化、科學可視化以及統計圖形等有密切關系。數據可視化為人類洞察數據的內涵、理解數據蘊藏的規律提供了重要的手段。
本系統采用使用python T具包matplotlib實現數據分析可視化,使用JavaScript包D3.js實現數據動態可視化,使用python的wordcloud包實現詞云圖。
3 系統實現
通過本文設計的系統分析當前編程語言的流行程度,得出在twitter上Java、Python、C++的正面、負面和一般評價。
3.1開發語言和環境
開發語言主要為python,開發環境如表3所示。
3.2實驗結果
通過抓取得到4個小時的twitter數據。圖10為對編程語言的分析結果python在twitter上關注度最高,其次是Java,最后是C++,這也與現實中python目前是最熱門的編程語言相符。對于三種編程語言的正負面評價,對于python的正面評價最高。
4 總結
本文設計并實現了基于Twitter大數據的境外輿情分析系統,通過實例證明了該系統可以較好地滿足要求。但本系統只可以使用文字信息,為了將要研究如何將Twitter圖片和視頻信息也進行分析和處理,這將取得更好的效果。
參考文獻:
[1] Twitter[EB/OL]. [2020-02-20]. https://zh. wikipedia. org/wiki/Twitter.
[2] Ali D. Mining the social web: data mining facebook, twitter, Linkedln, google+ , github, and more, by Matthew A. RusseII[J].Journal of Information Privacy and Security, 2015, 11(2): 137- 138.
[4] Twitter development document[EB/OLl. [2020-02-20l. https://dev.twitter.com/overview/documentation.
[5] Tweepy: an easy-to-use python library for accessing the twit-ter api[EB/OL].[2020-02-20].http://www.tweepy.org/.
[6] N LTK[E B/OLl.[2020-02-20l.https ://www.nltk.org/.
[7] Mongodb[E B/OL].[2020-02-20].https://www.mongodb.com/e n.
[8] GemSim[EB/OLl. [2020-02-20]. https://sourceforge. net/projects/gemsim/.
[9] VaderSentiment[EB/OL]. [2020-02-20]. https://github. com/vad-erSentiment.
[10] flask[E B/O L].[2020-02-20l.http://flask.pocoo.org/.
[11] matplotlib[EB/OL].[2020-02-20l.https://matplotlib.org/.
[12] d3.j s[E B/OLl.[2020-02-20l.https://d3j s.org/.
[13] wordcloud[EB/OL]. [2020-02-20]. https://amueller. github. io/word_cloud/.
[14] "Twitter's API - HowStuffWorks[EB/OL].[2020-02-20].https://computer. howstuffworks. com/intemet/social-networking/net-works/twitter2.htm.
[15] pymongo[EB/OL]. [2020-02-20]. https://api. mongodb. com/py-thon/current/tutorial.html.
[16] Rob0 3T[EB/OLl.[2020-02-20].https://robomongo.org/.
[17] LDA[EB/OL]. [2020-02-20]. https://en. wikipedia. org/wiki/La-tent_Dirichlet_allocation.
作者簡介:劉斌(1983-),男,中級工程師,碩士,研究方向為大數據挖掘、自然語言處理。