介紹
選舉季已經(jīng)到來御板,對于每個一直在關(guān)注這些事情的人來說,這絕對是一場最瘋狂牛郑、涉及最多社交媒體怠肋、充滿戲劇性的選舉。距離最后的選舉已經(jīng)不到3個月淹朋,各個州的投票結(jié)果也逐漸地公示出來笙各,我們認(rèn)為是時候,通過分析候選人的演講內(nèi)容础芍,以及他們與大眾的互動情況杈抢,來了解這些候選人的競選方式了。
想要分析社交媒體上的大眾對這場選舉的看法仑性,那么我們從分析候選人自己的推特內(nèi)容著手惶楼,這似乎是比較合理的。在查看诊杆、總結(jié)這些推特的特點后鲫懒,我們的目標(biāo)變?yōu)楦闱宄蜻x人用來吸引民眾注意力的詞語是哪些。
準(zhǔn)備工作
首先需要說明的最重要的一點是刽辙,我們使用 Rodeo 作為我們的 IDE窥岩,隨后調(diào)用推特的 API 來獲取所有推文,最后將使用 Tableau 來完成可視化部分宰缤。也就是說颂翼,我們的第一件事情是去 https://www.yhat.com/products/rodeo 下載 Rodeo。接下來下一步是獲取調(diào)用推特 API 的權(quán)限慨灭,我們只需要在 https://dev.twitter.com/ 上注冊一個 app朦乏,隨后我們就獲得了調(diào)用 API 的令牌秘鑰(token keys)。最后氧骤,我們需要去 https://www.tableau.com/Tableau-Download 下載 Tableau(對學(xué)生賬號免費)呻疹。
導(dǎo)入工具
注:你也可以使用Rodeo中的菜單操作選擇 improved package,來查找筹陵、安裝需要的包刽锤。
成為推特開發(fā)者
數(shù)據(jù)挖掘
經(jīng)過以上步驟后镊尺,我們的第一步是對給定用戶的推特內(nèi)容進行挖掘,并以一種數(shù)據(jù)友好的方式展現(xiàn)出來并思。上面調(diào)用API的語句是會返回 JSON 格式的推特數(shù)據(jù)庐氮,為了將數(shù)據(jù)變換為我們能夠使用的數(shù)據(jù)格式,我們使用一個 for 循環(huán)來獲取贊宋彼、轉(zhuǎn)發(fā)弄砍、日期、推文內(nèi)容输涕,并用不同的列表來分別存儲它們音婶。
在得到所有列表后,我們就可以將每個列表合并成一個干凈莱坎、簡潔的數(shù)據(jù)框了桃熄。
使用這些列,我們能搞清楚型奥,在選舉的進程中瞳收,候選人措辭方面所發(fā)生的變化,然而考慮到我們的目標(biāo)是分析推文中的關(guān)鍵詞厢汹,因此我們對候選人推文中出現(xiàn)的詞語總詞頻更感興趣螟深,我們接下來將主要關(guān)注“text”列表。
數(shù)據(jù)清洗
因為“text”列表中不僅包括了大小寫字母烫葬,還包括了一些特殊的的字符界弧,比如“@”、“:”等搭综。毫無疑問地垢箕,這些字符會在進一步的分析引發(fā)錯誤,所以我們需要對數(shù)據(jù)進行清洗兑巾。
我們的清洗目標(biāo)分為 2 步条获。首先,先將列表轉(zhuǎn)化為一個字符串蒋歌。然后帅掘,去掉一些不是特殊字符但卻屬于格式化的單詞,比如 “WWW” 和 “http.”堂油。
數(shù)據(jù)整理
到目前為止修档,所有推文中的句子都被分裂成了單詞,我們現(xiàn)在可以開始計算詞頻了府框。我們的首要任務(wù)是初始化一個空字典吱窝,并且往字典里添加新單詞及其詞頻。
該詞典包含了所有單詞及其對應(yīng)的詞頻,但里面仍然存在一些單詞院峡,它們對我們的分析沒有什么太大意義兴使。為了解決這個問題,我們首先考慮詞頻超過給定數(shù)量(在本例中是50)的單詞撕予,然后在這些單詞中,刪除我們認(rèn)為是停止詞的單詞蜈首。
現(xiàn)在实抡,讓我們看看 filtertrump 詞典長什么樣子:
數(shù)據(jù)可視化
完成了挖掘和清洗的工作后,我們就可以進行可視化了欢策。我們的第一張圖是一張條形圖吆寨,它畫出了川普推文中前20個最常使用單詞的分布。通過查看前20個最常用單詞的分布踩寇,這進一步阻止了任何特殊字符及無意義的單詞顯示在圖表上啄清。
利用相同的方法,只需要將前面 for 循環(huán)里的 screen_name 賦值為 “HillaryClinton”俺孙,我們就能找到希拉里·克林頓推文中前 20 個最常用單詞辣卒。
結(jié)論
現(xiàn)在,第一張圖已經(jīng)繪制完成睛榄。我們可以開始分析數(shù)據(jù)荣茫,并找出候選人之間的語言傾向和模式了。
川普的最常用詞語包括 “Hillary Clinton”场靴,“Trump”啡莉。克林頓的最常用詞語是 “Trump”旨剥,其次則是如 “Americans”咧欣,“American”,“women”轨帜,“people” 等群體性詞語魄咕。
另外,我們能看到希拉里的最常用詞語和川普有關(guān)蚌父,并且其詞頻幾乎三倍于其他單詞蚕礼。與此同時,川普的最常用單詞都指向了克林頓梢什,但其詞頻并沒有出現(xiàn)特別過分的傾斜奠蹬。同樣地,我們可以看到這些候選人間的不同之處:川普更多地喜歡使用 “me” 和 “ImWithYou” 這樣的詞來談?wù)撟约何宋纾欢肆诸D顯得更包容一些囤躁,經(jīng)常使用 “us” 和 “people” 這樣的詞。
使用 Tableau 畫出推特標(biāo)簽詞云
此外,我們可以將上文中的字典存儲起來狸演,便于下一步使用 Tableau 來實現(xiàn)可視化邢疙。使用下面的代碼,我們能將字典存儲起來:
一旦你運行了上面的代碼萧朝,那么你就可以在 Tableau 上打開這個 csv 文件略荡,然后按下 F1 來調(diào)整顏色,按下 F2 來調(diào)整詞云大小满哪,從而創(chuàng)建出下面的詞云:
祝賀你婿斥!到了這一步,你已經(jīng)完成了:
- 調(diào)用 API 來挖掘推文數(shù)據(jù)哨鸭;
- 清洗文本成可用的格式民宿;
- 對兩種不同格式的數(shù)據(jù)進行可視化;
- 分析候選人的語言特征像鸡。
更多課程和文章盡在微信號:「datartisan數(shù)據(jù)工匠」