微信聊天記錄生成詞云(二)

在上一篇中,將導出的csv文件中的talkid為微信id的文字內容提取出來,形成txt文件。

一、對文本內容進行清洗

  • 在notepad中打開txt文件,發(fā)現(xiàn)聊天記錄中,每隔一段會有諸如“wxid_atzmad”的無效字段,影響整體數(shù)據(jù)的有效性。


    聊天記錄截圖1.png

    考慮到每個“wxid_atzmad”字段后內容均不一樣,若用復制粘貼去替換,幾萬行聊天記錄,光查找就要耗費一定精力。想到學習python時,學過正則表達式,為何不用正則表達式匹配“wxid_atzmad”字段,然后將其替換為空值?如果用正則表達式,速度快,效果應該可以達到。
    啟用正則表達式進行替換

    同理,其他無用字段也可以用正則表達式進行匹配刪除

數(shù)據(jù)清洗部分根據(jù)個人對數(shù)據(jù)的需求,進行不斷清洗。

二、生成詞云圖

在jupyter中,導入wordcloud模塊(當然,如果anaconda中沒有裝wordcloud模塊的話,可采用conda install wordcloud或者導入相關我回來文件的方式安裝),然后編寫詞云圖代碼,生成詞云。其中,詞云背景圖需要的照片輪廓可用美圖軟件進行修飾,以獲得更好的效果圖。

直接上代碼。

#使用空格鏈接,進行中文分詞
wl_space_split=''.join(wordlist)
print wl_space_split

#讀取mask/color圖片
d=path.dirname(__file__)
nana_coloring=imread(path.join(d,'pic.png')

#對分詞后的文本生成詞云
my_wordcloud=WordCloud(background_color='white',    #設置背景顏色
                        mask=nana_coloring,         #設置背景圖片
                        max_words=2000,             #設置最大顯示的字數(shù)
                        stopwords=STOPWORDS,        #設置停用詞
                        max_font_size=50,           #設置字體最大值
                        random_state=30,            #設置有多少種隨機生成狀態(tài),即有多少種配色方案
                        )
                        
my_wordcloud.generate(wl_space_split)

#create coloring from image
image_colors=ImageColorGenerator(nana_coloring)

#recolor wordcloud and show 
my_wordcloud.recolor(color_func=image_colors)

#顯示詞云圖
plt.imshow(my_wordcloud)
#是否顯示x軸、y軸下標
plt.axis('off')
plt.show()

#save img
my_wordcloud.to_file(path.join(d,'wechat.png')

根據(jù)WordCloud的參數(shù),可以自己不斷調整參數(shù),獲得不同效果的詞云圖。
最后,附上自己調試出的幾個詞云圖照片。


不斷修圖和不斷調整參數(shù)的結果
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容