微信聊天记录词云制作

news2024/11/17 3:53:06

文章目录

  • 一:聊天记录传输至电脑
  • 二:聊天记录破解
  • 三:聊天记录分析
    • (1)字段含义
    • (2)词频统计和词云制作
    • (3)效果展示

一:聊天记录传输至电脑

在雷电模拟器中打开root权限,并将分辨率设置为1080×1920

  • 其他模拟器也可以

在这里插入图片描述
在这里插入图片描述

模拟器上安装微信(不要着急登录)

在这里插入图片描述

在正在使用的手机上选择迁移聊天记录到手机/平板,迁移时不要选择图片和文件,只迁移文字

在这里插入图片描述

然后在模拟器上登录微信,使用电脑摄像头扫描迁移二维码进行迁移

在这里插入图片描述

导入完成

在这里插入图片描述

打开模拟器的文件管理器

在这里插入图片描述

/data/data/com.tencent.mm/MicroMsg/(一个32位字符串命名的文件夹中)下寻找EnMicroMsg.db文件,如果该文件在此目录下不存在,那么可能有多个微信号在模拟器上登陆过。所以挨个寻找下图方框内的文件,哪个文件及里有该文件,就选哪个
在这里插入图片描述

如下图
在这里插入图片描述

然后把该文件传至电脑,方法是:在雷电模拟器中打开“文件管理器”,再依次点击datadatacom.tencent.mmMicroMsg,找到EnMicroMsg.db文件;单击选中该文件后,按住Ctrl+5,选择“打开安卓文件夹”;单价左下角三个点,选择“粘贴选择项”。再按住Ctrl+5,选择“打开电脑文件夹”,就可以在电脑的文件夹里看到所需要的文件啦

二:聊天记录破解

使用数据库软件SQLite Database Browser
在这里插入图片描述

获取模拟器中的手机IMEI码和微信ui值

  • 手机IMEI码:
    • 雷电模拟器设置界面可以查看:010306020798103
    • 有可能是固定的IMEI码:1234567890ABCDEF
  • 微信ui值:安卓模拟器的根目录/data/data/com.tencent.mm/shared_prefs文件夹下找到auth_info_key_prefs.xml文件拷贝到电脑中并用记事本打开,找到如下auth_uin文字,其中value后面跟着的就是你的uin码了。如果是负数则复制的时候一定要保留负号,每个人uin码的位数可能不一样

在这里插入图片描述

然后将手机IMEI码和微信uin码直接相连后,用换算工具换算成小写32位md5值,其前7位就是破解密码啦!然后用该软件打开哪个数据库文件,并使用密码进入

在这里插入图片描述

点击File–>Export–>Table as CSV file,选择message表导出(注意是message表,不要选成其他表了),一定要自己加上后缀.csv!!

在这里插入图片描述

然后使用记事本打开该文件另存为,编码选择utf-8

三:聊天记录分析

(1)字段含义

上面CSV文件列名部分含义如下

在这里插入图片描述

(2)词频统计和词云制作

具体步骤如下

  • 将csv文件读取SQL,然后提取message列,将聊天记录写入文件
  • 对聊天记录进行处理
    • 去除文本表情
    • 去除微信系统消息
    • 去除空字符串
  • 对聊天记录进行分词和停用词处理
    • 可以建立自己的分词表,达到更好的分词效果
    • 如果不想让某些词在最后的词云图中显示,则加入停用词表
  • 词频统计和降序排序
  • 利用wordcloud库制作词云图

完整代码如下

from collections import Counter  
import pandas  
import re  
import sqlite3  
import numpy as np  
import jieba  
from wordcloud import WordCloud  
from PIL import Image  
  
  
def read_file(file_name):  
    fp = open(file_name, "r", encoding="utf-8")  
    lines = fp.readlines()  
    fp.close()  
    for i in range(len(lines)):  
        lines[i] = lines[i].rstrip("\n")  
    return lines  
  
  
# 从message表提取原始聊天记录并保存  
def extract():  
    # 新建聊天记录数据库  
    conn = sqlite3.connect('chat_log.db')  
    # 读取csv文件,生成DataFrame  
    message_df = pandas.read_csv('message.csv', sep=",")  
    # 将DataFrame写入SQL中,存入message_sql表中  
    message_df.to_sql('message_sql', conn, if_exists='append', index=False)  
  
    # 获得游标  
    cursor = conn.cursor()  
    # 选择content  
    cursor.execute('select content from message_sql where length(content) < 100')  
    # 返回结果  
    contents = cursor.fetchall()  
  
    # 写入文件  
    file = open('原始聊天记录.txt', 'w+', encoding='utf-8')  
    for content in contents:  
        file.write(content[0] + '\n')  
  
    file.close()  
    cursor.close()  
    conn.close()  
  
# 对聊天记录进行处理  
def process():  
    emoj_regx = re.compile(r"\[[^\]]+\]")  
    wxid_regx = re.compile(r"wxid.*")  
    content_lines = read_file('原始聊天记录.txt')  
    for i in range(len(content_lines)):  
        # 去除文本表情  
        content_lines[i] = emoj_regx.sub(r"", content_lines[i])  
        # 去除微信消息  
        content_lines[i] = wxid_regx.sub(r"", content_lines[i])  
    # 去除空字符串  
    content_lines = [line for line in content_lines if line != '']  
    # print(content_lines)  
  
    return content_lines  
  
  
# 分词和去除停用词  
def cut():  
    jieba.load_userdict('./mywords.txt')  
    stopwords = read_file('stopwords.dat')  
    all_words = []  
    for line in content_lines:  
        all_words += [word for word in jieba.cut(line) if word not in stopwords]  
    dict_words = dict(Counter(all_words))  
    return dict_words  
  
def get_cloud():  
    mask_image = np.array(Image.open('muban3.png').convert('L'))  
    wordcloud = WordCloud(background_color='white', mask=mask_image, font_path='simhei.ttf')  
  
    # top_100_words = dict(list(sorted_words.items())[:100])  
    wordcloud.generate_from_frequencies(sorted_words)  
    wordcloud.to_file('cloud.png')  
  
  
if __name__ == '__main__':  
    # 提取聊天记录  
    # extract()  
    # 聊天记录处理  
    content_lines = process()  
    # 分词和停用词去除  
    dict_words = cut()  
    # 降序排序  
    sorted_words = sorted(dict_words.items(), key=lambda d: d[1], reverse=True)  
    sorted_words = {word: freq for word, freq in sorted_words}  
    print(sorted_words)  
    # 词云生成  
    get_cloud()

这里附加一段有关文本表情信息统计的代码

import re  
  
  
def count_emoticons(file_path, target_emoticon):  
    with open(file_path, 'r', encoding='utf-8') as f:  
        chat_records = f.read()  
  
    all_emoticons = []  
    for line in chat_records.split('\n'):  
        if line.strip():  
            emoticons = re.findall(r'\[(.*?)\]', line)  
            all_emoticons.extend(emoticons)  
  
    total_emoticons = len(all_emoticons)  
    target_count = all_emoticons.count(target_emoticon)  
  
    return total_emoticons, target_count  
  
file_path = '原始聊天记录.txt'  # 聊天记录文件路径  
target_emoticon = '捂脸'  # 目标表情  
total_emoticons, target_count = count_emoticons(file_path, target_emoticon)  
print("总共有{}个表情".format(total_emoticons))  
print("表情'{}'出现了{}次".format(target_emoticon, target_count))

(3)效果展示

使用如下模板图,使背景为白色,词云图将会显示在非白色位置处
在这里插入图片描述

效果如下(已对敏感信息打码处理)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/908672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

独家|2023 Q2业内3D-NAND研发动态最全一览表

有粉丝私信&#xff0c;希望可以看到业内比较全的3D-NAND动态。经过小编的找寻&#xff0c;结合TechInsight的信息以及各家原厂官网消息&#xff0c;整理出2023 Q2业内3D-NAND研发动态最全一览表&#xff0c;供大家参考。 声明&#xff1a;本表格均为公开信息整理&#xff0c;如…

AI提示语-让每个人都能轻松使用 AI,提高 10 倍生产力

AI提示语简介 无需代码&#xff0c;连接模型快速构建AI应用。让每个人都能轻松使用 AI&#xff0c;提高 10 倍生产力。 AI提示语介绍 AI 提示语致力于为各类AI应用搭建、运行和推广的基础平台&#xff0c;让广大用户都能将AI的力量运用到实际的工作与生活场景中。 AI提示语…

国产SSD崛起!2023年发展趋势解析

随着科技的不断进步&#xff0c;SSD已经成为了现代计算机不可或缺的一部分。而在这个市场中&#xff0c;国产SSD也逐渐崭露头角。 国产SSD市场份额继续扩大 根据市场调研机构IDC的数据显示&#xff0c;2023年中国SSD市场份额排名前五的厂商中有四家是国内企业&#xff0c;分别是…

【第三阶段】kotlin语言的内置函数apply

1.普通方式输出一个字串的信息 fun main() {var info"Ktolin"//普通方式println("info的长度为${info.length}")println("info的最后一个字符${info[info.length-1]}")println("info全转换为大写${info.toLowerCase()}") }执行结果 …

Go 语言在 Windows 上的安装及配置

1. Go语言的下载 Golang官网&#xff1a;All releases - The Go Programming Language Golang中文网&#xff1a;Go下载 - Go语言中文网 - Golang中文社区 两个网站打开的内容只有语言不同而已&#xff0c;网站上清晰的标注了不同操作系统需要对应安装哪个版本&#xff0c;其中…

对类加载过程的通俗理解

开局一张图 一般来说&#xff0c;类加载分为&#xff1a;加载、验证、准备、解析、初始化 5个步骤。 各阶段略叙 1、加载 将.class文件加载进内存 2、验证 判断.class文件的格式是否正确 3、准备 为类的静态变量分配内存并设置初始值。只有b、c会在此阶段进行处理。 //…

移动端的帮助中心该如何设计?

随着移动互联网的发展&#xff0c;APP作为一种高效的营销工具&#xff0c;已经成为企业抢占移动端流量的重要手段。同时随着智能手机用户规模不断扩大&#xff0c;以及用户的消费逐渐向移动端转移&#xff0c;使得越来越多企业认识到 APP与其营销模式是成为互补的关系&#xf…

数据驱动未来:基于状态的维修在工业领域的前景

随着科技的不断进步&#xff0c;工业界正迎来一场革命&#xff0c;而其中的一颗明星是基于状态的维修&#xff08;CBM&#xff09;。这一技术正在改变工业维护的方式&#xff0c;通过实时数据分析和人工智能驱动&#xff0c;使维护从被动的、计划性的转变为主动的、预测性的。本…

基于多元宇宙算法优化的BP神经网络(预测应用) - 附代码

基于多元宇宙算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码 文章目录 基于多元宇宙算法优化的BP神经网络&#xff08;预测应用&#xff09; - 附代码1.数据介绍2.多元宇宙优化BP神经网络2.1 BP神经网络参数设置2.2 多元宇宙算法应用 4.测试结果&#xff1a;5…

3种清除logo的方法,使其干净整洁 自然无痕

信息爆炸的时代&#xff0c;我们每天都和图片打交道经常会遇到一些带有水印的图片。这些水印可能是品牌的标志或者是版权信息&#xff0c;但有时候它们会干扰到我们对图片的欣赏和使用。那么&#xff0c;怎么去掉图片logo水印呢? 毕竟影响图片美感&#xff0c;使用也不方便&a…

torch一些操作

Pytorch文档 Pytorch 官方文档 https://pytorch.org/docs/stable/index.html pytorch 里的一些基础tensor操作讲的不错 https://blog.csdn.net/abc13526222160/category_8614343.html 关于pytorch的Broadcast,合并与分割,数学运算,属性统计以及高阶操作 https://blog.csd…

Spring的基本概念

前言 Spring 究竟是什么&#xff1f;其实Spring简单来说就是一个包含众多工具方法的IOC容器。 那么什么是IOC呢&#xff1f; IoC Inversion of Control 翻译成中⽂是“控制反转”的意思. 既然Spring 是⼀个IoC&#xff08;控制反转&#xff09;容器&#xff0c;重点还在“容…

深度学习基本理论下篇:(梯度下降/卷积/池化/归一化/AlexNet/归一化/Dropout/卷积核)、深度学习面试

18、 请说明Momentum、AdaGrad、Adam梯度下降法的特点 Momentum、AdaGrad、Adam是针对SGD梯度下降算法的缺点的改进算法。在SGD算法中&#xff0c;如果函数的形状非均向&#xff08;参数大小差异较大&#xff09;&#xff0c;SGD的搜索路径会呈“之字形”移动&#xff0c;搜索…

代码随想录打卡—day21—【二叉树】— 8.21

1 530. 二叉搜索树的最小绝对差 530. 二叉搜索树的最小绝对差 想法&#xff1a;先直接中序遍历&#xff08;升序的序列&#xff09;过程中相邻两个数的差值取min&#xff0c;自己写一次AC代码&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* …

JMETER基本原理

Jmeter基本原理是建立一个线程池&#xff0c;多线程运行取样器产生大量负载&#xff0c;在运行过程中通过断言来验证结果的正确性&#xff0c;可以通过监听来记录测试结果&#xff1b; JMETER是运行在JVM虚拟机上的&#xff0c;每个进程的开销比loadrunner的进程开销大&#x…

基于springboot+vue的食材商城(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

ChatGLM的int8量化以及由此对量化的梳理总结

目录 一、ChatGLM的int8量化 二、全流程量化 三、量化校准 目前随着模型规模越来越大&#xff0c;对于没有很多算力的人来说&#xff0c;使用大模型的门槛越来越高&#xff0c;因此ChatGLM提供的模型支持&#xff0c;fp16、int8和int4的量化&#xff0c;来降低加载模型的显存…

Dockerfile制作Nginx应用镜像

文章目录 使用Dockerfile制作基于Centos7的Nginx应用镜像创建Dockerfile创建镜像上传镜像-harbor修改hosts文件修改daemon.json重启DOCKER登录并上传测试镜像 使用Dockerfile制作基于Centos7的Nginx应用镜像 创建Dockerfile FROM centos:7 MAINTAINER "WWW" RUN yu…

多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测

多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SCNGO-BiLSTM-Attention多变量时间序列预测。 模型描…

论文阅读_条件控制_ControlNet

name_en: Adding Conditional Control to Text-to-Image Diffusion Models name_ch: 向文本到图像的扩散模型添加条件控制 paper_addr: http://arxiv.org/abs/2302.05543 date_read: 2023-08-17 date_publish: 2023-02-10 tags: [‘图形图像’,‘大模型’,‘多模态’] author: …