一、導出並讀入微信聊天記錄
參照百度的方法,使用同步助手。安裝同步助手--連接手機(安卓蘋果均可)--點擊“其他功能“--點擊微信圖標即可進入聊天記錄導出界面(非常簡單)。
導出數據后直接用read.table讀入表格
命令:
dat <- read.table("message.txt",skip=4,header=F,fill=TRUE) #skip跳過前面四行不用的信息;導出時候的信息缺失(語音圖片信息等)導致表格不規則,設置fill=TRUE強制讀取。聊天記錄信息位於第七列。
二、使用Rwordseg包
2.1 使用之前要先安裝
install.packages("rJava") #需要java環境
install.packages("Rwordseg", repos = "http://R-Forge.R-project.org")
2.2 Rwordseg具有強大的中文分詞功能
segmentCN(strwords) #strwords 是中文字符串,還可以文本路徑,返回值是一個向量。
> a <- segmentCN("你好R")
> str(a)
chr [1:2] "你好" "R"
2.3 Rwordseg還具有導入詞庫的功能
支持普通詞庫(txt格式)和搜狗細胞詞庫( scel 格式),使用方法:
先從網上下載搜狗的細胞詞庫(scel格式),再安裝
installDict(dictFile,dicttype = c("text", "scel"), load = TRUE)
例如:
installDict("/home/ywliao/Tmp/日常用語大詞庫.scel",dicttype = "scel", "richang",load = TRUE)
2.4 自定義詞典
insertWords("捂臉") #讓某詞組放入內存
deleteWords(c("捂臉")) #刪除某詞
三 、使用wordcloud2包
3.1 安裝
install.packages('devtools')
devtools::install_github("lchiffon/wordcloud2")
3.2 使用
wordcloud2(data, size = 1, minSize = 0, gridSize = 0,
fontFamily = NULL, fontWeight = 'normal',
color = 'random-dark', backgroundColor = "white",
minRotation = -pi/4, maxRotation = pi/4, rotateRatio = 0.4,
shape = 'circle', ellipticity = 0.65, widgetsize = NULL)
參數:
(1)data:詞雲生成數據,包含具體詞語以及頻率;
(2)size:字體大小,默認為1,一般來說該值越小,生成的形狀輪廓越明顯;
(3)fontFamily:字體,如‘微軟雅黑’;
(4)fontWeight:字體粗細,包含‘normal’,‘bold’以及‘600’;;
(5)color:字體顏色,可以選擇‘random-dark’以及‘maxRontatin:字體旋轉角度范圍的最小值以及最大值,選定后,字體會在該范圍內隨機旋轉;(三角形),‘pentagon’(五邊形);
例如:wordcloud2(freq_dat, size = 1,shape = 'star')#生成星星狀的詞雲
四、實例
情人節將到,將你和TA的聊天記錄生成詞雲發送給TA定會給TA一個驚喜。
分析:
將我和gf的聊天記錄生成文件oak_message.txt,在網上下載搜狗細胞詞庫“網絡日常用語大詞庫.scel”和“網絡日常用語.scel”,安裝了所需要的rJava,Rwordseg和wordcloud2包。R代碼如下:
library(rJava)
library(Rwordseg)
library(wordcloud2)
#加入日常用語細胞詞庫
installDict("/home/ywliao/Tmp/日常用語大詞庫.scel",dicttype = "scel", "richang",load = TRUE)
installDict("/home/ywliao/Tmp/網絡日常用語.scel",dicttype = "scel", "wangluorichang",load = TRUE)
insertWords(c("捂臉","親親"))
dat <- read.table("oak_message.txt",skip=4,header=F,na.strings = "NA",fill=TRUE)
all_message <- ""
for (msg in dat$V7){
all_message <- c(all_message,segmentCN(msg))
}
all_message <- all_message[all_message != ""] #去掉空信息""
freq_dat <- as.data.frame(table(all_message))
wordcloud2(freq_dat,size = 2, minRotation = -pi/6, maxRotation = -pi/6,
rotateRatio = 1) #板報詞雲
wordcloud2(freq_dat, size = 1,shape = 'star') #星狀詞雲
wordcloud2(freq_dat, size = 2, fontFamily = "微軟雅黑",
color = "random-light", backgroundColor = "grey") # 海報詞雲
結果輸出為網頁文件,打開網頁后可截圖

什么?博主的gf聊天詞雲呢?怎么是這個?沒錯,博主就是學霸哈哈哈哈!最后祝大家情人節快樂!(不管怎樣,自己都要快樂!)
參考資料:
電腦上導出微信聊天記錄:http://www.cr173.com/html/64463_1.htm
Rwordseq包:http://blog.csdn.net/sinat_26917383/article/details/51056068 ; http://blog.csdn.net/sinat_26917383/article/details/51056068
wordcloud2包:http://blog.csdn.net/sinat_26917383/article/details/51620019
