用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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM