2020年全年行動支付交易金額高達4,230億元,創下有統計以來新高紀錄,電子支付使用人數亦突破千萬人,表示民眾支付習慣的改變,除了過往以現金支付、信用卡支付的付款行為,也愈來愈多的人以手機支付APP作消費,只要「嗶」一下,不用帶現金,不用找零,又可享受業者五花八門的回饋方案,多「嗶」多賺。 此外行動支付機購百家齊鳴,可支付的商家、通路及使用場域也大增,更增加了民眾使用行動支付作交易的意願,本組想藉此了解網路社群對行動支付的討論為何?
資料來源:PTT MobilePay版 資料區間:2020/01~2021/03 所有文章 資料數量:發文:1800篇、評論71990篇
系統參數設定
Sys.setlocale(category = "LC_ALL", locale = "zh_TW.UTF-8") # 避免中文亂碼## [1] ""
安裝需要的packages
# echo = T,results = 'hide'
packages = c("dplyr", "tidytext", "stringr", "wordcloud2", "ggplot2",'readr','data.table','reshape2','wordcloud','tidyr','scales', "ggraph", "igraph", "widyr","BiocManager")
existing = as.character(installed.packages()[,1])
for(pkg in packages[!(packages %in% existing)]) install.packages(pkg)讀進library
library(dplyr)
library(stringr)
library(tidytext)
library(wordcloud2)
library(data.table)
library(ggplot2)
library(reshape2)
library(wordcloud)
library(tidyr)
library(readr)
require(NLP)
require(jiebaR)
require(ggraph)
require(igraph)
require(scales)
require(reshape2)
require(widyr)
require(limma)
# BiocManager::install("limma")# 把文章和留言讀進來
# 資料清理
metaData = fread('../data/pay_articleMetaData.csv',encoding = 'UTF-8') %>%
mutate(sentence=gsub("[\n]{2,}", "。", sentence)) %>%
mutate(sentence=gsub("\n", "", sentence)) %>% #換行符號
mutate(sentence=gsub("http(s)?[-:\\/A-Za-z0-9\\.]+", " ", sentence)) %>% #有url的取代掉
mutate(sentence=tolower(sentence)) %>% #轉小寫
mutate(artTitle=tolower(artTitle)) %>%
mutate(sentence=gsub("媒體來源|記者署名|完整新聞標題|完整新聞內文|完整新聞連結|(或短網址)|備註|備註請放最後面|違者新聞文章刪除", "", sentence))
metaData$sentence <- gsub(" ","",metaData$sentence) #去空白以免影響英文斷詞
metaData$sentence <- gsub(" ","",metaData$sentence)
metaData$artTitle <- gsub(" ","",metaData$artTitle) #去空白以免影響英文斷詞
metaData$artTitle <- gsub(" ","",metaData$artTitle)
#為每篇增加流水號
metaData <- metaData %>% mutate(seqno = 1:n(),
class="",linepay=0,streetpay=0)
#新增發表文章種類欄位
for (ix in c(1:nrow(metaData))) {
metaData$class[ix] <- if (grepl("情報",metaData$artTitle[ix]) == TRUE){"情報"
}else if ( grepl("請益",metaData$artTitle[ix]) == TRUE){"請益"
}else if ( grepl("討論",metaData$artTitle[ix]) == TRUE){"討論"
}else if ( grepl("心得",metaData$artTitle[ix]) == TRUE){"心得"
}else if ( grepl("閒聊",metaData$artTitle[ix]) == TRUE){"閒聊"
}else if ( grepl("優惠",metaData$artTitle[ix]) == TRUE){"優惠"
}else if ( grepl("新聞",metaData$artTitle[ix]) == TRUE){"新聞"
}else if ( grepl("公告",metaData$artTitle[ix]) == TRUE){"公告"
}else{"其他"}
metaData$linepay[ix] <- if (grepl("line",metaData$sentence[ix]) == TRUE){1}else {0}
metaData$streetpay[ix] <- if (grepl("街口",metaData$sentence[ix]) == TRUE){1} else {0}
}
# 挑選文章對應的留言
reviews = fread('../data/pay_articleReviews.csv',encoding = 'UTF-8')
reviews = left_join(metaData, reviews[,c("artUrl", "cmtContent")], by = "artUrl")
#
# z3<-metaData %>% select(class,artDate,artUrl,sentence) %>%
# filter(str_detect(sentence,"咖啡") )
# z4<-reviews %>% select(class,artUrl,sentence,cmtContent) %>%
# filter(str_detect(cmtContent,"咖啡")) ###發表文章的分佈情形
#各種類發表文章的分佈情形
metaData %>%
count(class,sort=TRUE) %>%
ggplot(aes(class, n)) +
geom_col(show.legend = FALSE) +
labs(y = "篇數 ",
x = "發文種類") +
theme(text=element_text(size=14)) + 情報類發文最多近800筆,,請益類次之約500筆
(1). 文章斷詞
設定斷詞引擎
# 加入自定義的字典
jieba_tokenizer <- worker(user="../dict/mp_dict.txt", stop_word = "../dict/mp_stop_words.txt")
# 設定斷詞function
customized_tokenizer <- function(t) {
lapply(t, function(x) {
tokens <- segment(x, jieba_tokenizer)
return(tokens)
})
}# 把文章和留言的斷詞結果併在一起
meta_tokens <- metaData %>% unnest_tokens(word, sentence, token=customized_tokenizer)
review_tokens <- reviews %>% unnest_tokens(word, cmtContent, token=customized_tokenizer)
# 把資料併在一起
all_tokens <- rbind(meta_tokens[,c("artDate","artUrl", "word")],
review_tokens[,c("artDate","artUrl", "word")]
) (2). 資料基本清理
# 格式化日期欄位
all_tokens$artDate= all_tokens$artDate %>% as.Date("%Y/%m/%d")
# 過濾特殊字元
all_tokens <- all_tokens %>%
filter(!grepl('[[:punct:]]',word)) %>% # 去標點符號
filter(!grepl("['^0-9']",word)) %>% # 去數字,英文要先保留有linepay,linepaymoney, ubear這些詞
filter(nchar(.$word)>1)
synonym <- function(str)
{
str <- recode(str, lp="linepay",
gp="googlepay",
gpay="googlepay",
sp="samsungpay",
hgpay="happygopay",
fami="famipay",
台灣行動支付="台灣pay",
pi="pipay",
pi拍錢包="pipay",
pi錢包="pipay",
拍錢包="pipay",
街口="街口支付",
xd=""
)
}
meta_tokens$word=synonym(meta_tokens$word)
review_tokens$word=synonym(review_tokens$word)
all_tokens$word=synonym(all_tokens$word) #找出詞頻較常出現的
word_count <- all_tokens %>%
select(word) %>%
count(word) %>%
filter(n>150) %>% # 過濾出現太少次的字
arrange(desc(n()))
# word_count %>% wordcloud2() #不同種類的tf_idf
meta_tokens %>%
count(class,word,sort=TRUE) %>%
bind_tf_idf(word, class, n) %>%
filter(n>50,nchar(word)>1) %>%
filter(class=="優惠") %>%
arrange(class,desc(tf_idf)) ## class word n tf idf tf_idf
## 1: 優惠 台新 51 0.008132674 0.1335314 0.001085967
## 2: 優惠 回饋 153 0.024398023 0.0000000 0.000000000
## 3: 優惠 活動 123 0.019614097 0.0000000 0.000000000
## 4: 優惠 悠遊付 83 0.013235529 0.0000000 0.000000000
## 5: 優惠 linepay 62 0.009886780 0.0000000 0.000000000
## 6: 優惠 app 61 0.009727316 0.0000000 0.000000000
## 7: 優惠 消費 61 0.009727316 0.0000000 0.000000000
## 8: 優惠 活動期間 59 0.009408388 0.0000000 0.000000000
## 9: 優惠 帳戶 53 0.008451603 0.0000000 0.000000000
## 10: 優惠 綁定 51 0.008132674 0.0000000 0.000000000
#以下為linepay的處理
metaData_linepay <- metaData %>%
filter(str_detect(sentence,"linepay") | str_detect(sentence,"linepaymoney") | str_detect(sentence,"lp") | str_detect(sentence,"lpm") | str_detect(sentence,"lpmoney"))
reviews_linepay <-reviews %>%
filter(str_detect(cmtContent,"linepay") | str_detect(cmtContent,"linepaymoney") | str_detect(cmtContent,"lp") | str_detect(cmtContent,"lpm") | str_detect(cmtContent,"lpmoney"))
meta_tokens_linepay <- metaData_linepay %>% unnest_tokens(word, sentence, token=customized_tokenizer)
review_tokens_linepay <- reviews_linepay %>% unnest_tokens(word, cmtContent, token=customized_tokenizer)
# 把資料併在一起
all_tokens_linepay <- rbind(meta_tokens_linepay[,c("artDate","artUrl", "word")],
review_tokens_linepay[,c("artDate","artUrl", "word")]
)
line_synonym<-c("linepay","linepaymoney","lp","lpm","lpmoney")
all_tokens_linepay %>%
filter(!word %in% line_synonym) %>%
filter(!str_detect(word,"\\d")) %>%
filter(nchar(word)>1) %>%
count(word) %>%
filter(n>150) %>% # 過濾出現太少次的字
arrange(desc(n()))## word n
## 1: app 222
## 2: line 164
## 3: linepoint 515
## 4: 一卡通 236
## 5: 上限 152
## 6: 手機 211
## 7: 支付 379
## 8: 付款 669
## 9: 功能 170
## 10: 用戶 229
## 11: 交易 282
## 12: 同意 224
## 13: 回饋 803
## 14: 成功 200
## 15: 行動支付 246
## 16: 店家 210
## 17: 金額 250
## 18: 信用卡 317
## 19: 指定 179
## 20: 是否 171
## 21: 活動 762
## 22: 活動期間 281
## 23: 消費 453
## 24: 帳戶 337
## 25: 帳號 200
## 26: 悠遊付 193
## 27: 悠遊卡 152
## 28: 條碼 185
## 29: 連結 152
## 30: 陸續 156
## 31: 提供 226
## 32: 最高 233
## 33: 無法 180
## 34: 發放 172
## 35: 結帳 164
## 36: 街口 321
## 37: 會員 170
## 38: 綁定 332
## 39: 資訊 163
## 40: 銀行 277
## 41: 選擇 186
## 42: 優惠 444
## 43: 儲值 166
## 44: 點數 383
## 45: 點數回饋 354
## word n
# %>% wordcloud2() #以下為街口支付的處理
metaData_street <- metaData %>%
filter(str_detect(sentence,"街口") )
reviews_street <-reviews %>%
filter(str_detect(cmtContent,"街口"))
meta_tokens_street <- metaData_street %>% unnest_tokens(word, sentence, token=customized_tokenizer)
review_tokens_street <- reviews_street %>% unnest_tokens(word, cmtContent, token=customized_tokenizer)
# 把資料併在一起
all_tokens_street <- rbind(meta_tokens_street[,c("artDate","artUrl", "word")],
review_tokens_street[,c("artDate","artUrl", "word")]
)
street_synonym<-c("街口","街口支付")
all_tokens_street %>%
filter(!word %in% street_synonym) %>%
filter(!str_detect(word,"\\d")) %>%
filter(nchar(word)>1) %>%
count(word) %>%
filter(n>80) %>% # 過濾出現太少次的字
arrange(desc(n())) ## word n
## 1: app 253
## 2: linepay 490
## 3: lp 296
## 4: pay 90
## 5: xd 93
## 6: 一次 103
## 7: 公司 191
## 8: 手機 133
## 9: 支付 302
## 10: 方式 84
## 11: 付款 228
## 12: 功能 111
## 13: 台新 86
## 14: 台灣 93
## 15: 台灣pay 129
## 16: 用戶 110
## 17: 交易 104
## 18: 全家 168
## 19: 全聯 95
## 20: 合作 96
## 21: 回饋 579
## 22: 行動支付 213
## 23: 投信 162
## 24: 店家 169
## 25: 服務 113
## 26: 表示 93
## 27: 金管會 121
## 28: 金額 97
## 29: 信用卡 278
## 30: 活動 259
## 31: 消費 290
## 32: 問題 99
## 33: 基金 110
## 34: 帳戶 290
## 35: 悠遊付 199
## 36: 悠遊卡 134
## 37: 條碼 145
## 38: 現金回饋 81
## 39: 通路 126
## 40: 提供 109
## 41: 最高 83
## 42: 無法 92
## 43: 結帳 103
## 44: 街口幣 310
## 45: 會員 214
## 46: 綁定 189
## 47: 載具 148
## 48: 電子支付 157
## 49: 電支 111
## 50: 銀行 181
## 51: 整合 116
## 52: 優惠 135
## 53: 儲值 102
## 54: 聯名卡 117
## 55: 繳費 115
## word n
# %>% wordcloud2() #以下為pi拍錢包的處理
metaData_pi <- metaData %>%
filter(str_detect(sentence,"pi") | str_detect(sentence,"拍錢包"))
reviews_pi <-reviews %>%
filter(str_detect(cmtContent,"pi") | str_detect(cmtContent,"拍錢包"))
meta_tokens_pi <- metaData_pi %>% unnest_tokens(word, sentence, token=customized_tokenizer)
review_tokens_pi <- reviews_pi %>% unnest_tokens(word, cmtContent, token=customized_tokenizer)
# 把資料併在一起
all_tokens_pi <- rbind(meta_tokens_pi[,c("artDate","artUrl", "word")],
review_tokens_pi[,c("artDate","artUrl", "word")]
)
meta_tokens_pi$word=synonym(meta_tokens_pi$word)
review_tokens_pi$word=synonym(review_tokens_pi$word)
all_tokens_pi$word=synonym(all_tokens_pi$word)
pi_synonym<-c("pi","pi錢包","拍錢包","pi拍錢包")
all_tokens_pi %>%
filter(!word %in% pi_synonym) %>%
filter(!str_detect(word,"\\d")) %>%
filter(nchar(word)>1) %>%
count(word) %>%
filter(n>50) %>% # 過濾出現太少次的字
arrange(desc(n())) ## word n
## 1: app 139
## 2: linepay 158
## 3: linepoint 61
## 4: pipay 588
## 5: pixel 54
## 6: p幣 203
## 7: 上限 55
## 8: 手機 78
## 9: 支付 122
## 10: 付款 164
## 11: 加碼 67
## 12: 交易 76
## 13: 回饋 351
## 14: 行動支付 94
## 15: 金額 71
## 16: 信用卡 169
## 17: 活動 166
## 18: 活動期間 52
## 19: 消費 125
## 20: 最高 76
## 21: 街口支付 78
## 22: 會員 51
## 23: 綁定 130
## 24: 銀行 54
## 25: 優惠 87
## 26: 點數 53
## 27: 點數回饋 62
## word n
# %>% wordcloud2() #以下為台灣pay的處理
metaData_taiwan <- metaData %>%
filter(str_detect(sentence,"台灣pay") | str_detect(sentence,"taiwanpay"))
reviews_taiwan <-reviews %>%
filter(str_detect(cmtContent,"台灣pay") | str_detect(cmtContent,"taiwanpay"))
meta_tokens_taiwan <- metaData_taiwan %>% unnest_tokens(word, sentence, token=customized_tokenizer)
review_tokens_taiwan <- reviews_taiwan %>% unnest_tokens(word, cmtContent, token=customized_tokenizer)
# 把資料併在一起
all_tokens_taiwan <- rbind(meta_tokens_taiwan[,c("artDate","artUrl", "word")],
review_tokens_taiwan[,c("artDate","artUrl", "word")]
)
meta_tokens_taiwan$word=synonym(meta_tokens_taiwan$word)
review_tokens_taiwan$word=synonym(review_tokens_taiwan$word)
all_tokens_taiwan$word=synonym(all_tokens_taiwan$word)
taiwan_synonym<-c("台灣pay","taiwanpay")
all_tokens_taiwan %>%
filter(!word %in% taiwan_synonym) %>%
filter(!str_detect(word,"\\d")) %>%
filter(nchar(word)>1) %>%
count(word) %>%
filter(n>70) %>% # 過濾出現太少次的字
arrange(desc(n()))## word n
## 1: app 346
## 2: googlepay 77
## 3: linepay 105
## 4: nfc 81
## 5: qrcode 101
## 6: 一次 72
## 7: 一銀 72
## 8: 三倍券 122
## 9: 上限 108
## 10: 手機 101
## 11: 支付 197
## 12: 支援 92
## 13: 方式 81
## 14: 付款 163
## 15: 加碼 98
## 16: 台灣 146
## 17: 用戶 153
## 18: 交易 273
## 19: 兆豐 73
## 20: 回饋 554
## 21: 回饋金 75
## 22: 成功 93
## 23: 行動支付 243
## 24: 刷卡 89
## 25: 官網 95
## 26: 店家 117
## 27: 金融卡 208
## 28: 金額 75
## 29: 信用卡 447
## 30: 客服 97
## 31: 指定 74
## 32: 活動 436
## 33: 活動期間 103
## 34: 消費 303
## 35: 參與 95
## 36: 問題 92
## 37: 帳戶 234
## 38: 掃碼 260
## 39: 條碼 92
## 40: 通路 97
## 41: 無法 75
## 42: 華南 76
## 43: 街口支付 122
## 44: 感應 156
## 45: 綁定 180
## 46: 彰銀 115
## 47: 銀行 330
## 48: 優惠 157
## 49: 轉帳 72
## 50: 繳費 80
## word n
# %>% wordcloud2() jieba_tokenizer = worker(user="../dict/mp_dict.txt") #還未加stop_words
# unnest_tokens 使用的bigram分詞函數
# Input: a character vector
# Output: a list of character vectors of the same length
# 直接寫成一個bigram function呼叫
jieba_bigram <- function(t) {
lapply(t, function(x) {
if(nchar(x)>1){ #長度2以上的才可以ngrams(tokens,2)
tokens <- segment(x, jieba_tokenizer)
bigram<- ngrams(tokens, 2)
bigram <- lapply(bigram, paste, collapse = " ") #用空白隔開
unlist(bigram)
}
})
}
## visualize_bigrams
visualize_bigrams <- function(bigrams) {
set.seed(2016)
a <- grid::arrow(type = "closed", length = unit(.15, "inches"))
bigrams %>%
graph_from_data_frame() %>%
ggraph(layout = "fr") +
geom_edge_link(aes(edge_alpha = n), show.legend = FALSE, arrow = a) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_text(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
}#作bigram
mobilePay_bigram <- metaData %>%
unnest_tokens(bigram, sentence, token = jieba_bigram)mobilePay_bigram %>%
separate(bigram, c("word1", "word2"), sep=" ") %>%
count(word1, word2, sort = TRUE) %>%
filter(n > 100,
!str_detect(word1, "\\d"),
!str_detect(word2, "\\d")) %>%
visualize_bigrams()#stop_words登場
stop_words <- scan(file = "../dict/mp_stop_words.txt", what=character(),sep='\n',
encoding='utf-8',fileEncoding='utf-8')
mp_lexicon <- scan(file = "../dict/mp_dict.txt", what=character(),sep='\n',
encoding='utf-8',fileEncoding='utf-8')# stop_words
#清除stop words
mobilePay_bigram_separated <- mobilePay_bigram %>%
select(-artPoster,-artCat,-commentNum,-push,-boo) %>%
filter(!str_detect(bigram, regex("[0-9]"))) %>%
separate(bigram, c("word1", "word2"), sep = " ") %>%
filter(!(word1 %in% stop_words), !(word2 %in% stop_words))#找出前20的bigram , 作為自行斷詞的參考
mobilePay_bigram_separated %>%
unite_("bigram", c("word1","word2"), sep=" ") %>%
count(bigram, sort = TRUE) ## bigram n
## 1: linepoint s 314
## 2: 悠遊卡 公司 300
## 3: 回饋 上限 210
## 4: 自動 加值 143
## 5: 台灣 行動支付 142
## ---
## 59855: 鑽 法律 1
## 59856: 鑽 金卡 1
## 59857: 鑽 保卡 1
## 59858: 鑽保 數位 1
## 59859: 鑽保卡 這張 1
#重新畫bigram圖
mobilePay_bigram_separated %>%
count(word1,word2,sort=TRUE) %>%
filter(n > 60,
!str_detect(word1, "\\d"),
!str_detect(word2, "\\d"),
nchar(word1)>1
# nchar(word2)>1
) %>%
visualize_bigrams() ###以下要作斷句
# 以全形或半形 驚歎號、問號、分號 以及 全形句號 爲依據進行斷句
mobilePay_sentences <- strsplit(metaData$sentence,"[。!;?!?;]")
# 將每句句子,與他所屬的文章連結配對起來,整理成一個dataframe
mobilePay_sentences <- data.frame(
artUrl = rep(metaData$artUrl, sapply(mobilePay_sentences, length)),
sentence = unlist(mobilePay_sentences)
) %>%
filter(!str_detect(sentence, regex("^(\t|\n| )*$")))
#轉成文字型態
mobilePay_sentences$sentence <- as.character(mobilePay_sentences$sentence)
mobilePay_sentences$sentence <- gsub("~","",mobilePay_sentences$sentence)
# mobilePay_sentences#加入斷詞
mp_dict <- scan(file = "../dict/mp_dict.txt", what=character(),sep='\n',
encoding='utf-8',fileEncoding='utf-8',quiet = T)
# mp_dictjieba_tokenizer = worker(write = "NOFILE")
# 重新斷詞
new_user_word(jieba_tokenizer, c(mp_dict))## [1] TRUE
chi_tokenizer <- function(t) {
lapply(t, function(x) {
if(nchar(x)>1){
tokens <- segment(x, jieba_tokenizer) #用新的tokenizer
tokens <- tokens[!tokens %in% stop_words] #stop_words就移除
# 去掉字串長度爲1的詞彙
tokens <- tokens[nchar(tokens)>1]
return(tokens)
}
})
}
# 剛才的斷詞結果沒有使用新增的辭典,因此我們重新進行斷詞,再計算各詞彙在各文章中出現的次數
mp_words <- mobilePay_sentences %>%
unnest_tokens(word, sentence, token=chi_tokenizer) %>% #一個字的斷詞
filter(!str_detect(word, regex("[0-9]"))) %>% #只去除數字,pay的名字很多有英文字
count(artUrl, word, sort = TRUE)
#處理同義字
mp_words$word=synonym(mp_words$word)
word_pairs <- mp_words %>%
pairwise_count(word, artUrl, sort = TRUE) %>% #每一篇文章同時出現詞彙
filter(!item1 %in% c("行動支付") & !item2 %in% c("行動支付"))## Warning: `distinct_()` was deprecated in dplyr 0.7.0.
## Please use `distinct()` instead.
## See vignette('programming') for more help
## Warning: `tbl_df()` was deprecated in dplyr 1.0.0.
## Please use `tibble::as_tibble()` instead.
word_pairs## # A tibble: 6,055,792 x 3
## item1 item2 n
## <chr> <chr> <dbl>
## 1 活動 回饋 409
## 2 回饋 活動 409
## 3 消費 回饋 338
## 4 回饋 消費 338
## 5 消費 活動 312
## 6 活動 消費 312
## 7 帳戶 回饋 267
## 8 回饋 帳戶 267
## 9 帳戶 活動 237
## 10 活動 帳戶 237
## # ... with 6,055,782 more rows
word_cors <- mp_words %>%
filter(!str_detect(word,regex("[0-9]"))) %>%
group_by(word) %>%
filter(n() >= 60) %>%
pairwise_cor(word, artUrl, sort = TRUE) #呼叫後就自動加上item1,item2
word_cors## # A tibble: 71,556 x 3
## item1 item2 correlation
## <chr> <chr> <dbl>
## 1 解釋 權利 0.835
## 2 權利 解釋 0.835
## 3 保留 權利 0.821
## 4 權利 保留 0.821
## 5 終止 保留 0.803
## 6 保留 終止 0.803
## 7 終止 權利 0.786
## 8 權利 終止 0.786
## 9 終止 違反 0.783
## 10 違反 終止 0.783
## # ... with 71,546 more rows
# 找出與各個pay相關性最高的 15 個詞彙
#主要行動支付產品
# mp_products<-c("linepay", "街口支付","台灣pay","pi錢包","悠遊付","applepay","famipay","samsungpay","pxpay","googlepay")
mp_products<-c("linepay", "街口支付","台灣pay","pipay")
word_cors %>%
filter(item1 %in% mp_products) %>%
group_by(item1) %>%
top_n(15) %>%
ungroup() %>%
mutate(item2 = reorder(item2, correlation)) %>%
ggplot(aes(item2, correlation)) +
geom_bar(stat = "identity") +
facet_wrap(~ item1, scales = "free") +
coord_flip()+ #座標轉向
theme(text = element_text(family = "Heiti TC Light")) #加入中文字型設定,避免中文字顯示錯誤。## Selecting by correlation
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font family not
## found in Windows font database
## Warning in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)): font family not
## found in Windows font database
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## font family not found in Windows font database
## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
## Warning in grid.Call.graphics(C_text, as.graphicsAnnot(x$label), x$x, x$y, :
## font family not found in Windows font database
set.seed(2020)
filter_word=c("解釋","權利","保留","終止","違反","點選","如有","不可","另行通知","技術","變更","暫停","活動資格","注意事項","辨識","電話","活動期間","活動內容","版本","陸續","取消","狀態","回饋資格","規定","上述","如有","最終","決定","標題","時間")
#線愈粗表示correlation愈高
word_cors %>%
filter(!item1 %in% filter_word ) %>%
filter(!item2 %in% filter_word) %>%
filter(correlation > 0.4) %>%
graph_from_data_frame() %>% #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, family = "Heiti TC Light") + #加入中文字型設定,避免中文字顯示錯誤。
theme_void()## Warning in grid.Call(C_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : font
## family not found in Windows font database
## Warning: ggrepel: 1 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
+ 發文主要為情報版上的活動情報。 + line Pay, line points,line pay money的活動,一直是網友的議題 + 台北市發行的悠遊付電子支付,因2020初一直處封測階段,屬於假上線狀況,一直在社群上有討論,另外悠遊付採用的是掃碼支付方式,目前僅支援萊爾富、頂好等多個通路,無法如同現有的NFC SIM卡或Samsung Pay悠遊卡在所有悠遊卡通路使用。另外有關悠遊付的操作討論也不少。
LINE Pay x 街口支付共提次數文氏圖 共提次數117次,佔line pay總聲量 26% 佔街口支付 43% ,表示對街口支付的潛在競爭影響較大
art_count<-metaData %>% select (linepay,streetpay)
venn_art_count <- vennCounts(art_count)
vennDiagram(venn_art_count, names = c("Line Pay", "街頭支付"), cex = 1, counts.col = "red")