用 Python 對 QQ 群消息分析生成詞云圖


  • 之前看同學在群里發(fā)各人的消息云圖,然后很好奇就問了下怎么實現的自己也寫了一遍 2333

import re
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from scipy.misc import imread

  • 這里是使用的包,用了 jieba 分詞和 wordcloud 云圖,matplotlib 用來繪圖,imread 用來讀取生成的云圖樣式

def seg_sentence(filename):
    message_regex = "(201\d-\d{2}-\d{2}) (\d{2}:\d{2}:\d{2}) (.*)\n(.*)(?=\n\n)"
    message_complile = re.compile(message_regex)
    with open(filename, encoding='utf-8') as f:
        message_data = message_complile.findall(f.read())
        words = ''
        for rows in message_data:
            if (rows[2] == str):
                seg_list = jieba.cut(rows[3], cut_all=False)
                seg_list = ' '.join(seg_list)
                if len(seg_list) > 1:
                    if seg_list != '\t':
                        words += seg_list
                        words += ' '
        return words

  • 這里使用正則表達式用來匹配 QQ 群導出的 txt 格式消息記錄,然后調用 jieba 分詞對個人消息進行劃分,因為文本格式的消息記錄 發(fā)的表情和圖片都會變成 "[表情]"、"[圖片]",一開始我是準備直接用 if 干掉的,后來把這兩條添加到了 stopwords 里

def draw_wordcloud(filename):
 
    words = seg_sentence(filename)
 
    font = 'C:\Windows\Fonts\simhei.ttf'
    color_mask = imread('test.jpg')
 
    cloud = WordCloud(font_path=font,
                      background_color='white',
                      mask=color_mask,
                      max_words=400,
                      prefer_horizontal=0.9,
                      stopwords=stopwordslist('stopwords.txt'),
                      # stopwords=None,
                      max_font_size=200)
    word_cloud = cloud.generate(words)
 
    # word_cloud.to_file("cloud.png")
    return word_cloud

  • 繪圖的一些格式,這里的 test.jpg 就是我用電腦繪圖畫了一個云圖,用以生成自己想要的云圖格式,因為本地繪圖產生的圖片像素比較低,后來用 ps 把像素提高到 300dpi,這樣生成的圖片清晰度也高了很多

  • stopwords 用的本地 stopwords,隨便下一個就好

def stopwordslist(filepath):
    stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
    return stopwords

  • 最后就是讀取導出的 txt 格式消息記錄然后 plt 繪圖即可

plt.imshow(word_cloud)
plt.title(u'name', fontproperties='SimHei', fontsize='large')
plt.axis("off")
plt.show()
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 前言 詞云圖在文本分析上有著顯著的效果,前段時間看完了《倚天屠龍記》,這里使用Python通過jieba庫進行小說...
    浩成聊技術閱讀 1,847評論 0 0
  • 1.安裝Anaconda和pycharm,并完成相關配置。 參考教程:https://blog.csdn.net/...
    吵吵人閱讀 1,055評論 1 1
  • 我是剛子(張志剛),專注零擔物流19年,堅持寫作的第73天,勵志打造一位零擔物流培訓講師。 距離舉辦新零售家具展銷...
    有思想的物流快遞人閱讀 218評論 0 1
  • 據貓眼電影,中國二月電影票房已破110億,創(chuàng)中國影史新紀錄。上年同期票房為61.7億。今年同比以往幾年雖然票價有所...
    仲天篆閱讀 265評論 0 0
  • 馬云10年前一張名片讓人看起來很酸!網友:難怪人家這么成功 你好,每個人都渴望成功,羨慕那些已經成功的人,在許多人...
    麗君百合閱讀 230評論 0 0

友情鏈接更多精彩內容