你以為川普的推特都是他自己寫的?數據可不這麼認為!

2021-02-24 CDA數據分析師

近日,一直以「推特治國」聞名的川普正式宣誓就任了美國第 45 任總統。

川普這次在美國大選中勝出,他的推特也發揮了巨大的作用。相比大多數總統競選人來說,他們都沒時間自己發推。但推特玩的風生水起的川普卻表示,他的推特都是自己發的……

那麼事實真的是這樣嗎?

 

有個美國網友發現川普發推特有兩個客戶端。一個安卓,另一個是 iPhone 。

而且這位細心的網友還發現,一些言辭激烈的推都來自安卓;而畫風比較正常的推都來自 iPhone

這一發現,也引起了數據分析師 David Robinson 的注意。David  注意到當川普發祝賀內容時,是通過 iPhone ;而當他抨擊競選對手時而是通過安卓。而且兩個不同客戶端通常發推的時間也不太相同。

本著科學嚴謹的態度,程式設計師小哥決定讓數據說話,於是做了程序,抓取分析了川普發過的推,終於發現了一些模式。並且通過統計,圖表,最終他基本確定,川普的推特並不是他一個人寫的。

數據證明,安卓端和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 = "")

川普一般習慣早上發推,而他的助理會集中在下午或晚上發推。

當川普的安卓手機轉推時,習慣用雙引號引用這整句話。

而 iPhone 轉推時,一般不使用雙引號

安卓手機: 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 = "")

數據證明 iPhone 端 發的推文很多會附上圖片,連結。內容也以宣傳為主。

比如下面這條:

而川普安卓端發的推文沒有圖片、連結,更多是直接的文字,比如:

在對比安卓和 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

##                 <chr>  <chr>              <time>                  <chr>

## 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

總體來說川普推文中有哪些常用詞呢?

在此基礎上我們再來分別看安卓和 iPhone 常用詞的區別。

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))

·  帶標籤的推文基本來自 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

##          <chr>     <chr>

## 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

##     <chr>        <chr>       <int> <dbl>

## 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% 的置信區間來明確二者的區別:

從而我們可知,川普安卓的推文比起 iPhone ,使用「厭惡」「悲傷」「恐懼」「憤怒」等消極情緒詞的比例高 40-80%

在數據挖掘下

川普推特背後的團隊就這麼被扒了個精光

所以,看川普的推特,只要看安卓端的就好了。

 

但據報導,上任後的川普必須使用一部由美國特工處認證的安全加密手機,以替換他之前使用的安卓系統手機。據稱前總統歐巴馬就無法通過安全手機發推文,那使用安全手機後,川普還能繼續愉快的「推特治國」嗎?

熱愛大數據?願意用文字表達一顆大數據的心?喜歡跟大家分享大數據人生活的背後?沒錯,我們找的就是你!


回復「志願者」加入我們,期待和你的大數據生活有個約會~

偷偷給大家發點小福利!現在關注「 CDA 數據分析師」回復「俱樂部」加入CDA 俱樂部啦!

CDA 俱樂部成員優先參與年度峰會、線下沙龍、乾貨分享、直播公開課!以及獲得更多第一手資訊!

點擊閱讀原文加入俱樂部,等你!


相關焦點

  • 推特刪除「期待川普死亡」推文;歐巴馬「我們都是美國人;拜登取消攻擊川普廣告
    推特在其帳戶上寫道。推特表示,希望川普死亡的帖子屬於該平臺虐待行為政策禁止的範圍之內,該政策規定用戶「不得對某個人進行針對性地騷擾,不得煽動他人這樣做。我們認為虐待行為是一種試圖騷擾、恐嚇或壓制他人聲音的行為」。根據這項政策,如果某帳戶「主要從事攻擊行為」,那麼推特就可能「在初步審查時永久暫停該帳戶」。「我們都是美國人。我們都是人類。
  • 川普接受採訪 談拜登施政、疫苗和推特
    (川普)周三(2月17日)接受媒體採訪,他回應了現任總統拜登對疫苗問題的說辭,評論了新政府的某些施政;川普還談到2020選舉被竊取,也表明了自己不想再回到推特等態度。川普談新政府施政和2020年選舉在接受Newsmax的採訪中,川普分享了他對新政府的看法,並批評拜登對c和非法移民的態度,「整件事情如此荒謬,」川普說,「而我們(川普政府)曾把c控制在手中。」周三當天川普接受了好幾家媒體的採訪,他跟Newsmax詳細談到了2020年的選舉,稱其為是「被操縱」和「被竊取」的。
  • 推特:拜拜 川建國!抖音:好兄弟 來這裡!
    圖源「手機截屏」推特,Reddit, Twitch, Shopify,Facebook, Instagram等你能想到的社交平臺都不約而同的封了川普的帳號。小編表示惋惜, 推特那近9000W的粉絲就這麼浪費了! (小編表示好像要啊!)
  • 推特趕盡殺絕!川普用美國總統帳號也被刪文!
    川普總統星期五晚上繼續使用政府所有的@POTUS推特帳戶發推文,儘管他的@realDonaldTrump帳戶在當天早些時候被永久停用。
  • 川普低燒咳嗽 將住院觀察 疫情惡化?川普確診後首現身 推特18秒影片致謝
    美國總統川普確診新冠肺炎後,一整天未露面,已16小時沒在推特發文;白宮2日下午宣布,川普將搭乘直升機前往馬裡蘭州華特裡德軍醫院(Walter Reed National Military Medical Center)入院觀察幾天,川普將持續辦公。這將是川普任內首度因病住院。
  • 揭秘: 川普臉色為何這麼橘?
    不論是否熟悉川普,多數人在螢光幕前看到他,可能都對他的橘黃色臉龐及眼睛下方泛白的半月形眼袋印象深刻
  • 拜登稱」十分慷慨」 川普給繼任者的信寫了什麼?
    周三傍晚,總統拜登確認他收到了來自川普總統的一封「十分慷慨」的信,按照慣例,卸任總統會留下一封信函或字條給下一屆總統。早些時候外界普遍懷疑川普是否會這麼做。周三在拜登宣誓就職前,白宮發言人證實,川普為繼任者留了張便條。總統們通常會在橢圓形辦公室留下一些祝賀和表達支持的書信,但由於川普一直否認拜登勝選的結果,有些人質疑川普是否會這樣做。川普政府的白宮發言人沒有公布川普這封書信的內容,稱這是一封45任總統與46任總統之間的信函。周三晚些時候,拜登證實他收到了這封信,他告訴白宮記者,這封信"非常慷慨"。
  • 川普:臉書推特若繼續作惡 將取消其免責保護
    關注我們,每天收到你意想不到的好文「現實是,如果這種瀰漫在矽谷的傲慢可以審查總統的推特-他們經常這麼幹-在選舉期間審查白宮官員和主要報紙關於總統候選人的報導,那麼任何美國人或媒體都不會免於類似的審查。」《福克斯新聞網》報導說,川普總統在北卡州的皮特-格林維爾(Pitt-Greenville)機場告訴民眾,拜登說謊的事被抓到,「但現在他們受到科技巨頭的保護」。
  • 剛剛, 川普又慘遭"封殺"!離任前給拜登寫信內容曝光, 原來我們都誤會他了
    川普卸任美國總統,已抵達佛羅裡達州海湖莊園。人剛走,茶就涼!根據《國會山莊報》報導,川普卸任前發生支持者闖入國會的暴動事件後,陸續有機構或企業宣布將「切割」川普,佛羅裡達州有銀行也宣布與川普終止合作關係,並已經關閉川普的銀行帳戶。佛州多家銀行關閉川普帳戶!
  • 推特封鎖川普帳戶!美企領袖被華府暴動嚇尿:應免職川普以維護民主
    推特在數小時後移除了3篇川普推文,並指出其內容嚴重觸犯社群守則。川普在推特影片中告訴支持者,「我們愛你們,你們很特別」,並表示能了解這份痛苦,「但你們必須回家了,和平地回家吧。」隨後他話鋒一轉再指控選舉遭到舞弊,實在「太壞,太邪惡了。」在另一則貼文中,川普為闖入國會大廈的支持者說話,並將他們稱為「長期受到糟糕且不公平對待的偉大愛國者」。
  • 川普被推特永久封號,希拉蕊回了1個表情,這補刀真絕!
    美國新聞看到現在,梨子內心冒出了一個疑問:川普該不會是讀過金庸?金庸先生說過一句名言:「大鬧一場,悄然離去。」川普的任期尾巴,簡直像是這句話的另一種演繹呀!你以為故事就只有這麼精彩嗎?希拉蕊轉發了她4年前的一條內容,當時她艾特(tag)了川普,並喊話「Delete your account」,刪了你的帳號吧。9日,希拉蕊轉發了這條陳年內容,只加了一個✅的符號。
  • 川普又任性了:"哼!不賣我格陵蘭?我乾脆不去訪問你了!"
    甚至就在川普宣布取消幾個小時前,美國駐丹麥大使還開開心心的發了條推特,「丹麥已經準備好川普的訪問了。合作夥伴,同盟,朋友。」丹麥保守黨議員Rasmus Jarlov指責川普對自己的國家不夠尊重。前任丹麥首相Kristian Jensen認為川普的行為導致了「徹底的混亂」。左派紅綠聯盟的發言人Pernille Skipper說:「川普生活在另一個星球上叭。過於自信,毫無尊重。」
  • 【崔哥天天侃1/10】封殺恩人川普大爺 推特推特麼孫子!
    我善良的小心田為川普大爺流下了解氣的淚水。一個74歲的老人,為了共和黨的偉大事業,風裡來雨裡去,沒貪汙沒養小三兒,沒功勞也有苦勞,現在卻被一大幫政客和小人打翻在地,被踏上一萬隻腳。我原來以為只有文哥有這景象呢,沒想到美國也有的。唉,人心難測呀。
  • 小川普傳播假消息!推特刪除挺川黑人假帳號...
    、服務於黨派的新聞媒體甚至美國總統川普的兒子,都在推動大選假消息的線上傳播,使得人們對大選結果的準確性產生懷疑。  與此同時,推特方面也已經承諾,針對那些涉嫌操縱選舉、選民欺詐或篡改選票的假消息,將對其進行標記或是刪除。儘管各家公司已經做出努力,但這些假消息經常在發出幾小時後才會被平臺方處理。  推特(Twitter)周二(10月13日)證實,它從其平臺上刪除了冒充總統川普的黑人支持者的假帳戶。推特希望在總統選舉前打擊虛假信息。
  • 又走一位……司法部長巴爾聖誕節前離職,川普推特宣布
    周一傍晚,總統川普在推特上宣布,司法部長巴爾將於聖誕節前離職。司法部副部長羅森將代理部長一職。
  • 川普開撕怒懟CNN…結果「黃金浴」「假新聞」被網友玩壞!
    在記者會上,川普不僅直斥BuzzFeed是「一堆失敗的垃圾」,還多次拒絕CNN記者的提問,說CNN寫的都是「假新聞」。川普在推特上轟轟烈烈地懟了一回之後,顯然還不夠。在前天的記者發布會上,川普再一次狠狠地懟了BuzzFeed。不僅說BuzzFeed是「一堆失敗的垃圾」,還說CNN跟他們也是一夥的,你們都自食其果準備遭報應去吧。
  • 川普演講簡單得連英語初學教材都不如!Very和Beautiful是他口頭禪
    總之beautiful這詞幾乎是川普的口頭禪,見啥都是beautiful:贏了大選,才很beautiful就連IBM的人工智慧Watson也沒有放過川普,Watson分析了大量川普的推特之後,已經可以直接根據措辭來推斷他發推時的心情。
  • 你可以不喜歡川普,但不可以汙名化他
    他認為,「如果歷史給我們如何應對法西斯主義的教訓,那就是綏靖政策純屬徒勞無益。向法西斯主義讓步並不能安撫他們,只會鼓勵他們得寸進尺」,所以,他疾呼,「是時候停止姑息我們當中的法西斯分子了。」大選以來,我一直在關注紐約時報,發現他們對川普幾乎沒有一句好話,要麼揭露川普偷稅漏稅,要麼尖酸刻薄地說紐約人並不歡迎川普一家歸來。我向來不喜歡川普,一開始看了確實解氣解恨。
  • 平息健康疑慮 川普把自己P成精壯拳擊手
    16日無預警至華府外的政府醫院進行部分年度健檢,引發媒體議論,讓他今天發布一張自己被P(修圖)成上空、健壯拳擊選手的照片,試圖平息他健康亮紅燈的討論。川普在推特未發一語,僅上傳自己的美化版照片。在這張取自美國演員席維斯史特龍(Sylvester Stallone)「洛基第三集」(Rocky III)電影海報的照片,川普的頭被移花接木P在健壯拳擊手身上。
  • 面對華裔女記者質疑,川普直接轉頭跑了??全員必須戴口罩「除了川普」
    至於聯邦政府為何「推薦」而非「強制要求」,川普總統表示考慮推出更嚴格的命令,「我絕對會考慮這麼做…老實說我的有些州長不太注重療養院疫情。」當地時間11日,美國白宮要求在西翼辦公區的工作的人士都需全程戴口罩,坐在自己辦公桌前的時候除外。美國總統川普在當天的記者會上證實了這一消息,他說「我今天見過的所有人都戴著口罩」「是我提出了這個要求。」