python用jieba模块对QQ聊天记录分词统计,可视化和词云生成

《关于我和我的怨种朋友一年只知道哈哈哈,呜呜呜,救命,这个那个这件事》

就有天和朋友聊天,她突然说了句,我以后再也不做搞笑女了,我说咋啦,她说她朋友说她天天喊救命,她害怕有一天真遇上啥事了喊救命,你们来句哈哈哈笑死。

于是我就想用python来统计一下我和我朋友这一年来最喜欢说的高频词汇

自己先导出你们的聊天记录哦

代码

# @Time:2022/2/1318:53
# @Author:中意灬
# @File:qq消息记录分析.py
# @ps:tutu qqnum:2117472285
import csv
import jieba
import re
from wordcloud import WordCloud
from pyecharts import options as opts
import jieba.analyse
from pyecharts.charts import Bar
from matplotlib import font_manager
import matplotlib.pyplot as plt
s=0
y=0
word_list = []
with open('tutu.txt','r',encoding='utf-8')as f:
    data=f.readlines()
    # print(data)
    for line in data:
        item=re.findall('.*[^\x00-\xff]',line)#筛选出中文,返回一个列表
        if item==[]:#空列表的不要
            pass
        elif item[0][0]=='2'and item[0][1]=='0':#可以自己设置,这是不要消息中像这样的“涂涂 2022/2/17 18:32:04”内容
            pass
        else:
            x=len(str(item[0]))#为了统计字数(可能不是很准确,但是能大概统计)
            s+=x
            y+=1#统计你们聊天的条数(也是大概统计)
            tag=jieba.analyse.extract_tags(str(item[0]))#用jieba模块进行分词
            #将分出来的词添加到一个列表中
            for i in tag:
                word_list.append(i)
word_dict={}#准备一个字典(散列表)来统计词语出现次数
for i in word_list:
        if i not in word_dict:  # 统计数量
            word_dict[i] = 1
        else:
            word_dict[i] += 1

list=[]#准备一个列表,来保存词语和它出现的次数
#保存统计出来的结果
with open('data.csv','w',encoding='utf-8',newline='')as f :
    writer=csv.writer(f)
    for i in word_dict.keys():
        writer.writerow([i,word_dict[i]])
        list.append([i,word_dict[i]])

list.sort(key=lambda x:x[1],reverse=True)#排序
list1=[]#保存前二十的出现的词语
list2=[]#保存前二十出现词语的次数
for i in list[:20]:
    list1.append(i[0])
    list2.append(i[1])
#绘图
bar= (
    Bar(init_opts=opts.InitOpts(width="1000px"))
        .add_xaxis(list1)#x轴数据
        .add_yaxis('次数',list2)#y轴数据
        .set_global_opts(title_opts=opts.TitleOpts(title="top20高频词汇"),xaxis_opts=opts.AxisOpts(name_rotate=30,axislabel_opts={"rotate":30}))#设置一些标题,坐标轴参数
        .set_series_opts(label_opts=opts.LabelOpts(is_show=True))#是否显示数据值
)
bar.render('data.html')
#生成词云图
wc = WordCloud(
        # 设置字体,不指定就会出现乱码
        font_path="C:\\Windows\\Fonts\\STFANGSO.ttf",#不加这一句显示口字形乱码
        # 设置背景色
        background_color='white',
        # 设置背景宽
        width=1500,
        # 设置背景高
        height=500,
        # 设置最大显示数
        max_words=100,
        # 禁用词汇
        stopwords=['表情','图片'],
        # 最大字体
        max_font_size=150,
        # 最小字体
        min_font_size=20,
        mode='RGBA'
        )
# 产生词云
result=" ".join(word_list)
wc1=wc.generate(result)
# wc1.to_file("tutu.png")#保存图片
plt.imshow(wc1)
plt.axis("off")
plt.show()

print('近一年的聊天条数约:',y)
print('总共字数约:',s)

运行结果:

 最后,开学快乐,呜呜呜~

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值