新冠肺炎爆發迄今,美國總統川普對於中國政府與疫情的態度,從稱讚與樂觀轉為批評。我們想探討從2/10川普樂觀表示疫情四月會轉好,到美國疫情大爆發,再到目前對WHO與中國政府的批評的這段時間內,PTT鄉民對於川普觀感與討論的內容。
使用的資料是由中山大學管理學院文字分析平台取得,在平台下載原始資料之csv檔
資料內容為2020/02/10到2020/04/26,PTT八卦版之文章,透過文字分析平台以「川普」、「特朗普」與「Trump」為關鍵字,搜尋到的916篇文章
Sys.setlocale(category = "LC_ALL", locale = "zh_TW.UTF-8") # 避免中文亂碼
## [1] ""
library(stringr)
library(wordcloud2)
library(ggplot2)
library(jiebaR)
library(tidyr)
library(dplyr)
library(scales)
library(data.table)
library(tidytext)
library(widyr)
library(igraph)
library(ggraph)
library(reshape2)
library(readr)
trump_csv <- fread("trump3.csv", encoding = "UTF-8", header = TRUE)
trump_csv$artDate = trump_csv$artDate %>% as.Date("%Y/%m/%d")
trump_csv <- na.omit(trump_csv)
trump_csv$artContent <- gsub(c("virus", "VIRUS"), "病毒", trump_csv$artContent)
trump_csv$artContent <- gsub(c("trump", "donald", "realdonaldtrump"), "川普", trump_csv$artContent)
trump_csv$artContent <- gsub(c("who", "WHO"), "世界衛生組織", trump_csv$artContent)
trump_csv$artContent <- gsub(c("covid", "COVID"), "新冠肺炎", trump_csv$artContent)
head(trump_csv)
## artTitle artDate artTime
## 1: [新聞]川普稱:疫情4月會消失 2020-02-10 14:03:51
## 2: Re:[新聞]川普稱:疫情4月會消失 2020-02-10 19:10:17
## 3: Re:[新聞]川普稱:疫情4月會消失 2020-02-10 19:43:15
## 4: [爆卦]川普提案將美國對WHO的金援砍半 2020-02-11 15:44:04
## 5: [新聞]川普鐵口直斷:四月疫情緩解 2020-02-12 04:04:21
## 6: [問卦]川普蓋牆的觀念是不是很先進? 2020-02-12 19:22:09
## artUrl
## 1: https://www.ptt.cc/bbs/Gossiping/M.1581372600.A.FAF.html
## 2: https://www.ptt.cc/bbs/Gossiping/M.1581390980.A.221.html
## 3: https://www.ptt.cc/bbs/Gossiping/M.1581392958.A.6A6.html
## 4: https://www.ptt.cc/bbs/Gossiping/M.1581465006.A.C07.html
## 5: https://www.ptt.cc/bbs/Gossiping/M.1581509424.A.F25.html
## 6: https://www.ptt.cc/bbs/Gossiping/M.1581564491.A.316.html
## artContent
## 1: 1.媒體來源:三立新聞網__2.記者署名:中央社華盛頓10日電__3.完整新聞標題:武漢肺炎/「高溫會殺死病毒」 川普稱:疫情4月會消失__4.完整新聞內文:__(中央社華盛頓10日電)美國總統川普今天表示,他預期已造成900多人病亡的新型冠狀_病毒疫情會在4月份消失,因為屆時天氣會趨暖。__川普說,「病毒…一般會在4月份消失」;並說,「大致上,高氣溫會殺死這類病毒」。__類似嚴重急性呼吸道症候群(SARS)的這種病原體自去年底在中國形成疫情後,至今已使_大約4萬人感染,美國出現了12起嚴重程度不同的確診病例。__5.完整新聞連結 (或短網址):_https://www.setn.com/News.aspx?NewsID=687194_6.備註:_川大大跟習大大從疫情爆發開始後 時不時的 熱線你和我_連天氣這種鬼話都說得出口...__恩...._
## 2: 現在會不會有一堆大媽聽川普隊長的話__ 出國前往現在氣溫比較高的國家玩?__ 川普這席話應該是有所本吧__
## 3: 川普最近的發言都和美國政府作為反著幹的_之前說做的很好,結果撤僑__現在更耐人尋味的說_「病毒_一般_會在4月消失」_「_大致上_,高氣溫會殺死這類病毒。」__潛台詞就是_「如果沒消失,代表這病毒_不一般_」_「如果高溫殺不死,說明這病毒_並非_這_類病毒_。」__再加上最近的人造病毒傳聞_很有事先鋪梗的意味_PTT_opia
## 4: https://tinyurl.com/yx34k34b_川普2021預算案昨天剛推出,砍了很多免費仔的經費__其中最爽的:WHO經費將砍半__難怪最近WHO這個基八組織比較乖_不過美國國會好像不同意這個編法__心得:我川就是狂__
## 5: 1.媒體來源:__聯合報__2.記者署名__季晶晶__3.完整新聞標題:__川普鐵口直斷:四月疫情緩解__4.完整新聞內文:__美國有線電視新聞網(CNN)報導,美國總統川普重申,他相信等到換季氣溫升高時,新_冠肺炎(武漢肺炎)疫情可以緩解,儘管專家學者都認為現在做此認定還為時太早。__川普十日在白宮對各州州長演說時提及,他上周和大陸國家主席習近平通電話時談到氣溫_一事。川普引述習近平的評估表示:「一般來說,高溫能殺死這種病毒。」__川普說:「那會是一件好事。」稍早川普說,「很多人認為四月轉暖就沒事了」。__川普上周曾在推特提出新冠肺炎和天氣轉暖之間的理論。但傳染病專家後來都表示,現在_斷言天氣轉暖可能削弱病毒威力還太早。__德州貝勒醫學院熱帶醫藥學院主任霍德茲說:「假設情況會在春夏兩季平靜下來過於輕率_。我們並不了解這個季節說法的根據,目前我們對這種特定病毒絕對是一無所知。」__5.完整新聞連結 (或短網址):_https://udn.com/news/story/120944/4337947_6.備註:_
## 6: 美國爸爸的大統領 - 川普,競選時最重要的政見就是蓋牆,__把非法移民通通隔離在墨西哥,當時台灣一堆人都在嘲笑川普,__左派的人一直狂噴川普沒有人權,種族歧視。__結果武漢肺炎 aka 新冠肺炎-19 一爆發,台灣人馬上能夠感受到美國人的痛苦,__幸好台灣跟中國還隔著台灣海峽,不然就會跟美國一樣,__一堆小明直接從國境從墨西哥偷渡進入美國,__不知道當初酸川普蓋牆的左派人權鬥士,現在一樣支持小明到台灣嗎?__還是人權只有跟自己無關的時候才重要?_
呈現每日討論熱度
trump_date <- trump_csv %>%
select(artDate, artUrl) %>%
distinct()
article_count_by_date <- trump_date %>%
group_by(artDate) %>%
summarise(count = n())
article_count_by_date %>%
arrange(desc(count))%>%
top_n(10)
## Selecting by count
## # A tibble: 10 x 2
## artDate count
## <date> <int>
## 1 2020-03-20 53
## 2 2020-03-17 36
## 3 2020-03-13 33
## 4 2020-03-12 30
## 5 2020-03-24 30
## 6 2020-03-19 28
## 7 2020-04-15 28
## 8 2020-03-18 27
## 9 2020-03-22 27
## 10 2020-03-14 25
討論篇數最多的10天
date_plot <- article_count_by_date %>%
ggplot(aes(x = artDate, y = count)) +
geom_line(color = "blue", size = 1.5) +
geom_vline(xintercept = c(as.numeric(as.Date("2020-03-20")),
as.numeric(as.Date("2020-03-17")),
as.numeric(as.Date("2020-03-13")),
as.numeric(as.Date("2020-04-15")),
as.numeric(as.Date("2020-02-27")),
as.numeric(as.Date("2020-03-06")),
as.numeric(as.Date("2020-03-24"))), col='red', size = 1) +
scale_x_date(labels = date_format("%Y/%m/%d")) +
ggtitle("「川普」討論文章數") +
xlab("日期") +
ylab("數量")
date_plot
PTT八卦版上,有關川普的討論在03/20, 03/17, 03/13, 03/24, 04/15出現高峰,而3月前討論的高峰出現在02/27,03/06則是進入討論高峰前的轉折
03/20 [新聞]川普堅持「正名」中國!演講稿寫冠狀病
03/17 [新聞]很故意!川普再發「中國病毒」推文
03/13 [新聞]快訊/才剛見川普吃晚餐…巴西總統發言人
03/24 [新聞]美2.7萬確診全球第4川普轟「中國的錯」
04/15 [新聞]川普斷WHO金援!比爾蓋茲警告:很危險
03/06 [爆卦]川普說得武漢肺炎可以去工作! 02/27 [新聞]川普信心喊話 別太怕新冠肺炎「當流感就好
jieba_tokenizer <- worker(user="user_dict.txt", stop_word = "stop_words.txt")
t_tokenizer <- function(t) {
lapply(t, function(x) {
tokens <- segment(x, jieba_tokenizer)
tokens <- tokens[nchar(tokens)>1]
return(tokens)
})
}
t_tokens <- trump_csv %>%
unnest_tokens(word, artContent, token=t_tokenizer) %>%
select(-artTime, -artUrl)
t_tokens_count <- t_tokens %>%
group_by(word) %>%
summarise(sum = n()) %>%
arrange(desc(sum))
head(t_tokens_count)
## # A tibble: 6 x 2
## word sum
## <chr> <int>
## 1 美國 2829
## 2 川普 2402
## 3 中國 1719
## 4 疫情 1086
## 5 病毒 1073
## 6 總統 942
wordc_plot <- t_tokens_count %>%
filter(word != "川普" & word != "美國" & word != "中國") %>%
filter(sum > 100) %>%
wordcloud2()
wordc_plot
列出02/27, 03/06, 03/13, 03/20, 03/24, 04/15出現頻率最高的詞彙
t_tokens_by_date <- t_tokens %>%
count(artDate, word, sort = TRUE)
plot_merge <- t_tokens_by_date %>%
filter(word != "川普" & word != "中國" & word != "美國") %>%
filter(artDate == as.Date("2020-02-27") |
artDate == as.Date("2020-03-06") |
artDate == as.Date("2020-03-13") |
artDate == as.Date("2020-03-20") |
artDate == as.Date("2020-03-27") |
artDate == as.Date("2020-04-15")) %>%
group_by(artDate) %>%
top_n(7, n) %>%
ungroup() %>%
mutate(word = reorder(word, n)) %>%
ggplot(aes(x=word, y=n, fill = artDate)) +
geom_col(show.legend = FALSE) +
labs(x = NULL, y = NULL) +
facet_wrap(~artDate, scales="free", ncol = 2) +
coord_flip()
plot_merge
data = fread('trump3_artWordFreq.csv',encoding = 'UTF-8')
head(data)
## artTitle artDate artTime
## 1: [新聞]川普稱:疫情4月會消失 2020/02/10 14:03:51
## 2: [新聞]川普稱:疫情4月會消失 2020/02/10 14:03:51
## 3: [新聞]川普稱:疫情4月會消失 2020/02/10 14:03:51
## 4: [新聞]川普稱:疫情4月會消失 2020/02/10 14:03:51
## 5: [新聞]川普稱:疫情4月會消失 2020/02/10 14:03:51
## 6: [新聞]川普稱:疫情4月會消失 2020/02/10 14:03:51
## artUrl word count
## 1: https://www.ptt.cc/bbs/Gossiping/M.1581372600.A.FAF.html 病毒 4
## 2: https://www.ptt.cc/bbs/Gossiping/M.1581372600.A.FAF.html 疫情 4
## 3: https://www.ptt.cc/bbs/Gossiping/M.1581372600.A.FAF.html 完整 3
## 4: https://www.ptt.cc/bbs/Gossiping/M.1581372600.A.FAF.html 消失 3
## 5: https://www.ptt.cc/bbs/Gossiping/M.1581372600.A.FAF.html 中央社 2
## 6: https://www.ptt.cc/bbs/Gossiping/M.1581372600.A.FAF.html 華盛頓 2
過濾特殊字元
data = data %>%
filter(!grepl('_',word))
轉換日期格式
data$artDate= data$artDate %>% as.Date("%Y/%m/%d")
計算所有字在文集中的總詞頻
word_count <- data %>%
select(word,count) %>%
group_by(word) %>%
summarise(count = sum(count)) %>%
filter(count>3) %>% # 過濾出現太少次的字
arrange(desc(count))
word_count
## # A tibble: 4,425 x 2
## word count
## <chr> <int>
## 1 美國 2823
## 2 川普 2358
## 3 中國 1722
## 4 疫情 1086
## 5 病毒 943
## 6 總統 886
## 7 記者 820
## 8 完整 793
## 9 肺炎 744
## 10 新聞 739
## # ... with 4,415 more rows
# 正向字典txt檔
# 以,將字分隔
P <- read_file("dict/liwc/positive.txt")
# 負向字典txt檔
N <- read_file("dict/liwc/negative.txt")
#將字串依,分割
#strsplit回傳list , 我們取出list中的第一個元素
P = strsplit(P, ",")[[1]]
N = strsplit(N, ",")[[1]]
# 建立dataframe 有兩個欄位word,sentiments,word欄位內容是字典向量
P = data.frame(word = P, sentiment = "positive")
N = data.frame(word = N, sentiment = "negative")
LIWC = rbind(P, N)
head(LIWC)
## word sentiment
## 1 一流 positive
## 2 下定決心 positive
## 3 不拘小節 positive
## 4 不費力 positive
## 5 不錯 positive
## 6 主動 positive
word_count %>% inner_join(LIWC)
## Joining, by = "word"
## Warning: Column `word` joining character vector and factor, coercing into
## character vector
## # A tibble: 332 x 3
## word count sentiment
## <chr> <int> <fct>
## 1 問題 241 negative
## 2 死亡 220 negative
## 3 支持 205 positive
## 4 希望 181 positive
## 5 爆發 158 negative
## 6 嚴重 154 negative
## 7 批評 131 negative
## 8 決定 118 positive
## 9 警告 106 negative
## 10 流行 97 positive
## # ... with 322 more rows
data %>%
select(word) %>%
inner_join(LIWC)
## Joining, by = "word"
以LIWC情緒字典分析
統計每天的文章正面字的次數與負面字的次數
sentiment_count = data %>%
select(artDate,word,count) %>%
inner_join(LIWC) %>%
group_by(artDate,sentiment) %>%
summarise(count=sum(count))
## Joining, by = "word"
sentiment_count %>%
ggplot()+
geom_line(aes(x=artDate,y=count,colour=sentiment))+
geom_vline(xintercept = c(as.numeric(as.Date("2020-03-20")),
as.numeric(as.Date("2020-03-17")),
as.numeric(as.Date("2020-03-13")),
as.numeric(as.Date("2020-04-15")),
as.numeric(as.Date("2020-02-27")),
as.numeric(as.Date("2020-03-06")),
as.numeric(as.Date("2020-03-24"))), col='red', size = 1)
scale_x_date(labels = date_format("%m/%d"))
## <ScaleContinuousDate>
## Range:
## Limits: 0 -- 1
sentiment_count %>%
ggplot()+
geom_line(aes(x=artDate,y=count,colour=sentiment))+
scale_x_date(labels = date_format("%m/%d"))+
geom_vline(xintercept = c(as.numeric(as.Date("2020-03-20")),
as.numeric(as.Date("2020-03-17")),
as.numeric(as.Date("2020-03-13")),
as.numeric(as.Date("2020-04-15")),
as.numeric(as.Date("2020-02-27")),
as.numeric(as.Date("2020-03-06")),
as.numeric(as.Date("2020-03-24"))), col='red', size = 1)
透過觀察情緒變化來回顧事件內容
data %>% filter(artDate == as.Date('2020/03/20')) %>% distinct(artUrl, .keep_all = TRUE)
## artTitle artDate artTime
## 1 [新聞]簡報「冠狀」病毒川普劃掉寫上「中國」 2020-03-20 00:16:54
## 2 [新聞]川普再稱中國病毒林書豪怒嗆種族歧視 2020-03-20 00:25:23
## 3 [新聞]疫情爆炸!川普堅喊「中國病毒」亞裔女 2020-03-20 00:29:55
## 4 Re:[新聞]疫情爆炸!川普堅喊「中國病毒」亞裔女 2020-03-20 00:40:53
## 5 Re:[新聞]疫情爆炸!川普堅喊「中國病毒」亞裔女 2020-03-20 00:57:02
## 6 Re:[新聞]簡報「冠狀」病毒川普劃掉寫上「中國」 2020-03-20 01:02:06
## 7 Re:[新聞]疫情爆炸!川普堅喊「中國病毒」亞裔女 2020-03-20 01:05:26
## 8 [新聞]川普痛批隱瞞疫情後劃掉「新冠」直接改成 2020-03-20 01:32:26
## 9 [新聞]中國首傳境內零新增肺炎病例川普:真假 2020-03-20 01:39:13
## 10 Re:[新聞]川普痛批隱瞞疫情後劃掉「新冠」直接改成 2020-03-20 01:41:05
## 11 [問卦]是不是只有台灣人特別愛川普啊 2020-03-20 01:42:05
## 12 [問卦]我大川普是不是武漢肺炎的最大贏家? 2020-03-20 01:50:00
## 13 Re:[問卦]是不是只有台灣人特別愛川普啊 2020-03-20 01:53:53
## 14 Re:[問卦]是不是只有台灣人特別愛川普啊 2020-03-20 02:10:45
## 15 Re:[問卦]是不是只有台灣人特別愛川普啊 2020-03-20 02:17:04
## 16 Re:[問卦]是不是只有台灣人特別愛川普啊 2020-03-20 02:26:26
## 17 Re:[新聞]疫情爆炸!川普堅喊「中國病毒」亞裔女 2020-03-20 02:30:16
## 18 [新聞]川普堅持「正名」中國!演講稿寫冠狀病 2020-03-20 02:31:20
## 19 Re:[問卦]是不是只有台灣人特別愛川普啊 2020-03-20 02:40:54
## 20 Re:[新聞]川普堅持「正名」中國!演講稿寫冠狀病 2020-03-20 02:46:54
## 21 Re:[新聞]川普堅持「正名」中國!演講稿寫冠狀病 2020-03-20 02:55:20
## 22 Re:[新聞]川普堅持「正名」中國!演講稿寫冠狀病 2020-03-20 03:10:43
## 23 Re:[問卦]是不是只有台灣人特別愛川普啊 2020-03-20 03:23:04
## 24 [問卦]川普是不是在賣亡國感? 2020-03-20 03:24:52
## 25 Re:[新聞]為何堅稱「中國病毒」?川普:因為是從 2020-03-20 03:33:24
## 26 Re:[新聞]川普堅持「正名」中國!演講稿寫冠狀病 2020-03-20 03:37:35
## 27 Re:[新聞]川普堅持「正名」中國!演講稿寫冠狀病 2020-03-20 03:48:08
## 28 [新聞]紐約油價激漲24%「史上最猛」!川普買3 2020-03-20 04:03:54
## 29 Re:[新聞]為何堅稱「中國病毒」?川普:因為是從 2020-03-20 04:08:59
## 30 Re:[新聞]為何堅稱「中國病毒」?川普:因為是從 2020-03-20 04:14:13
## 31 Re:[新聞]為何堅稱「中國病毒」?川普:因為是從 2020-03-20 04:18:12
## 32 [問卦]目前美國論壇民調支持川普還是舔共拜登? 2020-03-20 04:31:54
## 33 [新聞]中國宣布境內0確診川普:誰知道呢 2020-03-20 04:50:51
## 34 Re:[問卦]是不是只有台灣人特別愛川普啊 2020-03-20 05:33:09
## 35 [問卦]川普BYE了吧???? 2020-03-20 06:11:26
## 36 Re:[新聞]簡報「冠狀」病毒川普劃掉寫上「中國」 2020-03-20 06:26:26
## 37 Re:[問卦]是不是只有台灣人特別愛川普啊 2020-03-20 07:34:01
## 38 [問卦]川普是看風向罵中國嗎?? 2020-03-20 08:08:51
## 39 Re:[新聞]簡報「冠狀」病毒川普劃掉寫上「中國」 2020-03-20 09:48:46
## 40 [新聞]林書豪轟川普改講稿「硬說中國病毒」有感 2020-03-20 10:39:20
## 41 [爆卦]林書豪嗆川普心中要有愛再獲中國人支持 2020-03-20 10:44:56
## 42 [新聞]林書豪轟川普改講稿「硬說中國病毒」 2020-03-20 10:58:04
## 43 [新聞]川普將「冠狀」病毒劃掉寫上「中國」 2020-03-20 11:15:05
## 44 [新聞]美國富人和名人優先檢測? 川普:這就是 2020-03-20 11:26:50
## 45 [新聞]特朗普:“我是戰時總統”,發動國防物 2020-03-20 11:49:43
## 46 Re:[新聞]簡報「冠狀」病毒川普劃掉寫上「中國」 2020-03-20 12:30:33
## 47 [問卦]川普下一招是訪台嗎? 2020-03-20 15:44:49
## 48 [新聞]川普政府擬3週內發全民現金成人3萬兒童1萬 2020-03-20 16:06:45
## 49 [問卦]川普眼睛 2020-03-20 16:34:16
## 50 [爆卦]川普-抗疫民調滿意度55% 2020-03-20 19:07:08
## 51 Re:[爆卦]川普-抗疫民調滿意度55% 2020-03-20 19:32:21
## 52 [新聞]東京奧運是否如期舉辦?川普爆料安倍不知 2020-03-20 19:52:40
## 53 Re:[爆卦]川普-抗疫民調滿意度55% 2020-03-20 23:00:47
## artUrl word count
## 1 https://www.ptt.cc/bbs/Gossiping/M.1584663416.A.61E.html 冠狀病毒 5
## 2 https://www.ptt.cc/bbs/Gossiping/M.1584663925.A.607.html 肺炎 4
## 3 https://www.ptt.cc/bbs/Gossiping/M.1584664197.A.AAD.html 中國 7
## 4 https://www.ptt.cc/bbs/Gossiping/M.1584664855.A.750.html 台灣 19
## 5 https://www.ptt.cc/bbs/Gossiping/M.1584665824.A.0C4.html 台灣 3
## 6 https://www.ptt.cc/bbs/Gossiping/M.1584666130.A.4D3.html 中華 1
## 7 https://www.ptt.cc/bbs/Gossiping/M.1584666329.A.EC9.html 亞裔 3
## 8 https://www.ptt.cc/bbs/Gossiping/M.1584667948.A.236.html 病毒 5
## 9 https://www.ptt.cc/bbs/Gossiping/M.1584668358.A.7A5.html 中國 10
## 10 https://www.ptt.cc/bbs/Gossiping/M.1584668467.A.57D.html 中國 6
## 11 https://www.ptt.cc/bbs/Gossiping/M.1584668527.A.3B3.html 川普 5
## 12 https://www.ptt.cc/bbs/Gossiping/M.1584669002.A.155.html 連任 5
## 13 https://www.ptt.cc/bbs/Gossiping/M.1584669235.A.058.html 中國 2
## 14 https://www.ptt.cc/bbs/Gossiping/M.1584670247.A.F61.html 相信 3
## 15 https://www.ptt.cc/bbs/Gossiping/M.1584670626.A.F90.html 看到 4
## 16 https://www.ptt.cc/bbs/Gossiping/M.1584671188.A.1BE.html 覺青 4
## 17 https://www.ptt.cc/bbs/Gossiping/M.1584671420.A.F77.html 新聞 5
## 18 https://www.ptt.cc/bbs/Gossiping/M.1584671482.A.744.html 中國 16
## 19 https://www.ptt.cc/bbs/Gossiping/M.1584672056.A.D6C.html 黑人 6
## 20 https://www.ptt.cc/bbs/Gossiping/M.1584672418.A.FFC.html 美國 4
## 21 https://www.ptt.cc/bbs/Gossiping/M.1584672922.A.488.html 中國 4
## 22 https://www.ptt.cc/bbs/Gossiping/M.1584673845.A.B62.html 中國 6
## 23 https://www.ptt.cc/bbs/Gossiping/M.1584674591.A.B3A.html 希拉 4
## 24 https://www.ptt.cc/bbs/Gossiping/M.1584674694.A.B9C.html 中國 2
## 25 https://www.ptt.cc/bbs/Gossiping/M.1584675207.A.78A.html 病毒 6
## 26 https://www.ptt.cc/bbs/Gossiping/M.1584675459.A.3E4.html 流感 7
## 27 https://www.ptt.cc/bbs/Gossiping/M.1584676096.A.18F.html 中國 13
## 28 https://www.ptt.cc/bbs/Gossiping/M.1584677036.A.1E7.html 油價 14
## 29 https://www.ptt.cc/bbs/Gossiping/M.1584677341.A.4DE.html 武漢 4
## 30 https://www.ptt.cc/bbs/Gossiping/M.1584677655.A.228.html 中國 3
## 31 https://www.ptt.cc/bbs/Gossiping/M.1584677894.A.88B.html 美國 5
## 32 https://www.ptt.cc/bbs/Gossiping/M.1584678716.A.50B.html 美國 4
## 33 https://www.ptt.cc/bbs/Gossiping/M.1584679855.A.E65.html 中國 14
## 34 https://www.ptt.cc/bbs/Gossiping/M.1584682391.A.115.html 美國 10
## 35 https://www.ptt.cc/bbs/Gossiping/M.1584684691.A.B96.html 川普 4
## 36 https://www.ptt.cc/bbs/Gossiping/M.1584685588.A.18C.html 大陸 4
## 37 https://www.ptt.cc/bbs/Gossiping/M.1584689646.A.754.html 漫畫 2
## 38 https://www.ptt.cc/bbs/Gossiping/M.1584691733.A.5BF.html 中國 2
## 39 https://www.ptt.cc/bbs/Gossiping/M.1584697728.A.0D0.html 歧視 6
## 40 https://www.ptt.cc/bbs/Gossiping/M.1584700763.A.992.html 中國 10
## 41 https://www.ptt.cc/bbs/Gossiping/M.1584701098.A.A37.html 用戶 5
## 42 https://www.ptt.cc/bbs/Gossiping/M.1584701886.A.D9A.html 中國 10
## 43 https://www.ptt.cc/bbs/Gossiping/M.1584702907.A.241.html 中國 8
## 44 https://www.ptt.cc/bbs/Gossiping/M.1584703613.A.333.html 檢測 10
## 45 https://www.ptt.cc/bbs/Gossiping/M.1584704986.A.F72.html 生產 5
## 46 https://www.ptt.cc/bbs/Gossiping/M.1584707436.A.69A.html 民主黨 7
## 47 https://www.ptt.cc/bbs/Gossiping/M.1584719091.A.BFD.html 一招 2
## 48 https://www.ptt.cc/bbs/Gossiping/M.1584720409.A.AA8.html 美元 10
## 49 https://www.ptt.cc/bbs/Gossiping/M.1584722058.A.B57.html 川普 1
## 50 https://www.ptt.cc/bbs/Gossiping/M.1584731230.A.823.html 滿意 4
## 51 https://www.ptt.cc/bbs/Gossiping/M.1584732743.A.6E1.html 川普 25
## 52 https://www.ptt.cc/bbs/Gossiping/M.1584733964.A.ABB.html 安倍 6
## 53 https://www.ptt.cc/bbs/Gossiping/M.1584745248.A.917.html 川普 2
data %>%
filter(artDate == as.Date('2020/03/20')) %>%
select(word,count) %>%
group_by(word) %>%
summarise(count = sum(count)) %>%
filter(count>15) %>% # 過濾出現太少次的字
wordcloud2()
哪篇文章的負面情緒最多?負面情緒的字是?
data %>%
filter(artDate == as.Date('2020/03/20')) %>%
inner_join(LIWC) %>%
filter(sentiment == "negative") %>%
group_by(artUrl,sentiment) %>%
summarise(
artTitle = artTitle[1],
count = n()
) %>%
arrange(desc(count))
## Joining, by = "word"
## # A tibble: 45 x 4
## # Groups: artUrl [45]
## artUrl sentiment artTitle count
## <chr> <fct> <chr> <int>
## 1 https://www.ptt.cc/bbs/Gossiping~ negative Re:[新聞]疫情爆炸!川普堅喊「中國病毒」亞裔女~ 35
## 2 https://www.ptt.cc/bbs/Gossiping~ negative Re:[爆卦]川普-抗疫民調滿意度55%~ 23
## 3 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]紐約油價激漲24%「史上最猛」!川普買3~ 9
## 4 https://www.ptt.cc/bbs/Gossiping~ negative Re:[新聞]簡報「冠狀」病毒川普劃掉寫上「中國」~ 9
## 5 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]美國富人和名人優先檢測? 川普:這就是~ 9
## 6 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]疫情爆炸!川普堅喊「中國病毒」亞裔女~ 7
## 7 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]川普痛批隱瞞疫情後劃掉「新冠」直接改成~ 7
## 8 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]川普堅持「正名」中國!演講稿寫冠狀病~ 7
## 9 https://www.ptt.cc/bbs/Gossiping~ negative Re:[問卦]是不是只有台灣人特別愛川普啊~ 7
## 10 https://www.ptt.cc/bbs/Gossiping~ negative Re:[問卦]是不是只有台灣人特別愛川普啊~ 6
## # ... with 35 more rows
data %>%
filter(artDate == as.Date('2020/03/20')) %>%
inner_join(LIWC) %>%
group_by(word,sentiment) %>%
summarise(
count = n()
) %>% data.frame() %>%
top_n(30,wt = count) %>%
ungroup() %>%
mutate(word = reorder(word, count)) %>%
ggplot(aes(word, count, fill = sentiment)) +
geom_col(show.legend = FALSE) +
facet_wrap(~sentiment, scales = "free_y") +
labs(y = "Contribution to sentiment",
x = NULL) +
theme(text=element_text(size=14))+
coord_flip()
## Joining, by = "word"
data %>%
filter(artDate %in% c(as.Date('2020/03/19'))) %>%
inner_join(LIWC) %>%
filter(sentiment == "negative") %>%
group_by(artUrl,sentiment) %>%
summarise(
artTitle = artTitle[1],
count = n()
) %>%
arrange(desc(count))
## Joining, by = "word"
## # A tibble: 20 x 4
## # Groups: artUrl [20]
## artUrl sentiment artTitle count
## <chr> <fct> <chr> <int>
## 1 https://www.ptt.cc/bbs/Gossiping~ negative Re:[問卦]如果川普選輸了是不是就挫賽了~ 12
## 2 https://www.ptt.cc/bbs/Gossiping~ negative Re:[問卦]如果川普選輸了是不是就挫賽了~ 11
## 3 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]世衛要川普勿稱「中國病毒」川普抗議:~ 6
## 4 https://www.ptt.cc/bbs/Gossiping~ negative Re:[新聞]為何不早說?川普:中國絕對可以早示警~ 6
## 5 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]川普堅用「中國病毒」WHO反酸一句話~ 5
## 6 https://www.ptt.cc/bbs/Gossiping~ negative Re:[問卦]川普看起來會落選 5
## 7 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]「中國病毒」是精確用詞 川普:還沒跟~ 4
## 8 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]快訊/川普簽了!「第二階段紓困法案」3~ 4
## 9 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]為何不早說?川普:中國絕對可以早示警~ 3
## 10 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]WHO翻舊帳警告川普「別再稱中國病毒」:~ 3
## 11 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]就是要稱中國病毒川普:無庸置疑~ 3
## 12 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]川普派海軍醫療船到紐約!可提供上千床位~ 3
## 13 https://www.ptt.cc/bbs/Gossiping~ negative [問卦]川普應該很生氣 3
## 14 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]白宮官員稱新冠「功夫流感」 川普卻撐腰~ 3
## 15 https://www.ptt.cc/bbs/Gossiping~ negative [新聞]中國首傳零新增肺炎病例川普:誰知道~ 3
## 16 https://www.ptt.cc/bbs/Gossiping~ negative Re:[新聞]川普堅用「中國病毒」WHO反酸一句話~ 2
## 17 https://www.ptt.cc/bbs/Gossiping~ negative [問卦]如果川普選輸了是不是就挫賽了~ 2
## 18 https://www.ptt.cc/bbs/Gossiping~ negative Re:[新聞]為何不早說?川普:中國絕對可以早示警~ 1
## 19 https://www.ptt.cc/bbs/Gossiping~ negative Re:[爆卦]川普重大推特宣言 1
## 20 https://www.ptt.cc/bbs/Gossiping~ negative Re:[問卦]川普看起來會落選 1
data %>%
filter(artDate %in% c(as.Date('2020/03/21'))) %>%
inner_join(LIWC) %>%
filter(sentiment == "negative") %>%
group_by(artUrl,sentiment) %>%
summarise(
artTitle = artTitle[1],
count = n()
) %>%
arrange(desc(count))
## Joining, by = "word"
## # A tibble: 16 x 4
## # Groups: artUrl [16]
## artUrl sentiment artTitle count
## <chr> <fct> <chr> <int>
## 1 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]肺炎疫情失控川普怪中國美媒指政府沒把~ 16
## 2 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]防疫心累超火爆?記者提問 川普竟突開轟~ 7
## 3 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]奎寧是否新冠特效藥川普與佛奇記者會各說~ 7
## 4 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]世衛讚陸0例川普再罵中國病毒~ 6
## 5 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]川普稱中國病毒黃安「不生氣理由」陸網~ 6
## 6 https://www.ptt.cc/bbs/Gossipin~ negative Re:[新聞]防疫心累超火爆?記者提問 川普竟突開轟~ 5
## 7 https://www.ptt.cc/bbs/Gossipin~ negative Re:[問卦]各位覺得川普今年能否勝選連任~ 5
## 8 https://www.ptt.cc/bbs/Gossipin~ negative Re:[新聞]川普再稱中國病毒林書豪怒嗆種族歧視~ 3
## 9 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]史上首見川普宣布紐約州為武漢肺炎重災~ 3
## 10 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]川普稱瘧疾藥可治武漢肺炎專家當場駁斥~ 3
## 11 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]美情報1月即提出疫情預警川普當耳邊風~ 2
## 12 https://www.ptt.cc/bbs/Gossipin~ negative [問卦]川普不菸不酒,生活意外地守紀律?~ 2
## 13 https://www.ptt.cc/bbs/Gossipin~ negative Re:[爆卦]川普-抗疫民調滿意度55%~ 1
## 14 https://www.ptt.cc/bbs/Gossipin~ negative [問卦]各位覺得川普今年能否勝選連任~ 1
## 15 https://www.ptt.cc/bbs/Gossipin~ negative [新聞]川普:治瘧疾藥物有希望能對抗新冠病毒~ 1
## 16 https://www.ptt.cc/bbs/Gossipin~ negative [爆卦]川普要開記者會啦! 1
data %>%
filter(artDate == as.Date('2020/03/19')) %>%
inner_join(LIWC) %>%
group_by(word,sentiment) %>%
summarise(
count = n()
) %>% data.frame() %>%
top_n(15,wt = count) %>%
ungroup() %>%
mutate(word = reorder(word, count)) %>%
ggplot(aes(word, count, fill = sentiment)) +
geom_col(show.legend = FALSE) +
facet_wrap(~sentiment, scales = "free_y") +
labs(y = "Contribution to sentiment",
x = NULL) +
theme(text=element_text(size=14))+
coord_flip()
## Joining, by = "word"
data %>%
filter(artDate == as.Date('2020/03/21')) %>%
inner_join(LIWC) %>%
group_by(word,sentiment) %>%
summarise(
count = n()
) %>% data.frame() %>%
top_n(15,wt = count) %>%
ungroup() %>%
mutate(word = reorder(word, count)) %>%
ggplot(aes(word, count, fill = sentiment)) +
geom_col(show.legend = FALSE) +
facet_wrap(~sentiment, scales = "free_y") +
labs(y = "Contribution to sentiment",
x = NULL) +
theme(text=element_text(size=14))+
coord_flip()
## Joining, by = "word"
t_tokens_by_art <- t_tokens %>%
filter(!str_detect(word, regex("[0-9]"))) %>%
count(artTitle, word, sort = TRUE)
t_total_words_by_art <- t_tokens_by_art %>%
group_by(artTitle) %>%
summarize(total = sum(n)) %>%
arrange(desc(total))
t_tokens_by_art <- left_join(t_tokens_by_art, t_total_words_by_art)
## Joining, by = "artTitle"
t_words_tf_idf <- t_tokens_by_art %>%
bind_tf_idf(word, artTitle, n)
t_words_tf_idf %>%
filter(total > 20) %>%
arrange(desc(tf_idf))
## # A tibble: 78,059 x 7
## artTitle word n total tf idf tf_idf
## <chr> <chr> <int> <int> <dbl> <dbl> <dbl>
## 1 [爆卦]川普-抗疫民調滿意度55% 滿意 8 33 0.242 4.35 1.05
## 2 [問卦]死亡筆記本如果讓川普拿到他會幹嘛?~ 筆記本~ 4 26 0.154 6.65 1.02
## 3 [問卦]為什麼美國企業家只有川普當總統? 企業家~ 3 21 0.143 6.65 0.950
## 4 Re:[問卦]川普的臉為什麼那麼橘? 川普唱~ 3 23 0.130 6.65 0.868
## 5 [問卦]川普為什麼要拿武肺和流感比較? 武肺 4 25 0.16 4.86 0.778
## 6 [政治]川普兒子新發明「責任輪盤」 轉到 3 25 0.12 5.96 0.715
## 7 Re:[問卦]特朗普將美國醫療資源短缺歸咎於奧巴馬~ 沒補 3 28 0.107 6.65 0.713
## 8 Re:[問卦]為什麼美國企業家只有川普當總統?~ 演講 5 33 0.152 4.57 0.693
## 9 [問卦]美國川普要向中國求償中國會被整多慘?~ 求償 3 32 0.0938 6.65 0.624
## 10 Re:[新聞]川普揚言收到金正恩「美好的信」北韓狠~ 金正恩~ 17 110 0.155 3.94 0.610
## # ... with 78,049 more rows
t_words_tf_idf %>%
filter(total > 100) %>%
arrange(desc(tf_idf))
## # A tibble: 66,853 x 7
## artTitle word n total tf idf tf_idf
## <chr> <chr> <int> <int> <dbl> <dbl> <dbl>
## 1 Re:[新聞]川普揚言收到金正恩「美好的信」北韓狠~ 金正恩~ 17 110 0.155 3.94 0.610
## 2 [新聞]川普宣稱沒看過疫情警告備忘錄但他的說~ 備忘錄~ 16 177 0.0904 4.86 0.439
## 3 Re:[新聞]川普揚言收到金正恩「美好的信」北韓狠~ 搶救 8 110 0.0727 5.55 0.404
## 4 [新聞]川普稱中國病毒黃安「不生氣理由」陸網~ 黃安 12 220 0.0545 6.65 0.363
## 5 [新聞]特朗普:“東京奧運會延期一年可能更好”~ 奧運會~ 14 212 0.0660 5.27 0.348
## 6 [新聞]囚犯爆確診!川普考慮釋放聯邦監獄受刑人 設下一條件~ 囚犯 10 193 0.0518 6.65 0.345
## 7 [新聞]被批“檢查遲緩”的特朗普,這壹次因急~ 檢查 22 338 0.0651 5.27 0.343
## 8 [新聞]川普建議注射消毒劑治新冠肺炎專家呼籲~ 注射 8 105 0.0762 4.46 0.339
## 9 [新聞]協助白登打敗川普楊安澤、美國優先事項~ 白登 11 216 0.0509 6.65 0.339
## 10 [新聞]美與塔利班停火7天川普:和平協議近了~ 塔利班~ 6 119 0.0504 6.65 0.335
## # ... with 66,843 more rows
t_tokens_by_date <- t_tokens %>%
filter(!str_detect(word, regex("[0-9]"))) %>%
count(artDate, word, sort = TRUE)
t_total_words_by_date <- t_tokens_by_date %>%
group_by(artDate) %>%
summarize(total = sum(n)) %>%
arrange(desc(total))
t_tokens_by_date <- left_join(t_tokens_by_date, t_total_words_by_date)
## Joining, by = "artDate"
t_words_tf_idf_date <- t_tokens_by_date %>%
bind_tf_idf(word, artDate, n)
t_words_tf_idf_date %>%
filter(total > 20) %>%
group_by(artDate) %>%
top_n(1) %>%
arrange(artDate)
## Selecting by tf_idf
## # A tibble: 96 x 7
## # Groups: artDate [74]
## artDate word n total tf idf tf_idf
## <date> <chr> <int> <int> <dbl> <dbl> <dbl>
## 1 2020-02-10 氣溫 3 116 0.0259 3.64 0.0941
## 2 2020-02-12 轉暖 3 187 0.0160 4.33 0.0695
## 3 2020-02-13 協定 13 1130 0.0115 3.64 0.0418
## 4 2020-02-14 重<U+5553> 8 1079 0.00741 4.33 0.0321
## 5 2020-02-15 威廉 4 171 0.0234 4.33 0.101
## 6 2020-02-16 愛荷華州 5 697 0.00717 4.33 0.0311
## 7 2020-02-17 辛普森 6 169 0.0355 4.33 0.154
## 8 2020-02-18 美國公司 4 501 0.00798 4.33 0.0346
## 9 2020-02-19 強硬 3 219 0.0137 1.93 0.0265
## 10 2020-02-20 瑞爾 7 1018 0.00688 3.64 0.0250
## # ... with 86 more rows
t_words_tf_idf_date %>%
filter(total > 20) %>%
filter(artDate == as.Date("2019-01-05") |
artDate == as.Date("2019-01-16") |
artDate == as.Date("2019-03-04") |
artDate == as.Date("2019-03-10") |
artDate == as.Date("2019-04-09")) %>%
group_by(artDate) %>%
top_n(1) %>%
arrange(artDate)
## Selecting by tf_idf
## # A tibble: 0 x 7
## # Groups: artDate [0]
## # ... with 7 variables: artDate <date>, word <chr>, n <int>, total <int>,
## # tf <dbl>, idf <dbl>, tf_idf <dbl>
t_words_by_art <- trump_csv %>%
unnest_tokens(word, artContent, token=t_tokenizer) %>%
filter(!str_detect(word, regex("[0-9]"))) %>%
count(artUrl, word, sort = TRUE)
t_word_pairs <- t_words_by_art %>%
pairwise_count(word, artUrl, sort = TRUE)
t_word_pairs
## # A tibble: 10,457,250 x 3
## item1 item2 n
## <chr> <chr> <dbl>
## 1 美國 川普 612
## 2 川普 美國 612
## 3 美國 總統 450
## 4 總統 美國 450
## 5 總統 川普 437
## 6 川普 總統 437
## 7 疫情 美國 363
## 8 美國 疫情 363
## 9 疫情 川普 356
## 10 川普 疫情 356
## # ... with 10,457,240 more rows
t_word_cors <- t_words_by_art %>%
group_by(word) %>%
filter(n() >= 20) %>%
pairwise_cor(word, artUrl, sort = TRUE)
t_word_cors %>%
filter(item1 == "川普")
## # A tibble: 701 x 3
## item1 item2 correlation
## <chr> <chr> <dbl>
## 1 川普 美國 0.224
## 2 川普 總統 0.193
## 3 川普 疫情 0.186
## 4 川普 綜合 0.173
## 5 川普 記者會 0.161
## 6 川普 來源 0.160
## 7 川普 媒體 0.159
## 8 川普 武漢 0.144
## 9 川普 新冠肺炎 0.136
## 10 川普 國家 0.136
## # ... with 691 more rows
seed_words <- c("ettoday", "ltn", "時報", "聯合報", "udn", "中時", "html", "n")
threshold <- 0.6
remove_words <- t_word_cors %>%
filter((item1 %in% seed_words|item2 %in% seed_words),
correlation>threshold) %>%
.$item1 %>%
unique()
set.seed(2020)
t_word_cors_new <- t_word_cors %>%
filter(!(item1 %in% remove_words|item2 %in% remove_words))
t_word_cors_new %>%
filter(correlation > .4) %>%
graph_from_data_frame() %>%
ggraph(layout = "fr") +
geom_edge_link(aes(edge_alpha = correlation), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 3) +
geom_node_text(aes(label = name), repel = TRUE) +
theme_void()
整體而言,因為ptt八卦版對於川普的討論風向主要與川普對肺炎的發言有關,因此貼文情緒會受到肺炎的影響,呈現負面情緒較高的現象。