Twitter數據挖掘:如何使用Python分析大數據
作者:dogstar
大數據 無處不在。在時下這個年代,不管你喜歡與否,在運營一個成功的商業的過程中都有可能會遇到它。
本教程將會簡要介紹何謂大數據,無論你是嘗試抓住時機的商人,抑或是尋找下一個項目的編程高手,你都可以學到它是如何為你所用,以及如何使用Twitter API和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、創建一個新的應用(可點擊右上角的按鈕)
-
3、在創建應用的頁面填寫上
唯一
的名字,網站名字(如果沒有可以使用默認值),和項目描述。接受協議和條款然后進入到下一個頁面。
-
-
4、一旦創建好了你項目,點擊“Keys and Access Tokens”標簽頁,應該就可以看到你使用的API secret和API key了。
-
5、你還需要一對訪問憑證??蓾L到下面并請求這些憑證。這時頁面會進行刷新,然后就可以獲得access token和access token secret了。
-
稍候都要用到這些數據,所以先不要關閉這些標簽。
安裝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倉庫 上的說明進行操作?;镜牟襟E如下:
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。
打開指向微博的鏈接,通常會把你帶到對應的微博那。例如,打開上面第一條微博中的鏈接,會看到以下這樣的結果:
注意,如果你是通過終端而不是通過像PyCharm這樣的IDE來運行的話,在打印微博的text內容時有可能會遇到一些格式化的問題。
結果背后的JSON
在上面的示例中,我們使用
tweet.text
打印了每一條微博的text內容。為了參考每一個微博對象有哪些具體的屬性,不得不去看一下Twitter API接口返回的JSON數據。
從Twitter API接口接收到的結果是以JSON格式返回的,并且附有有相當多的信息。為了簡單起見,本教程主要關注每一條微博的“text”屬性,以及關于博主(即發布微博的用戶)的信息。對于上面這個例子,你可以在 這里 看到整個返回的JSON對象。
下面快速來看下微博中提供的部分屬性。
如果想找到創建微博的時間,可以使用
print tweet.created_at
進行查詢。
你還可以看到,每一條微博都帶有博主的相關信息。
要是想獲取博主的
name
和
location
屬性,可以執行
print tweet.user.screen_name
和
print tweet.user.location
.
如果你的應用是基于空間數據的話,這些屬性將會非常有用。
示例2:指定某個用戶的微博
在這個示例中,我們將會拉取選中用戶的最近20條微博。
首先,查看
Tweepy 文檔
,看下是否存在一個像這樣的函數。稍微調查一番,可以發現
user_timeline()
函數正是我們想要的。
可以看到,
user_timeline()
函數有一些能夠用到的重要參數,特別是
id
(用戶的ID)和
count
(待拉取的微博數量)。注意,由于
Twitter的頻率限制
,每次查詢只能拉取一定數量的微博。
讓我們來拉取Twitter賬號@NyTimes的最近20條微博。
我們可以創建變量來存放待拉取的微博數量(即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的影響者并分析他們的粉絲的趨勢和互動情況
- 監控某個用戶的粉絲的變化情況
示例3:使用關鍵字查找微博
這是最后一個示例:獲取包含某個關鍵字的最新的微博。如果想在Twitter世界中監控某個話題,或者甚至想看下你的商業被提到的情況,這都是相當有用的。假設現在想看下Twitter談論Toptal的情況怎樣。
翻閱完
Tweept文檔
,
search()
函數似乎是完成我們目標的最佳工具。
這里最重要的參數是
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, lang=language)
# 遍歷所拉取的全部微博
for tweet in results:
# 打印存在微博對象中的text字段
print tweet.user.screen_name,"Tweeted:",tweet.text
最后結果看起來像是這樣:
以下是使用這些信息的一些實用途徑:
- 創建空間圖表,查看你們公司在世界哪些地方被提到最多
- 對微博進行情感分析,看下關于你們公司的整體意見是正面還是負面
- 創建關于發布你們公司或者產品相關微博中最熱門的用戶的社交圖表
在后續的文章中,會覆蓋到部分這些主題。
結論
Twitter的API接口在數據挖掘應用中非常有用,并且關于公眾的意見能提供大量的見解。如果Twitter API接口和大數據分析是你未來會感興趣的東西,建議查看 Twitter API接口 , Tweepy 和 Twitter的頻率限制指南 以獲取更多信息。
在本教程,我們只是簡單地講了基本的訪問和拉取。然而,Twitter的API接口還可用來服務于錯綜復雜的大數據問題,涉及人,趨勢,和非常復雜以致單憑人類心智無法掌控的社交圖。
End.
轉載請注明來自36大數據(36dsj.com): 36大數據 ? Twitter數據挖掘:如何使用Python分析大數據