Python將QQ聊天記錄生成詞雲的示例代碼
在這個情人節前夕,我把現任對象回收掉瞭,這段感情積攢瞭太多的失望,也給瞭我太多的傷害,所以我看到這個活動的第一反應是拒絕的。然而人生嘛,最重要的就是體驗,沉浸在過去的回憶裡沒有意義,積極面對才能讓自己更好地重振旗鼓。
所以,當大傢都一致地在這個活動裡各種秀恩愛時,我決定走一條不一樣的路來為單身狗和剛分手的小夥伴們打打氣:時間能改變的,是那些原本就不堅定的東西,未來的路還很長,笑一笑,一切都會過去的!
言歸正傳,我們要做的任務是,把 QQ 分手聊天記錄導出,使用 Python 分詞後做成分開的桃心形狀的詞雲進行展示。聽著就很有意思,來,開幹!
步驟一:創建和導出聊天記錄
1.創建聊天記錄內容
選擇 QQ 聊天記錄是因為比較簡單,而微信導出相對麻煩。考慮到個人隱私問題,我申請瞭 QQ 小號,和大號之間發瞭一些分手語錄作為提取素材:
2.導出聊天記錄
我使用的是TIM,點擊右下角的主菜單,選擇“設置”:
選擇“消息記錄” ->> “安全設置” ->> “打開消息管理器” :
選擇需要導出的關系人,右鍵點擊“導出消息記錄”:
保存到 F:\csdn 目錄下,保存類型選擇文本文件,命名為 chat.txt:
第一步導出操作完成。
步驟二:安裝需要的庫
1.安裝 jieba 庫
pip install jieba -i https://pypi.douban.com/simple/
2.安裝 Wordcloud 庫
網上有人說直接使用 pip install 安裝 Wordcloud 會有問題,所以我們先下載到本地:
Wordcloud 下載鏈接
選擇適合自己環境的安裝包(cp 後面的數字代表 Python 版本,一定要對應起來),下載到 Python 安裝目錄下的 Scripts 文件夾中:
打開cmd,進入該路徑,執行安裝命令:
pip install wordcloud-1.8.1-cp38-cp38-win_amd64.whl
安裝成功截圖如下:
步驟三:代碼實現
選擇一張分開的心圖片(分開的心也很美嘛):
在選擇生成配色方案的圖片時,要求背景白色,邊緣越清晰越好。
qqChat.py 代碼實現:
import matplotlib.pyplot as plt from wordcloud import WordCloud import jieba from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS import os import numpy as np import PIL.Image as Image newtext = [] #打開聊天記錄文件 for word in open('F:\\csdn\\chat.txt', 'r',encoding='utf-8'): tmp = word[0:4] #過濾掉聊天記錄的時間和qq名稱 if (tmp == "2021"): continue tmp = word[0:2] #print(tmp) newtext.append(word) #將過濾後的文本重新寫入文件並保存 with open('F:\\csdn\\chat_final.txt', 'w', encoding='utf-8') as f: for i in newtext: f.write(i) #打開新生成的聊天記錄文件 text = open('F:\\csdn\\chat_final.txt', 'r',encoding = 'utf-8').read() word_jieba = jieba.cut(text, cut_all=True) word_split = " ".join(word_jieba) #去掉一些意義不大的字 stop_words = set(STOPWORDS) stop_words.add("的") stop_words.add("我") stop_words.add("你") stop_words.add("是") stop_words.add("就") #根據心形圖片生成配色方案,這裡的路徑要配置正確 alice_coloring = np.array(Image.open(os.path.join('F:\\','heart.jpg'))) my_wordcloud = WordCloud(scale=16,background_color="white", max_words=800, stopwords=stop_words, mask=alice_coloring,max_font_size=80, random_state=42,font_path='C:/Windows/Fonts/simhei.ttf')\ .generate(word_split) image_colors = ImageColorGenerator(alice_coloring) plt.imshow(my_wordcloud.recolor(color_func=image_colors)) plt.imshow(my_wordcloud) plt.axis("off") plt.show()
可以根據自己的需求調整參數,比如如果有一些語氣詞和無意義的字可以通過配置 stopwords 來進行過濾,最後輸入命令運行代碼:
python qqChat.py
效果如下,還是很漂亮的。
詞雲裡面頻率最高的幾個詞分別是“愛”,“自己”,“喜歡”,也恰恰是我想表達的:不管一段愛情有多麼甜蜜或多麼悲傷,始終都不能失去自己,哪怕說再見也要保持驕傲的姿態,每一段人生經歷都有它的意義和價值,平和地接受結果就好瞭。
到此這篇關於Python將QQ聊天記錄生成詞雲的示例代碼的文章就介紹到這瞭,更多相關Python 生成詞雲內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- python詞雲庫wordcloud自定義詞雲制作步驟分享
- Python制作個性化的詞雲圖實例講解
- Python jieba 中文分詞與詞頻統計的操作
- python 爬取豆瓣電影短評並利用wordcloud生成詞雲圖
- Python詞雲的正確實現方法實例