有这个想法是因为看到了itchat包,做了微信签名词云,微信好友热图,然后就想着那么QQ不是也可以做吗,像QQ群成员地图热图腾讯已经有了,好吧我就把QQ聊天记录做一下,主要也是导出.txt很方便
只是有以下问题:
1.有很多垃圾字符,字符串清洗方案可以再完善;
2.大的群聊天记录内容是否需要多线程来处理大文件。。。。。
3.QQ有类似itchat的包或接口吗嘿嘿嘿

import re
import os
import jieba
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
import PIL.Image as Image
import matplotlib.pyplot as plt# 导出聊天记录.txt
file_path = r'C:\Users\XPS-15\PycharmProjects\PythonProject\owners_group.txt'
with open(file_path, 'r', encoding='utf-8') as fp:# 读取到列表,方便操作lines = fp.readlines()# 去掉群说明(分组,对象)
lines = lines[8:]# 提取聊天内容文本到长字符串
lines_cp = []
for line in lines:# 去掉聊天标志项(日期,用户名,QQ号)if line.startswith('2018'):continue# 去掉聊天内容项中的非文本项(空行,链接,发表动态,分享图片,查看按钮,撤回消息,手机号。。。。)if line.startswith('http') \or line == '' \or '发表动态' in line or '分享图片' in line or '查看' in line \or '@' in line or '撤回了一条' in line\or line.startswith('1') and len(line) == 11:continueelse:lines_cp.append(line)
raw_text = ''.join(lines_cp)# 去掉图片,表情,空行,以及一系列表情元素:
# 方案一:使用表情元素列表,但是很可能会漏掉
replace_ls = ['[图片]', '[表情]', '\n', '[呲牙]', '[感谢]', '[愉快]', '[撇嘴]', '[切]', '[色色]','[太美了]', '[好美]', '[口水]', '[发呆]', '[傻了]', '[得意]', '[好酷]', '[帅呆]','[牛逼]', '[流泪]', '[伤心]', '[桑心]', '[闭嘴]', '[不说了]', '[说错话了]', '[抱拳]','[哭了]', '[哭哭]', '[大哭]', '[哭死]', '[尴尬]', '[冷汗]', '[汗死]', '[生气]','[发怒]', '[气死了]', '[不理你了]', '[调皮]', '[无聊]', '[^_-]', '[捣蛋]', '[古灵精怪]','[淘气]', '[呲牙]', '[哈哈]', '[^_^]', '[呵呵]', '[呵:)]', '[难过]', '[伤了]','[很伤]', '[想吐]', '[要吐]', '[吐了]', '[惊恐]', '[惊吓]', '[害怕]', '[怕怕]','[惊呆啦]', '[吓死了]', '[好吓人]', '[流汗]', '[真汗]', '[好汗]', '[- -!]', '[郁闷]','[无语]', '[好紧张]', '[偷笑]', '[嘻嘻]', '[;)]', '[暗喜]', '[窃喜]', '[可爱]', '[好Q]','[好萌]', '[卡哇伊]', '[鄙视]', '[飘过]', '[傲慢]', '[随便]', '[弱爆]', '[好饿]','[饿了]', '[有吃的么]', '[打盹]', '[困了]', '[呼呼]', '[睡了]', '[好困]', '[打个盹]','[顶]', '[好棒]', '[yeah]', '[去死吧]', '[去你的]', '[白痴]', '[尼玛]', '[抓狂]','[烦死了]', '[恼火]', '[头晕]', '[好晕]', '[晕了]', '[可怜]', '[亲一个]', '[啵一个]','[飞吻]', '[思考]', '[让我想想]', '[想一下]', '[考虑一下]'
]# 方案二:正则提取待替换集合(表情元素等)
# 匹配,提取所有表情元素
face = re.compile('[[]\w+[]]')
faces = face.findall(raw_text)
# 将表情元素转成集合
replace_set = {'[图片]', '[表情]', '\n'}
replace_set = replace_set | set(faces)
# print(replace_set)# 如果待替换集合非空,则进行替换
if replace_set:for i in replace_set:raw_text = raw_text.replace(i, '')# print(raw_text)
text = jieba.cut(raw_text, cut_all=True)
jb_text = ' '.join(text)# 提取中文,最终没用到,因为国内大家都是用中文。。。。
# chinese = re.compile('^[\u4E00-\u9FFF]+$')# 制作词云
group_cloud = WordCloud(background_color='white',max_words=2000,max_font_size=40,random_state=42,font_path=r'C:\Windows\Fonts\ARIALUNI.TTF',).generate(jb_text)
plt.imshow(group_cloud)
plt.axis('off')
plt.show()dr = os.path.dirname(__file__)
coloring = np.array(Image.open(os.path.join(dr, 'gropu_pic.jpg')))
group_cloud = WordCloud(background_color='white',max_words=2000,mask=coloring,scale=1.5,max_font_size=50,min_font_size=10,font_step=3,random_state=42,font_path=r'C:\Windows\Fonts\ARIALUNI.TTF',).generate(jb_text)image_colors = ImageColorGenerator(coloring)
plt.imshow(group_cloud.recolor(color_func=image_colors))
plt.imshow(group_cloud)
plt.axis('off')
plt.show()
group_cloud.to_file('group_cloud.png')

以下是清洗后的词云

人工数据清洗机。。。。。。

replace_set.add('哈')
replace_set.add('你们')
replace_set.add('什么')
replace_set.add('不是')
replace_set.add('可以')
replace_set.add('这个')
replace_set.add('就是')
replace_set.add('没有')
replace_set.add('现在')
replace_set.add('知道')
replace_set.add('开始')
replace_set.add('时候')
replace_set.add('这么')
replace_set.add('今天')
replace_set.add('还是')
replace_set.add('现在')
replace_set.add('我们')
replace_set.add('一个')
replace_set.add('真的')
replace_set.add('感觉')
replace_set.add('不会')
replace_set.add('怎么')
replace_set.add('已经')
replace_set.add('还行')
replace_set.add('然后')
replace_set.add('看到')
replace_set.add('这样')
replace_set.add('那么')
replace_set.add('自己')
replace_set.add('还有')
replace_set.add('有人')
replace_set.add('有点')
replace_set.add('但是')
replace_set.add('那个')
replace_set.add('所以')
replace_set.add('只有')
replace_set.add('出来')
replace_set.add('不要')
replace_set.add('好像')
replace_set.add('反正')
replace_set.add('不能')
replace_set.add('可能')replace_set.add('觉得')
replace_set.add('之前')
replace_set.add('因为')
replace_set.add('哪里')
replace_set.add('不过')
replace_set.add('应该')
replace_set.add('没人')
replace_set.add('这种')replace_set.add('的话')
replace_set.add('这里')
replace_set.add('不用')
replace_set.add('一样')
replace_set.add('好多')
replace_set.add('昨天')replace_set.add('时间')
replace_set.add('估计')
replace_set.add('记得')
replace_set.add('地方')
replace_set.add('分享')
replace_set.add('文件')
replace_set.add('刚刚')replace_set.add('明天')
replace_set.add('他们')
replace_set.add('直接')
replace_set.add('发现')
replace_set.add('只能')
replace_set.add('只是')
replace_set.add('肯定')
replace_set.add('还要')replace_set.add('多少')
replace_set.add('表情')
replace_set.add('很多')
replace_set.add('哪个')
replace_set.add('以前')
replace_set.add('没事')
replace_set.add('不多')
replace_set.add('以后')
replace_set.add('那种')
replace_set.add('不行')
replace_set.add('大家')
replace_set.add('不了')
replace_set.add('别人')replace_set.add('东西')
replace_set.add('不好')
replace_set.add('问题')
replace_set.add('一直')
replace_set.add('不到')
replace_set.add('以为')
replace_set.add('说话')
replace_set.add('别算了')
replace_set.add('居然')
replace_set.add('毕竟')replace_set.add('看看')
replace_set.add('意思')
replace_set.add('其实')
replace_set.add('虽然')
replace_set.add('还好')
replace_set.add('一下')
replace_set.add('突然')
replace_set.add('小时')replace_set.add('不想')
replace_set.add('原来')
replace_set.add('不然')
replace_set.add('下午')
replace_set.add('可是')
replace_set.add('准备')
replace_set.add('人家')
replace_set.add('只要')replace_set.add('最后')
replace_set.add('基本')
replace_set.add('终于')
replace_set.add('几天')
replace_set.add('一天')
replace_set.add('一年')
replace_set.add('本来')replace_set.add('成为')
replace_set.add('当然')
replace_set.add('出去')
replace_set.add('竟然')
replace_set.add('晚上')
replace_set.add('两个')replace_set.add('上好')
replace_set.add('发红')
replace_set.add('比较')
replace_set.add('不在')
replace_set.add('除了')
replace_set.add('回来')replace_set.add('进来')
replace_set.add('正常')
replace_set.add('今晚')
replace_set.add('真是')
replace_set.add('其他')replace_set.add('几个')
replace_set.add('最近')
replace_set.add('果然')replace_set.add('一般')
replace_set.add('要是')
replace_set.add('加入')
replace_set.add('刚才')
replace_set.add('找到')replace_set.add('这边')
replace_set.add('算了')
replace_set.add('而已')
replace_set.add('上次')replace_set.add('看过')
replace_set.add('那些')
replace_set.add('就行了')
replace_set.add('难道')
replace_set.add('结果')
replace_set.add('为了')replace_set.add('看见')
replace_set.add('为啥')
replace_set.add('进去')
replace_set.add('里面')
replace_set.add('听说')
replace_set.add('太多')
replace_set.add('看完')replace_set.add('完事')
replace_set.add('或者')
replace_set.add('就要')
replace_set.add('如果')
replace_set.add('不如')
replace_set.add('没看')replace_set.add('不来')
replace_set.add('每次')
replace_set.add('之后')
replace_set.add('没了')
replace_set.add('随便')replace_set.add('想要')
replace_set.add('表示')
replace_set.add('那边')
replace_set.add('大概')replace_set.add('对了')
replace_set.add('一句')
replace_set.add('我会')
replace_set.add('马上')
replace_set.add('别说')
replace_set.add('高速')
replace_set.add('各位')replace_set.add('告诉')
replace_set.add('家里')
replace_set.add('下载')
replace_set.add('后面')
replace_set.add('明年')
replace_set.add('不敢')
replace_set.add('使用')
replace_set.add('忘记')
replace_set.add('想去')
replace_set.add('完全')
replace_set.add('再见')
replace_set.add('新版')
replace_set.add('早上')
replace_set.add('可惜')
replace_set.add('这次')
replace_set.add('难受')
replace_set.add('继续')
replace_set.add('出现')
replace_set.add('差点')
replace_set.add('个人')
replace_set.add('认识')replace_set.add('看着')
replace_set.add('简单')
replace_set.add('过来')
replace_set.add('这些')
replace_set.add('而且')
replace_set.add('查收')
replace_set.add('不了')
replace_set.add('起来')
replace_set.add('需要')
replace_set.add('后来')
replace_set.add('一些')
replace_set.add('事情')
replace_set.add('无所')
replace_set.add('无所谓')
replace_set.add('不对')
replace_set.add('想到')
replace_set.add('了了')
replace_set.add('你好')
replace_set.add('过分')
replace_set.add('最好')
replace_set.add('办法')
replace_set.add('没办')
replace_set.add('好好')
replace_set.add('一会')
replace_set.add('一次')
replace_set.add('当时')
replace_set.add('下来')
replace_set.add('今年')
replace_set.add('看来')
replace_set.add('我家')
replace_set.add('别的')
replace_set.add('最新')
replace_set.add('推荐')
replace_set.add('不错')
replace_set.add('不算')
replace_set.add('明明')
replace_set.add('试试')
replace_set.add('一群')replace_set.add('那里')
replace_set.add('可怕')
replace_set.add('看不懂')
replace_set.add('下次')
replace_set.add('群友')
replace_set.add('群主')
replace_set.add('特别')
replace_set.add('没用')
replace_set.add('中午')
replace_set.add('了解')
replace_set.add('斜眼')
replace_set.add('禁言')
replace_set.add('分钟')
replace_set.add('管理')
replace_set.add('管理员')
replace_set.add('头像')
replace_set.add('关注')
replace_set.add('成员')
replace_set.add('一点')
replace_set.add('啊')
replace_set.add(' ')
replace_set.add('干嘛')
replace_set.add('考虑')
replace_set.add('回去')
replace_set.add('到底')
replace_set.add('听到')
replace_set.add('没错')
replace_set.add('接收')
replace_set.add('打扰')
replace_set.add('不存')
replace_set.add('星期')
replace_set.add('上去')
replace_set.add('情况')
replace_set.add('三个')
replace_set.add('过去')
replace_set.add('聊天')
replace_set.add('链接')

【代码】QQ群最近聊天记录做成词云相关推荐

  1. 用Python采集《雪中悍刀行》弹幕做成词云实例

    大家好,本篇文章主要讲的是用Python采集<雪中悍刀行>弹幕做成词云实例,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下.编程学习资料点击免费领取 目录 前言 知识点介绍 环境介 ...

  2. python豆瓣爬虫爬取评论做成词云

    前言 前一段时间学校有个project,做一个电影购票系统,当时就用springboot做了系统,用python抓了一些电影的基本信息.后来发现如果把评论做成词云那展示起来不是很酷炫么.于是乎把这个过 ...

  3. 用Python爬取B站弹幕并做成词云

    用Python爬取B站弹幕并做成词云 一.获取视频的cid号 1.进入想爬的视频,打开浏览器设置里的"开发者工具": 进入NetWork后等待requests刷出,数据够了后可随意 ...

  4. 爬取钉钉在B站卑微道歉视频弹幕,做成词云

    爬取钉钉在B站卑微道歉视频弹幕,做成词云|钉~ 听这美妙的声音 先看用户老爷们给出得评价 B弹幕爬取的方法 打开钉钉下跪视频 B站链接 然后进入控制台如图查看,打开控制台刷新下页面. 你就会在控制台看 ...

  5. 微信聊天记录的词云制作

    微信聊天记录的词云制作 需求 导出微信聊天记录 提取文字聊天记录 生成词云 需求 想把跟朋友的微信聊天记录做个词云 导出微信聊天记录 我的手机是iphone,用旧版的itunes备份手机全部信息 it ...

  6. 几行代码爬取某东商品评论并写入数据库做成词云

    目录 闲言 成果 ​填坑 网址详解 代码 数据库:data_sql.py 源码 乱语 闲言 这几天忙的要老命啊,天天上网课,5,6个平台手机电脑电视全开,一整天盯着显示屏,我觉得迟早要崩溃,不仅如此, ...

  7. 情人节礼物------用她的照片和我们的聊天记录生成词云~

    用到的知识点 python读写文件 python正则表达式过滤无用信息 jieba分词与自定义字典 停用词筛选.统计词频 调用wordcloud绘制词云 第一步 从电脑版蛐蛐导出聊天记录.(手机一般不 ...

  8. python词云代码简单_Python 简单实现标签词云

    基于Python的词云生成类库,很好用,而且功能强大.博主个人比较推荐 github:https://github.com/amueller/word_cloud 官方地址:https://amuel ...

  9. python英文词云代码_使用python实现个性化词云的方法

    先上图片 词云图 需要模板 pip install jieba pip install wordcloud 还需要安装另外两个东西这两个我也不太懂借鉴百度写上去的 pip install scipy ...

最新文章

  1. Python使用matplotlib进行3D可视化分析:3d柱状图、3d直方图、3d线框图、3d曲面图、3d翼面图(莫比乌斯环)
  2. 绿色番薯 GHOST XP SP3 新春贺岁版
  3. Chrome浏览器扩展开发系列之五:Page Action类型的Chrome浏览器扩展
  4. 滚动后mouseleave失效_发动机上的三点接触球轴承失效案例
  5. 记一次oracle数据库连不上处理
  6. 【研讨课】超临界水气化制氢技术 2018-06-11
  7. python操作dom_Python Dom 的介绍和使用day1
  8. Taro+react开发(76):taro安装
  9. java struts1_struts1.x
  10. Spring Boot 案例:连接后台数据库实现用户登录
  11. 软工小学期实践PART ONE
  12. [2018.03.14 T1] 矩阵(matrix)
  13. sl4a库_SL4A、QPython学习笔记(2)
  14. 【转载】快速入门(完整):Python实例100个(基于最新Python3.7版本)
  15. Lanbda表达式 java8新特性
  16. 链公公 x 凰药师 x 元天益生:供应链金融支持健康与科技农业 |Chain++
  17. C. Candy Store(数学)
  18. oracle存储过程循环输入数据,oracle 存储过程循环插入数据
  19. 美国国土安全部预警:放一段声音,你的手机就可能被黑了
  20. 9个设计师都在用的图片素材网站,风格齐全,高清免费

热门文章

  1. 阿里云服务器华北1、华北2、华北3、华北4、华北5 是哪个城市
  2. MyEclipse启动报错The configuration area at is not writable
  3. 流程图GoJS用于HTML图表的JavaScript库
  4. 制造业税务成本100问-06(转载)
  5. 2022年湖北恩施安全员ABC报考条件是什么?甘建二
  6. 安卓开发下载图片保存到手机后图片没在相册看到的问题
  7. 浙江大学录取人数计算机学院,浙江大学计算机学院硕士研究生录取生源统计
  8. org.junit.runners.model.InvalidTestClassError: Invalid test class ‘com.zhj.esdemo.MysqlTests‘: 1.
  9. 什么是星空房?它有哪些特色?
  10. 职场办公居然不会打印?纸型、单双面及PPT打印设置,干货教程!