Twitter數據挖掘:如何使用Python分析大數據

編程語言 Twitter Python 數據挖掘 極客聊天 2017-06-17

原文請見Twitter Data Mining: A Guide to Big Data Analytics Using Python。

大數據無處不在。在時下這個年代,不管你喜歡與否,在運營一個成功的商業的過程中都有可能會遇到它。

本教程將會簡要介紹何謂大數據,無論你是嘗試抓住時機的商人,抑或是尋找下一個項目的編程高手,你都可以學到它是如何為你所用,以及如何使用Twitter API和Python快速開始。

Twitter數據挖掘:如何使用Python分析大數據

何謂大數據?

大數據就像它看起來那樣——有大量的數據。單獨而言,你能從單一的數據獲取的洞見窮其有限。但是結合複雜數學模型以及強大計算能力的TB級數據,卻能創造出人類無法制造的洞見。大數據分析提供給商業的價值是無形的,並且每天都在超越人類的能力。

大數據分析的第一步就是要收集數據本身,也就是眾所周知的“數據挖掘”。數據來自於四面八方。大部分的企業處理著GB級的數據,這些數據有用戶數據、產品數據和地理位置數據。在本教程中,我們將會探索如何使用數據挖掘技術收集Twitter的數據,這可能會比你想象中的更有用。

舉個例子,假設你運營著臉書,想使用Messager數據為如何更好地向用戶投放廣告提供一些見解。而Messager擁有著12億月活躍用戶。在這個案例中,大數據就是用戶之間的對話。假設你能逐個閱讀每個用戶的對話,那麼就能清楚知道他們喜歡什麼,從而有針對性地向他們推薦相應的產品。使用廣為人知的自然語言處理(NLP)這一機器學習技術,你可以大型地實現這一點,並且整個過程自動化,一切交給機器即可。

這僅僅是機器學習和大數據分析為公司帶來價值的無數的示例中的一個。

為什麼選擇Twitter數據?

Twitter是一個數據金礦。不像其他的社交平臺,幾乎每個Twitter用戶的微博都是完全開放並且是可拉取的。如果你想嘗試獲取大量的數據然後對其進行分析,這是相當有幫助的。同時,Twitter的數據也是非常具體的。它的API接口允許你進行復雜的查詢,例如拉取最近20分鐘內關於指定某個話題的每一條微博,或者是拉取某個用戶非轉發的微博。

這裡一個簡單的應用就是,分析大眾是怎麼看待你們公司的。你可以收集提到你們公司(或者其他任何詞語)的最近2,000條微博,然後對其運行情感分析算法。

我們可以圈定具體居住在某個位置的用戶,也就是所謂的空間數據。另一個應用可以是,在地球上標誌出你們公司提及次數最多的地區。

如你所見,Twitter數據是通往大眾見解的一扇大門,以及他們是如何針對某個主題進行大數據分析的。這些,結合透明度和Twitter API接口慷慨的調用次數,可以產出非凡的結果。

工具一覽

對於這些示例,我們將使用Python 2.7。理想情況下,你應該有一個編寫代碼的IDE。我使用的是PyCharm - 社區版。

為了連接Twitter的API接口,將會用到叫做Tweepy的類庫,這個類庫稍微安裝一下就可以了。

入門指南

Twitter開發者賬號

為了使用Twitter的API接口,需要先在Twitter應用站點上創建一個開發者賬號。

  • 1、登錄或者在https://apps.twitter.com/

  • 2、創建一個新的應用(可點擊右上角的按鈕)

Twitter數據挖掘:如何使用Python分析大數據

  • 3、在創建應用的頁面填寫上唯一的名字,網站名字(如果沒有可以使用默認值),和項目描述。接受協議和條款然後進入到下一個頁面。

  • 4、一旦創建好了你項目,點擊“Keys and Access Tokens”標籤頁,應該就可以看到你使用的API secret和API key了。

  • 5、你還需要一對訪問憑證。可滾到下面並請求這些憑證。這時頁面會進行刷新,然後就可以獲得access token和access token secret了。

Twitter數據挖掘:如何使用Python分析大數據

Twitter數據挖掘:如何使用Python分析大數據

Twitter數據挖掘:如何使用Python分析大數據

稍候都要用到這些數據,所以先不要關閉這些標籤。

安裝Tweepy

Tweepy是一個超級棒的工具,它可用於訪問Twitter API接口。支持Python 2.6,2.7,3.3,3.4,3.5,,和3.6。安裝Tweept有好兩種不同的方式,最簡單的方式就是使用pip

使用pip安裝

在你的終端上簡單地輸入pip install tweepy即可。

使用Github安裝

可以按照Tweepy在Github倉庫上的說明進行操作。基本的步驟如下:

git clone https://github.com/tweepy/tweepy.git cd tweepy python setup.py install

你也可以在那解決任何安裝的問題。

認證

既然必要的工具已準備就緒,那麼我們就可以開始寫代碼了!今天將要構建的每一個應用,其底線都是需要引用Tweepy來創建一個API對象,以便我們可以進行函數的調用。然而,要想創建這些API對象,首先必須先認證我們的開發者信息。

首先,導入Tweepy,並添加我們自己的認證信息。

import tweepy consumer_key = "wXXXXXXXXXXXXXXXXXXXXXXX1" consumer_secret = "qXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXh" access_token = "9XXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXi" access_token_secret = "kXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXT"

現在是時候創建API對象了。

# 創建認證對象 auth = tweepy.OAuthHandler(consumer_key, consumer_secret) # 設置你的access token和access secret auth.set_access_token(access_token, access_token_secret) # 傳入auth參數,創建API對象 api = tweepy.API(auth)

這些代碼是構建每一個應用的基礎部分,所以確保不要刪除。

示例1:你的時間軸

在這個示例中,我們將會從你的Twitter動態中拉取最新的微博。通過使用API對象的home_timeline()函數可以做到這一點。隨後把這些結果存在某個變量中,並循環打印。

# 使用API對象獲取你的時間軸上的微博,並把結果存在一個叫做public_tweets的變量中 public_tweets = api.home_timeline() # 遍歷所拉取的全部微博 for tweet in public_tweets: # 打印存在微博對象中的text字段 print tweet.text

輸出的結果可能看起來像是一堆隨機的微博,後臺跟著指向微博本身的URL。

Twitter數據挖掘:如何使用Python分析大數據

打開指向微博的鏈接,通常會把你帶到對應的微博那。例如,打開上面第一條微博中的鏈接,會看到以下這樣的結果:

Twitter數據挖掘:如何使用Python分析大數據

注意,如果你是通過終端而不是通過像PyCharm這樣的IDE來運行的話,在打印微博的text內容時有可能會遇到一些格式化的問題。

結果背後的JSON

在上面的示例中,我們使用tweet.text打印了每一條微博的text內容。為了參考每一個微博對象有哪些具體的屬性,不得不去看一下Twitter API接口返回的JSON數據。

從Twitter API接口接收到的結果是以JSON格式返回的,並且附有有相當多的信息。為了簡單起見,本教程主要關注每一條微博的“text”屬性,以及關於博主(即發佈微博的用戶)的信息。對於上面這個例子,你可以在這裡看到整個返回的JSON對象。

下面快速來看下微博中提供的部分屬性。

Twitter數據挖掘:如何使用Python分析大數據

如果想找到創建微博的時間,可以使用print tweet.created_at進行查詢。

你還可以看到,每一條微博都帶有博主的相關信息。

Twitter數據挖掘:如何使用Python分析大數據

要是想獲取博主的namelocation屬性,可以執行print tweet.user.screen_nameprint tweet.user.location.

如果你的應用是基於空間數據的話,這些屬性將會非常有用。

示例2:指定某個用戶的微博

在這個示例中,我們將會拉取選中用戶的最近20條微博。

首先,查看Tweepy 文檔,看下是否存在一個像這樣的函數。稍微調查一番,可以發現user_timeline()函數正是我們想要的。

Twitter數據挖掘:如何使用Python分析大數據

可以看到,user_timeline()函數有一些能夠用到的重要參數,特別是id(用戶的ID)和count(待拉取的微博數量)。注意,由於Twitter的頻率限制,每次查詢只能拉取一定數量的微博。

讓我們來拉取Twitter賬號@NyTimes的最近20條微博。

Twitter數據挖掘:如何使用Python分析大數據

我們可以創建變量來存放待拉取的微博數量(即count),以及待拉取的用戶(即name)。然後用這兩個參數調用user_timeline()函數。下面是更新後的代碼(注意,在代碼的頂部應該保持認證和API對象的創建)。

# 傳入認證信息,並創建API對象 api = tweepy.API(auth) # 待拉取微博的用戶 name = "nytimes" # 待拉取的微博數量 tweetCount = 20 # 使用上面的參數,調用user_timeline函數 results = api.user_timeline(id=name, count=tweetCount) # 遍歷所拉取的全部微博 for tweet in results: # 打印存在微博對象中的text字段 print tweet.text

輸出的結果看起來像這樣:

Twitter數據挖掘:如何使用Python分析大數據

這種類型數據的流行應用包括有:

  • 對指定的用戶進行分析,分析他們是如何與世界進行互動的

  • 尋找Twitter的影響者並分析他們的粉絲的趨勢和互動情況

  • 監控某個用戶的粉絲的變化情況

示例3:使用關鍵字查找微博

這是最後一個示例:獲取包含某個關鍵字的最新的微博。如果想在Twitter世界中監控某個話題,或者甚至想看下你的商業被提到的情況,這都是相當有用的。假設現在想看下Twitter談論Toptal的情況怎樣。

翻閱完Tweept文檔,search()函數似乎是完成我們目標的最佳工具。

Twitter數據挖掘:如何使用Python分析大數據

這裡最重要的參數是q——查詢參數,即要查找的關鍵字。

還可以設置lang參數,這樣就只會取到想要的語言的微博。這裡只返回英文(“en”)的微博。

現在可以修改代碼,以體現要做的改變。首先創建存放參數(query和language)的變量,然後通過API對象調用相應的函數。最後在循環中也打印了發佈微博的用戶的終端名稱。

# 傳入認證信息,並創建API對象 api = tweepy.API(auth) # 你想查找的關鍵字 query = "Toptal" # 語言代碼(遵循ISO 639-1標準) language = "en" # 使用上面的參數,調用user_timeline函數 results = api.search(q=query,) # 遍歷所拉取的全部微博 for tweet in results: # 打印存在微博對象中的text字段 print tweet.user.screen_name,"Tweeted:",tweet.text

最後結果看起來像是這樣:

Twitter數據挖掘:如何使用Python分析大數據

以下是使用這些信息的一些實用途徑:

  • 創建空間圖表,查看你們公司在世界哪些地方被提到最多

  • 對微博進行情感分析,看下關於你們公司的整體意見是正面還是負面

  • 創建關於發佈你們公司或者產品相關微博中最熱門的用戶的社交圖表

在後續的文章中,會覆蓋到部分這些主題。

結論

Twitter的API接口在數據挖掘應用中非常有用,並且關於公眾的意見能提供大量的見解。如果Twitter API接口和大數據分析是你未來會感興趣的東西,建議查看Twitter API接口,Tweepy和Twitter的頻率限制指南以獲取更多信息。

在本教程,我們只是簡單地講了基本的訪問和拉取。然而,Twitter的API接口還可用來服務於錯綜複雜的大數據問題,涉及人,趨勢,和非常複雜以致單憑人類心智無法掌控的社交圖。

譯者注:本翻譯旨在分享國外優秀文章,但翻譯水平有限,如有不對,敬請指正,謝謝!

原文作者:dogstar

相關推薦

推薦中...