雷锋网按 :本文作者Datartisan,载于其知乎专栏——Datartisan数据工匠。雷锋网已获得原作者授权。
介绍
选举季已经到来,对于每个一直在关注这些事情的人来说,这绝对是一场最疯狂、涉及最多社交媒体、充满戏剧性的选举。距离最后的选举已经不到3个月,各个州的投票结果也逐渐公示出来,我们认为是时候,通过分析候选人的演讲内容,以及他们与大众的互动情况,来了解这些候选人的竞选方式了。
想要分析社交媒体上的大众对这场选举的看法,那么我们从分析候选人自己的推特内容着手,这似乎是比较合理的。在查看、总结这些推特的特点后,我们的目标变为搞清楚候选人用来吸引民众注意力的词语是哪些。
准备工作
首先需要说明的最重要的一点是,我们使用 Rodeo 作为我们的 IDE,随后调用推特的 API 来获取所有推文,最后将使用 Tableau 来完成可视化部分。也就是说,我们的第一件事情是去 https://www.yhat.com/products/rodeo 下载 Rodeo。接下来下一步是获取调用推特 API 的权限,我们只需要在 https://dev.twitter.com/ 上注册一个 app,随后我们就获得了调用 API 的令牌秘钥(token keys)。最后,我们需要去 https://www.tableau.com/Tableau-Download 下载 Tableau(对学生账号免费)。
导入工具

注:你也可以使用Rodeo中的菜单操作选择 improved package,来查找、安装需要的包。
成为推特开发者

数据挖掘
经过以上步骤后,我们的第一步是对给定用户的推特内容进行挖掘,并以一种数据友好的方式展现出来。上面调用API的语句是会返回 JSON 格式的推特数据,为了将数据变换为我们能够使用的数据格式,我们使用一个 for 循环来获取赞、转发、日期、推文内容,并用不同的列表来分别存储它们。

在得到所有列表后,我们就可以将每个列表合并成一个干净、简洁的数据框了。


使用这些列,我们能搞清楚,在选举的进程中,候选人措辞方面所发生的变化,然而考虑到我们的目标是分析推文中的关键词,因此我们对候选人推文中出现的词语总词频更感兴趣,我们接下来将主要关注“text”列表。
数据清洗
因为“text”列表中不仅包括了大小写字母,还包括了一些特殊的的字符,比如“@”、“:”等。毫无疑问地,这些字符会在进一步的分析引发错误,所以我们需要对数据进行清洗。
我们的清洗目标分为 2 步。首先,先将列表转化为一个字符串。然后,去掉一些不是特殊字符但却属于格式化的单词,比如 “WWW” 和 “http.”。

数据整理
到目前为止,所有推文中的句子都被分裂成了单词,我们现在可以开始计算词频了。我们的首要任务是初始化一个空字典,并且往字典里添加新单词及其词频。

该词典包含了所有单词及其对应的词频,但里面仍然存在一些单词,它们对我们的分析没有什么太大意义。为了解决这个问题,我们首先考虑词频超过给定数量(在本例中是50)的单词,然后在这些单词中,删除我们认为是停止词的单词。

现在,让我们看看 filtertrump 词典长什么样子:

数据可视化
完成了挖掘和清洗的工作后,我们就可以进行可视化了。我们的第一张图是一张条形图,它画出了川普推文中前20个最常使用单词的分布。通过查看前20个最常用单词的分布,这进一步阻止了任何特殊字符及无意义的单词显示在图表上。

利用相同的方法,只需要将前面 for 循环里的 screen_name 赋值为 “HillaryClinton”,我们就能找到希拉里·克林顿推文中前 20 个最常用单词。


结论
现在,第一张图已经绘制完成。我们可以开始分析数据,并找出候选人之间的语言倾向和模式了。
川普的最常用词语包括 “Hillary Clinton”,“Trump”。克林顿的最常用词语是 “Trump”,其次则是如 “Americans”,“American”,“women”,“people” 等群体性词语。
另外,我们能看到希拉里的最常用词语和川普有关,并且其词频几乎三倍于其他单词。与此同时,川普的最常用单词都指向了克林顿,但其词频并没有出现特别过分的倾斜。同样地,我们可以看到这些候选人间的不同之处:川普更多地喜欢使用 “me” 和 “ImWithYou” 这样的词来谈论自己;而克林顿显得更包容一些,经常使用 “us” 和 “people” 这样的词。
使用 Tableau 画出推特标签词云
此外,我们可以将上文中的字典存储起来,便于下一步使用 Tableau 来实现可视化。使用下面的代码,我们能将字典存储起来:

一旦你运行了上面的代码,那么你就可以在 Tableau 上打开这个 csv 文件,然后按下 F1 来调整颜色,按下 F2 来调整词云大小,从而创建出下面的词云:


祝贺你!到了这一步,你已经完成了:
调用 API 来挖掘推文数据;
清洗文本成可用的格式;
对两种不同格式的数据进行可视化;
分析候选人的语言特征。
更多课程和文章尽在微信号:「datartisan数据工匠」
雷峰网版权文章,未经授权禁止转载。详情见转载须知。