《关于我和我的怨种朋友一年只知道哈哈哈,呜呜呜,救命,这个那个这件事》
就有天和朋友聊天,她突然说了句,我以后再也不做搞笑女了,我说咋啦,她说她朋友说她天天喊救命,她害怕有一天真遇上啥事了喊救命,你们来句哈哈哈笑死。
于是我就想用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)
运行结果:
?最后,开学快乐,呜呜呜~
|