齿轮厂家
免费服务热线

Free service

hotline

010-00000000
齿轮厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

使用Rodeo分析总统候选人的推特内容_[#第一枪]

发布时间:2021-06-07 13:10:59 阅读: 来源:齿轮厂家

雷锋网按 :本文作者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(对学生账号免费)。

导入工具

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/da8e5fca6ace7a8a7103c7c2054ea6a0.png" data-rawwidth="969" data-rawheight="208" class="origin_image zh-lightbox-thumb" width="969" data-original="https://pic3.zhimg.com/v2-c36eb2c4817529ebc785777d6e16b456_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/da8e5fca6ace7a8a7103c7c2054ea6a0.png"/>

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

成为推特开发者

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/b0755c1e9b091e68a74bdd66dd90a400.png" data-rawwidth="974" data-rawheight="175" class="origin_image zh-lightbox-thumb" width="974" data-original="https://pic3.zhimg.com/v2-bcfa09740d00dbf2bb149ff623ce8e6e_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/b0755c1e9b091e68a74bdd66dd90a400.png"/>

数据挖掘

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

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/5fbcaec05545b9415efcc0b88530193c.png" data-rawwidth="978" data-rawheight="387" class="origin_image zh-lightbox-thumb" width="978" data-original="https://pic4.zhimg.com/v2-d77ce01b51b3d4ad1b0fa529b5fc3243_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/5fbcaec05545b9415efcc0b88530193c.png"/>

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

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/2ba0bfc9a64a12517bb2c8f52d3b77ce.png" data-rawwidth="979" data-rawheight="573" class="origin_image zh-lightbox-thumb" width="979" data-original="https://pic3.zhimg.com/v2-ac692d4e2555f9faa07bbda1e3c014ae_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/2ba0bfc9a64a12517bb2c8f52d3b77ce.png"/>

使用这些列,我们能搞清楚,在选举的进程中,候选人措辞方面所发生的变化,然而考虑到我们的目标是分析推文中的关键词,因此我们对候选人推文中出现的词语总词频更感兴趣,我们接下来将主要关注“text”列表。

数据清洗

因为“text”列表中不仅包括了大小写字母,还包括了一些特殊的的字符,比如“@”、“:”等。毫无疑问地,这些字符会在进一步的分析引发错误,所以我们需要对数据进行清洗。

我们的清洗目标分为 2 步。首先,先将列表转化为一个字符串。然后,去掉一些不是特殊字符但却属于格式化的单词,比如 “WWW” 和 “http.”。

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/8fd80ea49134938bb88daa1853edf5a4.png" data-rawwidth="977" data-rawheight="143" class="origin_image zh-lightbox-thumb" width="977" data-original="https://pic2.zhimg.com/v2-278f2e836a7350d8eaf28e8a4c6f3fed_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/8fd80ea49134938bb88daa1853edf5a4.png"/>

数据整理

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

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/588697b2abbc19e6291cc3b8d807bce0.png" data-rawwidth="975" data-rawheight="190" class="origin_image zh-lightbox-thumb" width="975" data-original="https://pic2.zhimg.com/v2-4c6c98498ec2dad03bb7097c0ce7d531_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/588697b2abbc19e6291cc3b8d807bce0.png"/>

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

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/27023ea0afef5454f9e371a0fb14bf7e.png" data-rawwidth="976" data-rawheight="461" class="origin_image zh-lightbox-thumb" width="976" data-original="https://pic1.zhimg.com/v2-1c131a25b77c434ab84e5880a74a2a9c_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/27023ea0afef5454f9e371a0fb14bf7e.png"/>

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

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/4c6b11bc2412bb500d286da02db0c787.png" data-rawwidth="632" data-rawheight="385" class="origin_image zh-lightbox-thumb" width="632" data-original="https://pic4.zhimg.com/v2-55e20940c39a81715a1429c743018313_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/4c6b11bc2412bb500d286da02db0c787.png"/>

数据可视化

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

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/a4652c7139c22173770999cbb704ca18.png" data-rawwidth="979" data-rawheight="195" class="origin_image zh-lightbox-thumb" width="979" data-original="https://pic3.zhimg.com/v2-e7f64dfd50bfc30ea13c3943626e785a_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/a4652c7139c22173770999cbb704ca18.png"/>

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

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/04a086d3df7c24db4f3c85ccef7472fd.png" data-rawwidth="526" data-rawheight="562" class="origin_image zh-lightbox-thumb" width="526" data-original="https://pic4.zhimg.com/v2-f0d3880ddf0c6da29926cf0fad050553_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/04a086d3df7c24db4f3c85ccef7472fd.png"/>

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/bf6ef93121142a9abec86c47aebd52a2.png" data-rawwidth="499" data-rawheight="558" class="origin_image zh-lightbox-thumb" width="499" data-original="https://pic1.zhimg.com/v2-374b94fc5d1db109ba6ca9a7708d5314_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/bf6ef93121142a9abec86c47aebd52a2.png"/>

结论

现在,第一张图已经绘制完成。我们可以开始分析数据,并找出候选人之间的语言倾向和模式了。

川普的最常用词语包括 “Hillary Clinton”,“Trump”。克林顿的最常用词语是 “Trump”,其次则是如 “Americans”,“American”,“women”,“people” 等群体性词语。

另外,我们能看到希拉里的最常用词语和川普有关,并且其词频几乎三倍于其他单词。与此同时,川普的最常用单词都指向了克林顿,但其词频并没有出现特别过分的倾斜。同样地,我们可以看到这些候选人间的不同之处:川普更多地喜欢使用 “me” 和 “ImWithYou” 这样的词来谈论自己;而克林顿显得更包容一些,经常使用 “us” 和 “people” 这样的词。

使用 Tableau 画出推特标签词云

此外,我们可以将上文中的字典存储起来,便于下一步使用 Tableau 来实现可视化。使用下面的代码,我们能将字典存储起来:

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/aaff06f14d99764eb9ce6895a8fffce5.png" data-rawwidth="970" data-rawheight="137" class="origin_image zh-lightbox-thumb" width="970" data-original="https://pic3.zhimg.com/v2-df4b0437256a9f312cf1b52a9ae1ba86_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/aaff06f14d99764eb9ce6895a8fffce5.png"/>

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

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/158d007f63e5c0da5948a5031002dd19.png" data-rawwidth="833" data-rawheight="337" class="origin_image zh-lightbox-thumb" width="833" data-original="https://pic4.zhimg.com/v2-e8a9680f0b3aa277978f9cf0653065d3_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/158d007f63e5c0da5948a5031002dd19.png"/>

<img src="https://static.leiphone.com/uploads/new/article/pic/201708/7b2d52c99c4701f284eda328c5c6db9b.png" data-rawwidth="871" data-rawheight="380" class="origin_image zh-lightbox-thumb" width="871" data-original="https://pic3.zhimg.com/v2-6c5c97ef8c0fd5c2f7a26d0c506e10d6_r.png" _src="https://static.leiphone.com/uploads/new/article/pic/201708/7b2d52c99c4701f284eda328c5c6db9b.png"/>

祝贺你!到了这一步,你已经完成了:

调用 API 来挖掘推文数据;

清洗文本成可用的格式;

对两种不同格式的数据进行可视化;

分析候选人的语言特征。

更多课程和文章尽在微信号:「datartisan数据工匠」

雷锋网版权文章,未经授权禁止转载。详情见转载须知。

陶瓷刹车盘

参数测试仪器批发

热成像夜视仪

相关阅读