python聊天记录分析

微信一次只能选一百条记录还得手动。作为邮件发送。按日期换行。
现在先复制黏贴了保存为txt文件。
读txt文件:

msg = open('path',encoding='utf-8',errors='ignore')

按日期劈开(按换行符’\n’分)再用正则表达式 按 talker 时间 内容 劈开:

date=str.split('\n')
datemsg=[]
import re
for i in date:
    i=re.split('(talker1)|(talker2)|(0[0-9]:[0-5][0-9]|1[0-9]:[0-5][0-9]|2[0-3]:[0-5][0-9])',i)
    datemsg.append(list(filter(lambda x:x!=''and x!=None,i)))
for i in datemsg:
    print(i)

所有内容的集合:

date=str.split('\n')
content0=[]
import re
for i in date:
    i=re.split('(talker1)|(talker2)|0[0-9]:[0-5][0-9]|1[0-9]:[0-5][0-9]|2[0-3]:[0-5][0-9]',i)
    content0.append(list(filter(lambda x:x!=''and x!=None and x!='talker1' and x!='talker2',i)))  

#分词
import jieba
jieba.add_word('好呀')
jieba.add_word('呲牙')
...
#按日期分开的
content1=[]
for day in content0:
    for w in day:
        a=jieba.lcut(w,cut_all=False)
        content1.append(a)
#不按日期分开的
content=[]
for msg in content1:
    for str in msg:
        if ((str != '表情') and (str !=' ') and (str !='[') and (str !=']') and (str !='的') and (str !='了') and (str !='我') and (str !='你') and (str !=',')):
            content.append(str)

手动词频统计:

counts = {}
for word in content:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(20):
    word, count = items[i]
    print("{0:<10}{1:<5}".format(word, count))

云词图代码:

import collections # 词频统计库
import numpy as np # numpy数据处理库
import wordcloud # 词云展示库
from PIL import Image # 图像处理库
import matplotlib.pyplot as plt # 图像展示库

# 词频统计
word_counts = collections.Counter(content) # 对分词做词频统计
word_counts_top10 = word_counts.most_common(10) # 获取前10最高频的词
print (word_counts_top10) # 输出检查

# 词频展示
#backgroud_Image = plt.imread('wordcloud.jpg')  
wc = wordcloud.WordCloud(
    font_path='C:/Windows/Fonts/simhei.ttf', # 设置字体格式
#    mask=backgroud_Image, # 设置背景图
    max_words=200, # 最多显示词数
    max_font_size=300,# 字体最大值
    background_color='white',width=2000,height=1600,margin=0
)

wc.generate_from_frequencies(word_counts) # 从字典生成词云
plt.imshow(wc) # 显示词云
plt.axis('off') # 关闭坐标轴
#plt.savefig('D:\\picture.jpg',dpi=1000)
plt.show() # 显示图像
plt.show() # 显示图像

时间维度的分析:


notes for jieba:

jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
jieba.cut(s)  # 精确模式,返回一个可迭代的数据类型

jieba.cut(s,cut_all=True)  # 全模式,输出文本s中所有可能的单词

jieba.cut_for_search(s)   #搜索引擎模式,适合搜索引擎建立索引的分词结果

jieba.lcut(s)   # 精确模式,返回一个列表类型,建议使用

jieba.lcut(s,cut_all=True)  #全模式,返回一个列表类型,建议使用

jieba.lcut_for_search(s)  # 搜索引擎模式,返回一个列表类型,建议使用

jieba.add_word(w)  # 向分词词典中增加新词w
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以用来导出和分析微信聊天记录。首先,你需要使用Python编写的工具来导出微信聊天记录。你可以通过打开微信客户端,在聊天界面右上角选择"聊天信息",然后点击"导出聊天记录"来导出聊天记录为一个HTML文件。然后,你可以使用Python代码对导出的聊天记录进行分析。以下是一些示例代码:你可以使用正则表达式来统计聊天记录中的单词数量。另外,你还可以计算每个人的聊天比例和按日期和时间计算聊天记录数量。通过这些分析,你可以得出关于微信聊天记录的一些结论。希望这对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [chatgpt赋能pythonPython微信聊天记录导出:一篇详细的教程](https://blog.csdn.net/vacvefito/article/details/130896846)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [chatgpt赋能pythonPython微信聊天记录:如何导出并分析聊天记录](https://blog.csdn.net/axuhsssssco/article/details/130896844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值