0
| 本文作者: 汪思穎 | 2017-08-18 19:04 |
雷鋒網(wǎng)按 :本文作者Datartisan,載于其知乎專欄——Datartisan數(shù)據(jù)工匠。雷鋒網(wǎng)已獲得原作者授權(quán)。
選舉季已經(jīng)到來(lái),對(duì)于每個(gè)一直在關(guān)注這些事情的人來(lái)說(shuō),這絕對(duì)是一場(chǎng)最瘋狂、涉及最多社交媒體、充滿戲劇性的選舉。距離最后的選舉已經(jīng)不到3個(gè)月,各個(gè)州的投票結(jié)果也逐漸公示出來(lái),我們認(rèn)為是時(shí)候,通過(guò)分析候選人的演講內(nèi)容,以及他們與大眾的互動(dòng)情況,來(lái)了解這些候選人的競(jìng)選方式了。
想要分析社交媒體上的大眾對(duì)這場(chǎng)選舉的看法,那么我們從分析候選人自己的推特內(nèi)容著手,這似乎是比較合理的。在查看、總結(jié)這些推特的特點(diǎn)后,我們的目標(biāo)變?yōu)楦闱宄蜻x人用來(lái)吸引民眾注意力的詞語(yǔ)是哪些。
首先需要說(shuō)明的最重要的一點(diǎn)是,我們使用 Rodeo 作為我們的 IDE,隨后調(diào)用推特的 API 來(lái)獲取所有推文,最后將使用 Tableau 來(lái)完成可視化部分。也就是說(shuō),我們的第一件事情是去 https://www.yhat.com/products/rodeo 下載 Rodeo。接下來(lái)下一步是獲取調(diào)用推特 API 的權(quán)限,我們只需要在 https://dev.twitter.com/ 上注冊(cè)一個(gè) app,隨后我們就獲得了調(diào)用 API 的令牌秘鑰(token keys)。最后,我們需要去 https://www.tableau.com/Tableau-Download 下載 Tableau(對(duì)學(xué)生賬號(hào)免費(fèi))。

注:你也可以使用Rodeo中的菜單操作選擇 improved package,來(lái)查找、安裝需要的包。

經(jīng)過(guò)以上步驟后,我們的第一步是對(duì)給定用戶的推特內(nèi)容進(jìn)行挖掘,并以一種數(shù)據(jù)友好的方式展現(xiàn)出來(lái)。上面調(diào)用API的語(yǔ)句是會(huì)返回 JSON 格式的推特?cái)?shù)據(jù),為了將數(shù)據(jù)變換為我們能夠使用的數(shù)據(jù)格式,我們使用一個(gè) for 循環(huán)來(lái)獲取贊、轉(zhuǎn)發(fā)、日期、推文內(nèi)容,并用不同的列表來(lái)分別存儲(chǔ)它們。

在得到所有列表后,我們就可以將每個(gè)列表合并成一個(gè)干凈、簡(jiǎn)潔的數(shù)據(jù)框了。


使用這些列,我們能搞清楚,在選舉的進(jìn)程中,候選人措辭方面所發(fā)生的變化,然而考慮到我們的目標(biāo)是分析推文中的關(guān)鍵詞,因此我們對(duì)候選人推文中出現(xiàn)的詞語(yǔ)總詞頻更感興趣,我們接下來(lái)將主要關(guān)注“text”列表。
因?yàn)椤皌ext”列表中不僅包括了大小寫(xiě)字母,還包括了一些特殊的的字符,比如“@”、“:”等。毫無(wú)疑問(wèn)地,這些字符會(huì)在進(jìn)一步的分析引發(fā)錯(cuò)誤,所以我們需要對(duì)數(shù)據(jù)進(jìn)行清洗。
我們的清洗目標(biāo)分為 2 步。首先,先將列表轉(zhuǎn)化為一個(gè)字符串。然后,去掉一些不是特殊字符但卻屬于格式化的單詞,比如 “WWW” 和 “http.”。

到目前為止,所有推文中的句子都被分裂成了單詞,我們現(xiàn)在可以開(kāi)始計(jì)算詞頻了。我們的首要任務(wù)是初始化一個(gè)空字典,并且往字典里添加新單詞及其詞頻。

該詞典包含了所有單詞及其對(duì)應(yīng)的詞頻,但里面仍然存在一些單詞,它們對(duì)我們的分析沒(méi)有什么太大意義。為了解決這個(gè)問(wèn)題,我們首先考慮詞頻超過(guò)給定數(shù)量(在本例中是50)的單詞,然后在這些單詞中,刪除我們認(rèn)為是停止詞的單詞。

現(xiàn)在,讓我們看看 filtertrump 詞典長(zhǎng)什么樣子:

完成了挖掘和清洗的工作后,我們就可以進(jìn)行可視化了。我們的第一張圖是一張條形圖,它畫(huà)出了川普推文中前20個(gè)最常使用單詞的分布。通過(guò)查看前20個(gè)最常用單詞的分布,這進(jìn)一步阻止了任何特殊字符及無(wú)意義的單詞顯示在圖表上。

利用相同的方法,只需要將前面 for 循環(huán)里的 screen_name 賦值為 “HillaryClinton”,我們就能找到希拉里·克林頓推文中前 20 個(gè)最常用單詞。


現(xiàn)在,第一張圖已經(jīng)繪制完成。我們可以開(kāi)始分析數(shù)據(jù),并找出候選人之間的語(yǔ)言傾向和模式了。
川普的最常用詞語(yǔ)包括 “Hillary Clinton”,“Trump”??肆诸D的最常用詞語(yǔ)是 “Trump”,其次則是如 “Americans”,“American”,“women”,“people” 等群體性詞語(yǔ)。
另外,我們能看到希拉里的最常用詞語(yǔ)和川普有關(guān),并且其詞頻幾乎三倍于其他單詞。與此同時(shí),川普的最常用單詞都指向了克林頓,但其詞頻并沒(méi)有出現(xiàn)特別過(guò)分的傾斜。同樣地,我們可以看到這些候選人間的不同之處:川普更多地喜歡使用 “me” 和 “ImWithYou” 這樣的詞來(lái)談?wù)撟约?;而克林頓顯得更包容一些,經(jīng)常使用 “us” 和 “people” 這樣的詞。
此外,我們可以將上文中的字典存儲(chǔ)起來(lái),便于下一步使用 Tableau 來(lái)實(shí)現(xiàn)可視化。使用下面的代碼,我們能將字典存儲(chǔ)起來(lái):

一旦你運(yùn)行了上面的代碼,那么你就可以在 Tableau 上打開(kāi)這個(gè) csv 文件,然后按下 F1 來(lái)調(diào)整顏色,按下 F2 來(lái)調(diào)整詞云大小,從而創(chuàng)建出下面的詞云:


祝賀你!到了這一步,你已經(jīng)完成了:
調(diào)用 API 來(lái)挖掘推文數(shù)據(jù);
清洗文本成可用的格式;
對(duì)兩種不同格式的數(shù)據(jù)進(jìn)行可視化;
分析候選人的語(yǔ)言特征。
更多課程和文章盡在微信號(hào):「datartisan數(shù)據(jù)工匠」
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。