用QQ聊天记录生成一个词云
Posted Rogn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用QQ聊天记录生成一个词云相关的知识,希望对你有一定的参考价值。
QQ的聊天记录可以通过消息管理器,选中联系人,右键导出为 .txt
格式。由于是中文,需要分词,本文的分词工具采用的是 jieba
分词。
不知道这个“福”能不能扫出来。
假设你已经导出与某人的聊天记录,接下来需要先过滤再分词生成词云。
1. 过滤掉图片和表情,以及聊天记录的时间和qq名称
newtext = [] for word in open(\'lr.txt\', \'r\', encoding=\'utf-8\'): tmp = word[0:4] if (tmp == "2019" or tmp == "2020"or tmp == "2017" or tmp == "我"): # 过滤掉聊天记录的时间和qq名称 continue tmp = word[0:2] if (tmp[0] == \'[\' or tmp[0] == \'/\'or tmp[0] == \'@\'): # 过滤掉图片和表情,例如[图片],/滑稽 continue newtext.append(word) # 将过滤后的文本存到lr2.txt中 with open(\'lr2.txt\', \'w\', encoding=\'utf-8\') as f: for i in newtext: f.write(i)
当然,可以用正则过滤(但是正则我不怎么熟)
2. 利用jieba分词,wordcloud生成词云。
在此之前需要准备一张背景图和一份中文字体,这是我随便找的一个字体 STFangSong.ttf。
import jieba from wordcloud import WordCloud, ImageColorGenerator import matplotlib.pyplot as plt import numpy as np import PIL.Image as Image def jieba_cloud(file_name): with open(file_name,\'r\',encoding=\'utf8\') as f: word_list = jieba.cut(f.read()) result = " ".join(word_list) #分词用空格隔开 bg_pic = np.array(Image.open("福.jpg")) #导入词云背景 #必须加中文字体,否则格式错误 wordcloud = WordCloud(mask=bg_pic, background_color=\'white\', scale=1.5, font_path=\'./STFangSong.ttf\', width=2000,height=1200,font_step=4,).generate(result) wordcloud.to_file(file_name.split(\'.\')[0] + \'.png\') #未上色版 image_colors = ImageColorGenerator(bg_pic) wordcloud.recolor(color_func=image_colors) wordcloud.to_file(file_name.split(\'.\')[0] + \'_color\' + \'.png\') #上色版 if __name__ == "__main__": file_name = \'lr2.txt\' # 使用前面过滤好的文本 jieba_cloud(file_name)
参考链接:
2. https://www.jianshu.com/p/542fbff4ace4
3. https://blog.csdn.net/qq_40855366/article/details/81177213
以上是关于用QQ聊天记录生成一个词云的主要内容,如果未能解决你的问题,请参考以下文章