前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用R语言将微信记录制作成词云(简洁)--情人节奥义

使用R语言将微信记录制作成词云(简洁)--情人节奥义

作者头像
用户1680321
发布2022-03-10 16:13:42
7410
发布2022-03-10 16:13:42
举报
文章被收录于专栏:yw的数据分析yw的数据分析

一、导出并读入微信聊天记录

参照百度的方法,使用同步助手。安装同步助手--连接手机(安卓苹果均可)--点击“其他功能“--点击微信图标即可进入聊天记录导出界面(非常简单)。

导出数据后直接用read.table读入表格

命令:

代码语言:javascript
复制
 dat <- read.table("message.txt",skip=4,header=F,fill=TRUE)  #skip

跳过前面四行不用的信息;导出时候的信息缺失(语音图片信息等)导致表格不规则,设置fill=TRUE强制读取。聊天记录信息位于第七列。

二、使用Rwordseg包

2.1 使用之前要先安装

代码语言:javascript
复制
        install.packages("rJava") #需要java环境
  install.packages("Rwordseg", repos = "http://R-Forge.R-project.org")

2.2 Rwordseg具有强大的中文分词功能

代码语言:javascript
复制
 segmentCN(strwords)  #strwords 是中文字符串,还可以文本路径,返回值是一个向量。
        > a <- segmentCN("你好R")
        > str(a)
           chr [1:2] "你好" "R"

2.3 Rwordseg还具有导入词库的功能

支持普通词库(txt格式)和搜狗细胞词库( scel 格式),使用方法:

先从网上下载搜狗的细胞词库(scel格式),再安装

代码语言:javascript
复制
    installDict(dictFile,dicttype = c("text", "scel"), load = TRUE)  

例如:

installDict("/home/ywliao/Tmp/日常用语大词库.scel",dicttype = "scel", "richang",load = TRUE)

2.4 自定义词典

代码语言:javascript
复制
       insertWords("捂脸")   #让某词组放入内存 
        deleteWords(c("捂脸"))  #删除某词

三 、使用wordcloud2包

3.1 安装

代码语言:javascript
复制
        install.packages('devtools')  
        devtools::install_github("lchiffon/wordcloud2")

3.2 使用

代码语言:javascript
复制
        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代码如下:

代码语言:javascript
复制
        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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档