今天我们用R语言来处理一下。我们会用到一下技术:、

(1)正则表达式

(2)词频统计

(3)文本可视化

(4)ggplot2绘图

(5)中文分词

一.数据处理

首先我们要讲QQ聊天记录导出成txt文件,至于怎么导,我相信大家都会,不会自行百度。导出来之后我们打开文件看看

首先读入数据

root<-"C:/Users/henry wang/Documents/"
file<-paste(root,"18考研备战群.txt",sep="")
#读取数据
file.data<-scan(file,what = "",sep="\n",encoding = "UTF-8")

  

通过head(file.data)查看数据如下,可以看到前5行都是一些没有的信息,我们需要删掉。

file.data<-file.data[-1:-5]#删除文件开头的说明内容

  

现在我们要通过正则表达式提取聊天记录里面的时间,用户,聊天消息。

数据框进行合并。

#message第一行na,所以不读如第一行
data<- data.frame(time=time,user=user,message=message[-1])
head(data)

  

我们可以看到数据框中有na存在,所以接下来我们要删掉这些行。

for(i in 1:dim(data)[1])
if(is.na(data[i,1]))
{
if(is.na(data[i,2]))
{
if(is.na(data[i,3]))
{
data<- data[-i,]
}
}
}
head(data)#查看删掉NA之后的数据

  

现在我们数据处理基本完成。

二. 分析讨论话题

library(rJava)
library(Rwordseg)
library(dplyr)
text<-as.character(data$message)
text<-enc2utf8(text) #转utf-8
text<-text[Encoding(text)!='unknown']#删除无法识别的字符
#下面这几个词在分词是会被分开
insertWords(c("何凯文","泪奔","卖萌","考研"),save=TRUE)
word.message<-segmentCN(text)#分词
#删除停用词
stop_words=readLines('停词.txt')
target_words <- unlist(word.message)
seg_word=target_words[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)

  

为什么会有一个飘字。打开聊天记录我们会发现,有一个叫天天考研的管理员人用这个在刷屏

那也许就有人会有疑问,那为什么没有过字,那是因为我们的停用词中有“过”,所以在删除停用词的时候就给删了。因此我们需要要把“飘”字删除,然后重新绘制。

seg_word=gsub(pattern="[飘]","",seg_word);
q=as.data.frame(table(unlist(seg_word)))%>% arrange(desc(Freq))
wordcloud2(q)

看来图片和表情才是大家聊天的主要方式,怪不得表情包那么火。

三. .讨论时间点

现在,我们来一起讨论在这个群里大家一般在几点比较活跃。直接给出代码。

user.time<-data$time
user.time<-as.character(user.time)
user.time.h<-c()
for(i in 1:length(user.time))
{
user.time.h[i]<-substr(user.time[i],12,19)
}
#如果上面substr(user.time[i],12,19)写成substr(user.time[i],12,13)在
#后面会出错的,因为当时间在10点到23点之间没错,但如果是0点到9点,
#它也会把后面的那个冒号读进去。
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");#折线图和条形图叠加

  

结果如下图:

看来大家一般在11点下午2点和晚上8点左右比较活跃。11点左右一般是快要下课了。2点左右上快要上课了。晚上8点我估计是刚刚做到图书馆准备复习吧。这些还是比较大学生的习惯。

三.分析谁是话痨

一般在任何QQ群或者讨论组里面都有几个特别活跃的人家,现在我们就来分析一下。

#统计发言频率
user.n<-as.data.frame(table(user))
user.n.20<-user.n[order(user.n[,2],decreasing=T),]
user.n.20<-user.n.20[1:20,]
ggplot(data=user.n.20,aes(x=user,y=Freq))+
geom_bar(stat='identity')+coord_flip()
#coord_flip()的作用就是讲条形图这些这样90度的旋转。

  

结果这这样的:

由此可知,测控技术与仪器-六花这个人可真是话痨啊。

相关文章推荐:

(1)R语言如何画个性化词云图 地址:http://blog.csdn.NET/wzgl__wh/article/details/52420747

(2)快速学习ggplot2 地址:http://blog.csdn.Net/wzgl__wh/article/details/51901093

(3)使用R语言进行中文分词  地址:http://blog.csdn.net/wzgl__wh/article/details/52420747

(4)R语言之正则表达式 地址:http://blog.csdn.net/wzgl__wh/article/details/52938475

注:

(1)由于隐私问题,所有QQ号部分都已打码。

(2)本文会发布在csdn博客与作者微信公众号《跟着菜鸟一下学R语言》

(3)转载请注明原文链接:http://blog.csdn.net/wzgl__wh/article/details/69055369

QQ聊天记录分析的更多相关文章

  1. 文本分析实例---QQ聊天记录分析

    对QQ聊天记录进行分析,由于每天产生的聊天记录比較多,所以选取的是从2月份整月的聊天记录数据.分析要产生的结果有三个,聊天记录中发消息的人前top15.统计24小时时间段那个时间段发贴人最多,还有对消 ...

  2. 如何找回QQ聊天记录、语音、图片?

    多图长图预警,本教程适用于 安卓手机 认真仔细看完答案的成功几率翻倍哟! 请各位认真看答案!求您了~ 2020年/4/4日 更新 人民不会忘记,祖国不会忘记,我们不会忘记,先烈不朽. 调整答案顺序,使 ...

  3. 用python做些有意思的事——分析QQ聊天记录——私人订制

    之前,写了这篇文章,用python提取全部群成员的发言时间,并简单做了下分析.先补充一下,针对特定单个群成员(这里以  小小白   为例)消息记录的获取. 代码比较简单,主要是正则表达式的书写.(附: ...

  4. 用python做些有意思的事——分析QQ聊天记录

    ####################################### 已更新续集,戳这里. ######################################## 是这样的,有位学 ...

  5. 把QQ聊天记录插入数据库中

    最近在做毕设,其中一个环节是分析qq聊天记录,在分析之前需要先把qq聊天记录导出,然后存入数据库中,qq聊天记录导出后是文本文档,导出方式: 1.登录qq后,点击任意一个好友,查看与他的聊天记录,点击 ...

  6. 重装系统后QQ聊天记录恢复方法

    重装系统后QQ聊天记录恢复方法 近日又一次安装了系统,又一次安装了腾讯的.TM,TM也是安装在之前的文件夹底下,可是聊天记录和之前的自己定义表情都不见了,看来没有自己主动恢复回来. 我这里另一个特殊的 ...

  7. Android解析qq聊天记录表情

    偶然在一个需求中需要解析qq聊天记录表情,表情的格式是以/开始,比如:你好啊?/微笑,在网上找了半天,也没能找到一个比较合适的,所以准备自己实现一下,首先要将表情图片和表情字符对上号,我想了几种解决方 ...

  8. QQ聊天记录备份助手 v1.0——搜索、备份、恢复QQ聊天记录文件,重装系统必备

    项目地址 https://github.com/guoyaohua/QQBackUp 开发环境 Netbean JAVA 功能描述 自动搜索硬盘中的QQ聊天记录文件 可选择的备份QQ数据记录 还原QQ ...

  9. QQ聊天记录快速迁移

    QQ聊天记录快速迁移 在工作中大家经常会用到QQ来沟通,但是很多时候在其它设备上登录QQ就无法查看到之前的聊天记录和图片,这是因为电脑上的QQ聊天记录一般都是保存在电脑本地硬盘里,所以我们在换设备登录 ...

随机推荐

  1. Apache和Tomcat 配置负载均衡(mod-proxy方式)-无session共享、无粘性session

    转:https://blog.csdn.net/wangjunjun2008/article/details/38268483 mod-proxy方式实现负载均衡是利用了Apache 2.x版本自带的 ...

  2. 体验Code::Blocks下的Windows GUI编程(32 bit and 64 bit)

    0. 前言 不知道为什么,几乎所有的C++编程教程都是从命令行版(控制台应用程序)的Hello World开始的.然而,对于现在的年轻人来说,从小就用鼠标点击窗口或图标操作电脑,对于那个神秘黑色的窗口 ...

  3. WordPress新用户注册时提示“您的密码重设链接无效”

    在使用Wordpress密码找回功能及新用户注册邮件中的重置密码链接时,Wordpress提示“您的密码重设链接无效,请在下方请求新链接.”.“该key似乎无效”.“invalid key”. 这个其 ...

  4. 初级Python

    [toc] 一.数据类型 1.1基本数据类型 1.1.1数字类型 1.整数类型 十进制:1010,-219 二进制:以0b或0B开头:0b010,-0B101 八进制,以0o或0O开头:0o123,- ...

  5. Java基础学习笔记(五) - 常用的API

    API介绍 概念:API 即应用编程程序接口.Java API是JDK中提供给我们使用的类说明文档,这些类将底层的代码实现封装.无需关心这些类是如何实现,只需要学习如何使用. 使用:通过API找到需要 ...

  6. 03-Django基础概念和MVT架构

    一.Django基础 掌握Django的 MVT 架构的使用 掌握Git管理源代码 主要内容 了解Django的 MVT 架构的使用流程 使用Django完成案例 : 书籍信息管理 MVC介绍 MVC ...

  7. 初识Django,了解一下大概流程

    学习Django一个礼拜了,对其有了一个大概的了解,自己画了一个简单的图,虽然有点丑,但是基本上已经把自己所想已经表达 写完这篇随笔之后发现自己逻辑表述的有点不太清晰,有点乱,哪里不对,希望各位指正 ...

  8. Typesetting HDU - 6107

    Yellowstar is writing an article that contains N words and 1 picture, and the i-th word contains aia ...

  9. 点云之OpenMesh:error C1083:无法打开包括文件:“OpenMesh/Core/IO/MeshIO.hh”:No such file or directory

    1.这是一个错误引发的惨案:错误提示如下: 在进行点云程序调试时,出现错误:[error C1083:无法打开包括文件:“OpenMesh/Core/IO/MeshIO.hh”:No such fil ...

  10. vue中图片放大镜功能

    仿淘宝详情页图片鼠标移过去可对图片放大显示在右侧 效果图如下图,此功能支持PC端与移动端 接下来进入代码实现环节: 先准备两张图片,一张小图片叫 '土味.jpg',大小160*91:一张大图片叫 ' ...