天天看點

Python---qq群聊天記錄詞雲分析

python擁有近13w個第三方庫,其中有很多優秀的庫,比如

wordcloud,scipy,jieba

等庫,能快速實作很多功能,比如制作一個QQ群聊天記錄詞雲……

工具:PyCharm, Python3.6.5

1.擷取資料源

Python---qq群聊天記錄詞雲分析

qq左下角

Python---qq群聊天記錄詞雲分析

導出消息記錄

要用.txt導出到任意盤符,接下來就要對導出的txt檔案進行資料分析。

2.下載下傳對應庫

這一步是對于初學者最難的一步,其中有很多坑等着你。(下面以安裝wordcloud為例,因為這個最麻煩)

(1)PyCharm的Terminal中輸入

pip install wordcloud

來下載下傳wordcloud庫,一般情況下會安裝失敗==!那就用方法2

(2)第二個方法是到此網站下載下傳安裝包

傳送門
重要提醒:通過cmd中輸入

python -V

來檢視你的python版本并下載下傳對應的安裝包,同時注意你的python是32位還是64位
Python---qq群聊天記錄詞雲分析

wordcloud

以py3.6為例:wordcloud‑1.4.1‑cp36‑cp36m‑win32.whl

cp36代表python3.6 ; win32代表32位的python

下載下傳完成後把檔案放到python目錄的Scripts下,并在PyCharm的Terminal中運作

pip install wordcloud‑1.4.1‑cp36‑cp36m‑win32.whl

注意:得在Scripts下運作

3.代碼部分

安裝好各種庫後終于可以編寫代碼了

分兩步搞定

(1)過濾txt檔案中無用的資訊,避免詞雲中都是無效資訊,并用jieba進行分詞

直接上代碼

import jieba

newtext = []
# 打開E盤下的聊天記錄檔案qq.txt
for word in open('E:\\qq.txt', 'r', encoding='utf-8'):
    tmp = word[0:4]
    if (tmp == "2017" or tmp == "===="or tmp == "2018"):  # 過濾掉聊天記錄的時間和qq名稱
        continue
    tmp = word[0:2]
    if (tmp[0] == '[' or tmp[0] == '/'or tmp[0] == '@'):  # 過濾掉圖檔和表情,例如[圖檔],/滑稽
        continue
    newtext.append(word)
# 将過濾掉圖檔和表情和時間資訊和qq名稱剩下的文字重新寫入E盤下的q1.txt檔案中去
with open('E:\\q1.txt', 'w', encoding='utf-8') as f:
    for i in newtext:
        f.write(i)
 # 打開新生成的聊天記錄檔案
text = open('E:\\q1.txt', 'r', encoding='utf-8').read()
word_jieba = jieba.cut(text, cut_all=True)
word_split = " ".join(word_jieba)

           

通過這步在E盤中得到了一個q1.txt檔案,你打開會發現變的整潔幹淨了許多,當然你也可以通過進一步學習來更好的過濾文本

(2)最後一步,再建立一個.py,用到wordcloud庫來繪制詞雲圖(為便于了解,将程式分成兩部分運作,你也可以嘗試将兩程式合并)

from wordcloud import WordCloud,STOPWORDS,ImageColorGenerator
import matplotlib.pyplot as plt
from scipy.misc import imread


text = open('E:\\q1.txt', 'r', encoding='utf-8').read()  # 打開過濾好的txt檔案
print(text)
bg_pic = imread('E:\\sjt.jpg')     # 導入詞雲背景
wordcloud = WordCloud(mask=bg_pic, background_color='white', scale=1.5, font_path='C:/Windows/Fonts/simhei.ttf', width=1000,height=600,stopwords={'表情','糊臉','拍桌','拍頭'},min_font_size=10,max_font_size=36,font_step=4,
).generate(text)    # 定義詞雲的各種變量,可以控制詞雲的形式,這裡的控制變量可以去網上查找,stopwords={'表情','糊臉','拍桌','拍頭''是為了過濾掉裡面的部分表情資訊
image_colors = ImageColorGenerator(bg_pic)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
wordcloud.to_file('E:\\text.jpg')   # 輸出詞雲
           
Python---qq群聊天記錄詞雲分析

最終效果

快去制作你的炫酷詞雲吧!!!