< 制作词云 序 >—准备(QQ聊天)素材
1. 词云图
相信大家在生活中也看过下面这样的图形吧?想必对于词云图也不是很陌生吧?词云图,顾名思义,就是一些具有关键意义的词,组成一些具有代表意义的形状,并按照重要程度、出现频率等进行排列组合得到一张精炼浓缩的信息图。是不是感觉十分高大上?其实,我们自己也可以做属于我们自己的词云图。
百度搜索词云图02
2. 准备素材
巧妇难为无米之炊,我们需要准备一下材料去烹饪我们这道视觉盛宴:
- 主材料:文本
- 辅料:图片
- 工具:词云制作工具(WordArt 等) OR 编程语言(python 等)
3. 准备文本
这一章里面,我主要介绍的是如何把QQ聊天记录导出,并把整理成关键词,为后续可视化做准备的。
-
导出聊天记录
导出qq聊天记录.png
首先找到qq的消息管理器(小喇叭),然后找到你想要得到的聊天记录的那位,右键,导出消息记录就可以了。【注意】选择下拉菜单,将聊天记录导出为(* .txt)格式或者是(* .mht)格式。
-
处理文本
在得到文本素材以后,我们需要将这些文本进行分割,得到一个个词语,经过过滤得到关键词。这里,我们选用的是 jieba 结巴中文分词。
jieba 中文分词的 Github 项目地址:https://github.com/fxsjy/jieba- 通过
pip
安装jieba:pip install jieba
- 通过 jieba 处理文本:
import jieba
import jieba.analyse
import re # 正则表达式清洗数据
# 打开并读取文档
file=open("wxb.txt",'r',encoding='UTF-8')
obj=file.read()
file.close()
- 清洗聊天记录
这里主要利用re 模块进行清洗,大家可以根据自己的聊天记录形式进行自定义的处理。
re 模块介绍:http://www.runoob.com/python/python-reg-expressions.html
import re
# 使用re.sub()函数进行清洗
# 主要清洗对象为"=="、"YYYY-MM-DD"、"HH:MM:SS"、"QQ昵称"、"[图片]"
# 下面以时间数据处理为例进行简单的演示,大家可以根据自己的需要,根据规则进行修改
t_rm1= re.sub("\d\d:\d\d:\d\d",'',obj)
- 分词
# 将特定的词加入词典
jieba.add_word("不安分的小王")
# 分词
word_list=jieba.cut(obj,cut_all=Flase,HMM=True)
word_split="\".join(word_list)
word_split
便是你最终的分词结果- 提取关键词
光得到分词结果我们还不能很好地展现文本内容,这一步,我们需要分词后的统计,提取关键词。为后面可视化做准备。
# 提取关键词
rank_K=300 #提取前300的关键词
# 返回带有权重的词语的list
tags = jieba.analyse.extract_tags(wrd_split, topK=rank_K, withWeight=True, allowPOS=())
word_split="\".join(word_list)
# 如果不想带权重的话,可以设置 withWeight=False
- 保存最终关键词和结果
with open("keywords.txt",'w',encoding='UTF-8') as f: for i in range(0,rank_K): f.write(str(tags[i])+'\n')
-
保存最终关键词和结果
关键词提取结果(部分)
- 清洗聊天记录
- 通过
到此,介绍完了文本准备的相关工作。后面会继续介绍如何制作词云。