今天来挖挖你的QQ聊天记录
作者:王亨 ,R语言中文社区专栏作者,跟着菜鸟一起一步步学习R语言,争做R语言高手。
个人公众号:跟着菜鸟一起学R语言(微信ID:learn_R)
今天我们用R语言来处理一下。首先来说一下我们会用到的知识:
(1)正则表达式
(2)中文分词
(3)词频统计
(4)文本可视化
(5)ggplot2绘图
如果你对这几地方有不懂得地方可以在文末根据 推荐阅读 点击查看相关文章。
一.数据处理
首先我们要讲QQ聊天记录导出成txt文件,至于怎么导,我相信大家都会,不会自行百度。导出来之后我们打开文件看看。
首先读入数据
encoding = "UTF-8")
通过head(file.data)查看数据如下,可以看到前5行都是一些没有的信息,我们需要删掉。
现在我们要通过正则表达式提取聊天记录里面的时间,用户,聊天消息。
[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]+:[0-9]+:[0-9]+',
file.data[i]) if(reglog[1]==1) { time[i] <- substr(file.data[i],1,19) user[i] <- substr(file.data[i],21,nchar(file.data[i])) } else { message[i] <- file.data[i] } }
数据框进行合并。
time=time,user=user,message=message[-1]
) head(data)
我们可以看到数据框中有na存在,所以接下来我们要删掉这些行。
现在我们数据处理基本完成。
二. 分析讨论话题
which(is.element(target_words,stop_words)==FALSE)
] #分词结束,现在开始统计词频 p=as.data.frame(table(unlist(seg_word)))%>%
arrange(desc(Freq)) head(p) library(wordcloud2) wordcloud2(p)
为什么会有一个飘字。打开聊天记录我们会发现,有一个叫天天考研的管理员人用这个在刷屏。
那也许就有人会有疑问,那为什么没有过字,那是因为我们的停用词中有“过”,所以在删除停用词的时候就给删了。因此我们需要要把“飘”字删除,然后重新绘制。
arrange(desc(Freq)) wordcloud2(q)
看来图片和表情才是大家聊天的主要方式,怪不得表情包那么火,有人要做表情包可以拉我一块做(偷笑)。
三. 讨论时间点
现在,我们来一起讨论在这个群里大家一般在几点比较活跃。直接给出代码。
#下面这句是提取时分秒 user.time.h<- as.POSIXct(user.time.h,format="%H:%M:%S") hour <- format(user.time.h,"%H") #统计出小时发言 hour <- as.data.frame(table(hour)) library(ggplot2) ggplot(data=hour,aes(x=hour,y=Freq,group=1))+
geom_bar(stat = 'identity')+
geom_line(color="red");#折线图和条形图叠加
在这里需要说明几点,如果上面substr(user.time[i],12,19)写成substr(user.time[i],12,13)在后面会出错的,因为当时间在10点到23点之间没错,但如果是0点到9点,它也会把后面的那个冒号读进去。
结果如下图:
看来大家一般在11点下午2点和晚上8点左右比较活跃。11点左右一般是快要下课了,2点左右上快要上课了,晚上8点我估计是刚刚做到图书馆准备复习吧。这些还是比较大学生的习惯。
四.分析谁是话痨
一般在任何QQ群或者讨论组里面都有几个特别活跃的人家,现在我们就来分析一下。
结果这这样的:
由此可知,测控技术与仪器-六花这个人可真是话痨啊。
注:由于隐私问题,所有QQ号部分都已打码。
微信回复关键字即可学习
回复 R R语言快速入门免费视频
回复 统计 统计方法及其在R中的实现
回复 用户画像 民生银行客户画像搭建与应用
回复 大数据 大数据系列免费视频教程
回复 可视化 利用R语言做数据可视化
回复 数据挖掘 数据挖掘算法原理解释与应用
回复 机器学习 R&Python机器学习入门