在這個情人節前夕,我把現任物件回收掉了,這段感情積攢了太多的失望,也給了我太多的傷害,所以我看到這個活動的第一反應是拒絕的,然而人生嘛,最重要的就是體驗,沉浸在過去的回憶里沒有意義,積極面對才能讓自己更好地重振旗鼓,
所以,當大家都一致地在這個活動里各種秀恩愛時,我決定走一條不一樣的路來為單身狗和剛分手的小伙伴們打打氣:時間能改變的,是那些原本就不堅定的東西,未來的路還很長,笑一笑,一切都會過去的!
言歸正傳,我們要做的任務是,把 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
效果如下,還是很漂亮的,

詞云里面頻率最高的幾個詞分別是“愛”,“自己”,“喜歡”,也恰恰是我想表達的:不管一段愛情有多么甜蜜或多么悲傷,始終都不能失去自己,哪怕說再見也要保持驕傲的姿態,每一段人生經歷都有它的意義和價值,平和地接受結果就好了,
最后從分手語錄里面挑一句最喜歡的送給大家:
我承認定數,篤信所有的遇見和錯過,都自有旨趣,
我提醒自己,這世上風物遼闊,日月有期,不止一恨和一愛,還有四海與四季,
至于冗雜的感情,我只奉行一句:“我用真心待你,但不執著于你,活在緣分中,而非關系里,”
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/258054.html
標籤:其他
上一篇:go處理檔案上傳
