R语言编程实现批量化处理非结构化的QQ聊天记录(优化版)

   昨日天朗气清,惠风和畅,突然跟群友聊天,说到QQ群聊天记录的事,正好手边有时间,立刻导出QQ的群消息聊天记录,打算分析一下,然并卵……腾讯对QQ聊天记录不知道是按啥规则保存,反正就是标准的非格式化数据,根本不能直接分析,在前期还得做很多处理,那么问题来了,第一:怎么弄成结构化的数据呢?这句就是废话。好吧。的确是。。。第二:那就这么弄吧?那就往下看吧~


主要思路分析

下面就是主要思路:

  首先观察数据,这里装装老中医看病的样子,也就是老中医说的,我瞅啊瞅,瞅半天,发现了一些规律。如图说明:


这里写图片描述

  如上下图比对:我会发现时间信息记录里面包含了时间,昵称,还有圆括号里面的QQ号,但是群备注的昵称是可以换的,取决于你开心就好,那么我就不能只单单提取昵称,因为在不同的时间段里它有可能是不一样的,所以我也应该提取()或<>中的数据,这个数据是唯一且不变的,即代表该QQ用户。


这里写图片描述
  

从上面两张图,我标红的地方给大家说下我发现的规律:
   QQ聊天记录从第8行开始,就会出现:空行->时间信息、QQ昵称或群备注名或无->聊天记录->空行……如此循环下去,即是两空行之间为一次聊天记录,所以刚开始我以空行为线索下手处理数据,后来发现这种处理方式有很大弊端,即如下图所示:
  


这里写图片描述

  我假如以空行为线索来区别每次聊天记录的话,有时候我们聊代码,或者某些人的聊天习惯总是会留空行,这时候就会出现原本是一条聊天记录会被分为2条或多条聊天记录,所以以空行来判断是否为一条聊天记录的方法是不可行的……
  没事的,一切都会好起来的……我在这个时候总是安慰自己说,哈哈,突然我又看到了一个规律。即用每次聊天记录的时间来匹配,如下图,即为一次记录,那么空行对于我来说,就没有太大用了,所以将所有空行去掉,免得又出啥幺蛾子了…..
  

  
这里写图片描述

  该方法存在的弊端就是假如某行的聊天记录正好出现这种时间格式且在字段首端,该方法也会匹配进去,即下表所示情况,但是这种聊天消息数据出现的概率极低,测试了几个不同群的聊天记录,均未遇到,如遇到,请告知一声,在想解决办法进行改进……
  

记录类别 记录情景
聊天记录时间信息 2016-09-23 14:42:33 magic-xx-xx(12341414)
聊天消息信息 2016-10-23 12:31:12 我要去北京玩

批量化处理QQ聊天记录

  基于上面的思路分析之后,我即可编写R程序,那么还有一个问题是 :你问题怎么这么多啊,唉……就是我既然处理QQ聊天记录的非结构化数据,我当然希望批量处理一堆从QQ里面导出来的聊天记录,怎么做到批量处理呢?基于我上面的观察规律和总结,我发现了的确是可以批量的,因为全部的规则都是如此(至少我现在处理到的是这样的规律),那么马上上代码吧….


编码问题

  怎么从QQ里面导出聊天记录请自行百度,请保存为txt文本格式,那么这里有一个编码问题,这个QQ聊天记录的编码问题我现在也没搞明白怎么回事,但是我新建一个txt文件,然后将导入下来的信息复制粘贴进行保存之后,出现这么一个提示。
  

  
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值