用R语言爬取川普twitter举办数据阐明
当前位置:以往代写 > 其他教程 >用R语言爬取川普twitter举办数据阐明
2019-06-14

用R语言爬取川普twitter举办数据阐明

用R语言爬取川普twitter举办数据阐明

Twitter是一个风行的社交网络,这里有大量的数据等着我们阐明。Twitter R包是对twitter数据举办文本挖掘的好东西。 本文是关于如何利用Twitter R包获取twitter数据并将其导入R,然后对它举办一些有趣的数据阐明。
第一步是注册一个你的应用措施。为了可以或许会见Twitter数据编程,我们需要建设一个与Twitter的API交互的应用措施。用R语言爬取川普twitter举行数据阐发注册后你将收到一个密钥和暗码:用R语言爬取川普twitter举行数据阐发用R语言爬取川普twitter举行数据阐发获取密钥和暗码后便可以在R内里授权我们的应用措施以代表我们会见Twitter:用R语言爬取川普twitter举行数据阐发
按照差异的搜索词,我们可以在几分钟之内收集到成千上万的tweet。 这里我们测试一个要害词littlecaesars的twitter功效:
抓取的1000条相关twitter由于默认的抓取功效是json名目,因此利用twlisttodf函数将其转换成数据框用R语言爬取川普twitter举行数据阐发然后我们做一些简朴的文本清理用R语言爬取川普twitter举行数据阐发从获得的数据里,我们可以看到有twitter颁发时间,内容,经纬度等信息用R语言爬取川普twitter举行数据阐发用R语言爬取川普twitter举行数据阐发
在清理数据之后,我们对twitter内容举办分词,以便举办数据可视化用R语言爬取川普twitter举行数据阐发分词之后可以获得相关twitter的高频词汇,然后将其可视化用R语言爬取川普twitter举行数据阐发用R语言爬取川普twitter举行数据阐发用R语言爬取川普twitter举行数据阐发除此之外,还可以团结数据中的时间戳数据和地理数据举办可视化阐明用R语言爬取川普twitter举行数据阐发用R语言爬取川普twitter举行数据阐发
推特和FB其实也是科研接头的重镇。可是要怎么来阐明推特上都接头啥呢?光用Mendeley的话,只能有只言片语,这次又要带你打开新世界的大门了。
首先推荐用一款推特阐明东西网站,叫做推特阐明家,成果是及时阐明推特上的动态。这是一款基于R语言Shiny的网页,由于这个是德国人做的,所以,会阐明德语和英语两种语言。用R语言爬取川普twitter举行数据阐发所用到的数据阐明的资源,其实就是推特上的人家的对象。会对这些文字,举办文本挖掘,然厥后阐明你要的对象。好比,我阐明一下LncRNA哈。用R语言爬取川普twitter举行数据阐发左侧的是文本数据的来历,可以发明,这最近的推特照旧前几天刚发的。也就是说这个网站阐明的数据都是及时数据。用R语言爬取川普twitter举行数据阐发那这些推特详细讲的内容有些啥呢?主要是来自于LncRNA的论文和一些杂志的推送。横竖推特就比如海外科研狗的票圈,转一下杂志上的牛逼文章的话,大概会显得更上等次,也是在跟老板说:看我很勤奋,有在看文献哦!用R语言爬取川普twitter举行数据阐发在WordCloud里,就会显示在推特上,接头的最多的和lncRNA有关的词汇。好比:表达,变革,剪切,模式,肿瘤等等,说实话是没有什么出格大的用处哈。用R语言爬取川普twitter举行数据阐发接着是词频的分簇,可以看获得或许这个词在所有的句子中呈现频率的分簇阐明。但我不懂“httpstcodadiagxfh”有啥干系“not so junk dna”,要么是个网站啥的……好吧,不管怎么样,仿佛推特上热议的应该是lncRNA的剪切。用R语言爬取川普twitter举行数据阐发接下去看一下network,这个是推送这些推特的账号之间的接洽,可以看得,有蛮多是杂志,尚有一些是谁?有大概就是痴迷于lncRNA研究的那些人了,有时机的话,可以思量存眷一下。用R语言爬取川普twitter举行数据阐发另外尚有些付带成果,好比,我们会巧妙地发明,在海外研究lncRNA的安卓狗主要是上班前和下班后会推送lncRNA的内容。而苹果狗则会合在下午和午夜……用R语言爬取川普twitter举行数据阐发网址:https://longhowlam.shinyapps.io/TweetAnalyzer/还顺便阐明白一下此外要害词,好比:呆板进修、深度进修。
这种网站根基都是要翻墙才气进去的呢,究竟要挪用推特的数据。不外作为爱国少年的我,也想看看推特上都在接头中国什么,于是我搜了一下“China”调解到推特内容1000,功效:用R语言爬取川普twitter举行数据阐发好吧,最近川普大爷赢了……
克日,一直以“推特治国”闻名的川普正式宣誓就任了美国第 45 任总统。
川普这次在美国大选中胜出,他的推特也发挥了庞大的浸染。对比大大都总统竞选人来说,他们都没时间本身发推。但推特玩的风生水起的川普却暗示,他的推特都是本身发的……
那么事实真的是这样吗? 有个美国网友发明川普发推特有两个客户端。一个安卓,另一个是 iPhone 。用R语言爬取川普twitter举行数据阐发并且这位细心的网友还发明,一些言辞剧烈的推都来自安卓;而画风较量正常的推都来自 iPhone。
这一发明,也引起了数据阐明师 David Robinson 的留意。David  留意到当川普发祝贺内容时,是通过 iPhone ;而当他报复竞选敌手时而是通过安卓。并且两个差异客户端凡是发推的时间也不太沟通。
本着科学严谨的立场,措施员小哥抉择让数据措辞,于是做了措施,抓取阐明白川普发过的推,终于发明白一些模式。而且通过统计,图表,最终他根基确定,川普的推特并不是他一小我私家写的。用R语言爬取川普twitter举行数据阐发数据证明,安卓端和iPhone发的推别离是两小我私家所写的。并且发推时间,利用标签,加链接,转发的方法也截然差异。同时,安卓端发的内容越发剧烈和消极。
假如就像川普采访中所说他利用的手机是三星 Galaxy ,我们可以确信用安卓发推的是川普本人,用 iPhone 发的或许是他的团队助理。
发推时间比拟首先用 twitteR 包中的 userTimeline 函数导入川普发推的时间数据: … library ( dplyr )… library ( purrr )… library  ( twitteR ) # You’d need to set global options with an authenticated appsetup_twitter_oauth(getOption(“twitter_consumer_key”),                    getOption(“twitter_consumer_secret”),                    getOption(“twitter_access_token”),                    getOption(“twitter_access_token_secret”))# We can request only 3200 tweets at a time; it will return fewer# depending on the APItrump_tweets <- userTimeline(“realDonaldTrump”, n = 3200)trump_tweets_df <- tbl_df(map_df(trump_tweets, as.data.frame)) # if you want to follow along without setting up Twitter authentication,# just use my dataset:load(url(“http://varianceexplained.org/files/trump_tweets_df.rda”))
稍微清理下数据,提取源文件。(在此只阐明来自 iPhone 和 Android tweet  的数据,撤除很少一部门发自网页客户端和 iPad 的推文)。 library(tidyr)tweets <- trump_tweets_df %>%  select(id, statusSource, text, created) %>%  extract(statusSource, “source”, “Twitter for (.*?)<“) %>%  filter(source %in% c(“iPhone”, “Android”))  阐明的数据包罗来自 iPhone 的 628 条推文,来自 Android 的 762 条推文。
主要思量推文是在一天内什么时间宣布的,在此我们可以发明区别: … library(lubridate)… library(scales) tweets %>%  count(source, hour = hour(with_tz(created, “EST”))) %>%  mutate(percent = n / sum(n)) %>%  ggplot(aes(hour, percent, color = source)) +  geom_line() +  scale_y_continuous(labels = percent_format()) +  labs(x = “Hour of day (EST)”,       y = “% of tweets”,       color = “”)用R语言爬取川普twitter举行数据阐发川普一般习惯早上发推,而他的助理集中中在下午或晚上发推。
发文习惯比拟当川普的安卓手机转推时,习习用双引号引用这整句话。用R语言爬取川普twitter举行数据阐发而 iPhone 转推时,一般不利用双引号。用R语言爬取川普twitter举行数据阐发安卓手机: 500 多条推文没有双引号,200 多条有双引号
iPhone:险些没有双引号 与此同时,在分享链接和图片时,安卓和 iPhone 也大不沟通。 tweet_picture_counts <- tweets %>%  filter(!str_detect(text, ‘^”‘)) %>%  count(source,        picture = ifelse(str_detect(text, “t.co”),                         “Picture/link”, “No picture/link”))ggplot(tweet_picture_counts, aes(source, n, fill = picture)) +  geom_bar(stat = “identity”, position = “dodge”) +  labs(x = “”, y = “Number of tweets”, fill = “”)用R语言爬取川普twitter举行数据阐发数据证明 iPhone 端 发的推文许多会附上图片,链接。内容也以宣传为主。
好比下面这条:用R语言爬取川普twitter举行数据阐发而川普安卓端发的推文没有图片、链接,更多是直接的文字,好比:用R语言爬取川普twitter举行数据阐发用词比拟在比拟安卓和 iPhone 用词区别时,David 用到了他和 Julia Silge 一起编写的 tidytext 包。
用 unnest_tokensfunction 把句子解析为单独的词: library(tidytext)reg <- “([^A-Za-z\\d#@’]|'(?![A-Za-z\\d#@]))”tweet_words <- tweets %>%  filter(!str_detect(text, ‘^”‘)) %>%  mutate(text = str_replace_all(text, “https://t.co/[A-Za-z\\d]+|&”, “”)) %>%  unnest_tokens(word, text, token = “regex”, pattern = reg) %>%  filter(!word %in% stop_words$word,         str_detect(word, “[a-z]”))tweet_words ## # A tibble: 8,753 x 4##                    id source             created                   word##                                ## 1  676494179216805888 iPhone 2015-12-14 20:09:15                 record## 2  676494179216805888 iPhone 2015-12-14 20:09:15                 health## 3  676494179216805888 iPhone 2015-12-14 20:09:15 #makeamericagreatagain## 4  676494179216805888 iPhone 2015-12-14 20:09:15             #trump2016## 5  676509769562251264 iPhone 2015-12-14 21:11:12               accolade## 6  676509769562251264 iPhone 2015-12-14 21:11:12             @trumpgolf## 7  676509769562251264 iPhone 2015-12-14 21:11:12                 highly## 8  676509769562251264 iPhone 2015-12-14 21:11:12              respected## 9  676509769562251264 iPhone 2015-12-14 21:11:12                   golf## 10 676509769562251264 iPhone 2015-12-14 21:11:12                odyssey## # … with 8,743 more rows
总体来说川普推文中有哪些常用词呢?用R语言爬取川普twitter举行数据阐发在此基本上我们再来别离看安卓和 iPhone 常用词的区别。用R语言爬取川普twitter举行数据阐发android_iphone_ratios <- tweet_words %>%  count(word, source) %>%  filter(sum(n) >= 5) %>%  spread(source, n, fill = 0) %>%  ungroup() %>%  mutate_each(funs((. + 1) / sum(. + 1)), -word) %>%  mutate(logratio = log2(Android / iPhone)) %>%  arrange(desc(logratio))用R语言爬取川普twitter举行数据阐发
结论·  带标签的推文基原来自 iPhone 。·  iPhone 推文中常用词有宣传性的词,好比:“介入”,“来日诰日”,“晚上 7 点”。·  安卓的推文常用有强烈情绪性的词汇,“差劲”,“疯了”,“软弱”,“傻瓜”等等。
感情阐明安卓和 iPhone 推文在感情上也有很大的差别,让我们来量化一下。用到 tidytext 傍边的NRC Word-Emotion Association 辞书,主要把用词接洽以下十种情绪阐明:努力,消极,恼怒,等候,厌恶,惊骇,快乐,哀痛,惊奇,信任。 nrc <- sentiments %>%  filter(lexicon == “nrc”) %>%  dplyr::select(word, sentiment)nrc ## # A tibble: 13,901 x 2##           word sentiment##               ## 1       abacus     trust## 2      abandon      fear## 3      abandon  negative## 4      abandon   sadness## 5    abandoned     anger## 6    abandoned      fear## 7    abandoned  negative## 8    abandoned   sadness## 9  abandonment     anger## 10 abandonment      fear## # … with 13,891 more rows 为了别离计较安卓和 iPhone 推文的感情,可以把差异用词分类。 sources <- tweet_words %>%  group_by(source) %>%  mutate(total_words = n()) %>%  ungroup() %>%  distinct(id, source, total_words)by_source_sentiment <- tweet_words %>%  inner_join(nrc, by = “word”) %>%  count(sentiment, id) %>%  ungroup() %>%  complete(sentiment, id, fill = list(n = 0)) %>%  inner_join(sources) %>%  group_by(source, sentiment, total_words) %>%  summarize(words = sum(n)) %>%  ungroup()head(by_source_sentiment) ## # A tibble: 6 x 4##    source    sentiment total_words words##                   ## 1 Android        anger        4901   321## 2 Android anticipation        4901   256## 3 Android      disgust        4901   207## 4 Android         fear        4901   268## 5 Android          joy        4901   199## 6 Android     negative        4901   560 (好比,我们可以看到安卓推文中 4901 个词中 321 个词与感情“恼怒”有关。)
同时可以用 Poisson test 阐明,比起 iPhone ,安卓推文更喜欢利用带强烈情绪的词。 library(broom)sentiment_differences <- by_source_sentiment %>%  group_by(sentiment) %>%  do(tidy(poisson.test(.$words, .$total_words)))sentiment_differences ## Source: local data frame [10 x 9]## Groups: sentiment [10]####       sentiment estimate statistic      p.value parameter  conf.low##           (chr)    (dbl)     (dbl)        (dbl)     (dbl)     (dbl)## 1         anger 1.492863       321 2.193242e-05  274.3619 1.2353162## 2  anticipation 1.169804       256 1.191668e-01  239.6467 0.9604950## 3       disgust 1.677259       207 1.777434e-05  170.2164 1.3116238## 4          fear 1.560280       268 1.886129e-05  225.6487 1.2640494## 5           joy 1.002605       199 1.000000e+00  198.7724 0.8089357## 6      negative 1.692841       560 7.094486e-13  459.1363 1.4586926## 7      positive 1.058760       555 3.820571e-01  541.4449 0.9303732## 8       sadness 1.620044       303 1.150493e-06  251.9650 1.3260252## 9      surprise 1.167925       159 2.174483e-01  148.9393 0.9083517## 10        trust 1.128482       369 1.471929e-01  350.5114 0.9597478## Variables not shown: conf.high (dbl), method (fctr), alternative (fctr) 我们可以用 95% 的置信区间来明晰二者的区别:用R语言爬取川普twitter举行数据阐发从而我们可知,川普安卓的推文比起 iPhone ,利用“厌恶”“哀痛”“惊骇”“恼怒”等消极情绪词的比例高 40-80%用R语言爬取川普twitter举行数据阐发在数据挖掘下,川普推特背后的团队就这么被扒了个精光。所以,看川普的推特,只要看安卓端的就好了。 但据报道,上任后的川普必需利用一部由美国奸细处认证的安详加密手机,以替换他之前利用的安卓系统手机。据称前总统奥巴马就无法通过安详手机发推文,那利用安详手机后,川普还能继承愉快的“推特治国”吗?
接待插手本站果真乐趣群贸易智能与数据阐明群乐趣范畴包罗各类让数据发生代价的步伐,实际应用案例分享与接头,阐明东西,ETL东西,数据客栈,数据挖掘东西,报表系统等全方位常识QQ群:81035754

    关键字:

在线提交作业