• 用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)

    参考链接:

    1. 电脑版QQ聊天记录怎么导出并查看

    2. https://www.jianshu.com/p/542fbff4ace4

    3. https://blog.csdn.net/qq_40855366/article/details/81177213

    4. https://baiyue.one/archives/1533.html

  • 相关阅读:
    Docker 入门
    python3模块: sys
    Python sys os getpass 包的导入
    Python3模块: hashlib
    python3异常处理 try
    python3模块: uuid
    python3 内置函数详解
    servlet/和/*匹配的区别
    [转]任何程序员应该记住的性能指标
    [转]使用CMS垃圾收集器产生的问题和解决方案
  • 原文地址:https://www.cnblogs.com/lfri/p/12209796.html
Copyright © 2020-2023  润新知