做一个关于我和她微信聊天记录的爱心词云图
前言:????因為最近接觸到了詞云圖,所以就想做一個關于和女朋友聊天的詞云圖,但是現在很少使用QQ了,所以就不得不使用微信導出聊天記錄。于是我坐在電腦面前查閱資料查了一天,但是在走到快導出微信聊天記錄的時候,還是被卡住了。
????通過手機備份微信聊天記錄到電腦,我拿到了下面幾個文件
????我想通過SQLCipher打開EnMicroMsg這個數據庫文件,但是需要輸入密碼,根據網上所述,需要找到IMEI和微信UIN,然后IMEI+UIN通過MD5加密取32位小寫前七位就是數據庫密碼,可是我試了很久都打不開,于是我放棄了。還有其他方法我也獲取不了密碼,不知道怎么回事。于是我選擇了復制粘貼的辦法,一天一天的把聊天記錄保存到txt文件中。如果有人知道怎么導出微信聊天記錄,請告訴我一下唄,不勝感激,如果不知道怎么導出微信聊天記錄,那么你也可以采用我這個笨辦法保存聊天記錄,但是作詞語圖的方法都一樣~
下面操作是基于聊天記錄保存到txt文本中的,數據格式如下:
首先我想的是把這個txt文件中的數據保存到csv中,因為這樣還可以把聊天記錄發給她,csv文件看起來也方便。
代碼如下:
經過上述操作,已經將txt文件轉換為了csv文件,我們這時可以看效果:
PS:如果你知道如何導出聊天記錄,那肯定原本就是一個csv文件,也不會像我這么麻煩。我這個是個笨方法~
接下來就是如下步驟:
①查看數據,看看聊天記錄主要內容,刪除空值所在行
②通過觀察,我們發現消息中存在[干嘛]、[語音]等格式的數據,這是因為它們是表情包和語音,我們需要把它們剔除掉,以免對重要詞造成影響。
#刪除表情包,和語音,他們都在"[]"中 dropdata=datas[datas['對話'].str.contains(']')] #找到含有‘]’所在的行 print(dropdata) test1=list(dropdata['對話']) #將dropdata的'對話'列表示為列表test1 test2=list(datas['對話']) #將datas的'對話'列表示為列表test2 dialogue=list(set(test1)^set(test2)) #采用列表求差集的方法將數據中含有'[]'的元素除去 print(dialogue) print(str(len(dialogue))+'個元素') #查看列表dialogue中還有多少個元素③操作后所有消息都在列表中,一條消息就是一個元素,接下來就利用jieba庫進行分詞。
import jieba #利用jieba分詞 words=[] for sentence in dialogue:word=jieba.lcut(sentence) #分詞words += word result=' '.join(words) print(result)④利用wordcloud庫生成詞云圖
import matplotlib.colors as colors import matplotlib.pyplot as plt from wordcloud import WordCloud from PIL import Image import numpy as np #stop_words.txt是一個停用詞文本,用于除去result中的停用詞 stop_words = open("stop_words.txt",encoding="utf8").read().split("\n") #圖片 picture=np.array(Image.open('愛心.png')) #紅色 #FF0000 藍色 #0000FF 牡丹紅 #FF00FF 青色 #00FFFF 黃色 #FFFF00 #海藍 #70DB93 橙色 #FF7F00 黑色 #000000 藍紫色 #9F5F9F 黃銅色 #B5A642 #金色 #CD7F32 紫紅色 #D8BFD8 紫羅蘭色 #4F2F4F 粉紅色 #BC8F8F 珊瑚紅 #FF7F00 #深紫色 #871F78 巧克力色 #5C3317 橙色 #FF7F00 橙紅色 #FF2400 淺藍色 #C0D9D9 colormaps=colors.ListedColormap(['#ffadbb','#ffb6c1','#ffb3e6','#ffd9e6']) #編輯文字顏色 #推薦顏色 #'#FF0000','#D8BFD8','#FF2400','#FF7F00' #'#C7EDCC','#DCE2F1' #'#ffadbb','#ffb6c1','#ffb3e6','#ffd9e6'#使用WordCloud生成詞云 word_cloud = WordCloud(mask=picture, #設置圖片background_color="white", # 詞云圖的背景顏色font_path="simsun.ttc", # 設置詞云字體colormap=colormaps, # 指定字體顏色stopwords=stop_words) # 去掉的停詞 word_cloud.generate(result) #運用matplotlib展現結果 plt.subplots(figsize=(12,8)) plt.imshow(word_cloud) plt.axis("off") # 保存生成的詞云圖 word_cloud.to_file('聊天詞云圖.jpg')最后查看效果:
用到的愛心圖片:
最后呢,我想祝愿天下所有有情人終成眷屬,縱使所愛隔山海,山海亦可平
感想:(此處可以略過~)
????其實通過詞云圖就可以看出我們現在聊天基本上都是在聊上班,甚至還有一個字特別明顯—‘哭’,我們其實已經戀愛五年了,但異地估計都有四年,大學也是異地,期間經歷了很多事情。
????在她剛讀大一,我選擇了復讀,在她工作了,我還沒畢業,所以現在我還在上學,她在上班。因為陪我,去年來我學校這邊工作,所以就這一段時間我們才真正的不算異地,因為不確定因素,導致今年我們又異地了,她在她家那邊上班。每天都感覺她很累,有時候她也會自己哭,然而我自己錢也不多,以前讀大學異地的時候,我每個月還可以去找她兩次,現在異地可能一個月只能去找她一次。真的感覺是我害了她一樣,如果不遇見我,可能她會過的更好。但是我現在很舍不得她,當然以后肯定是準備和她結婚,所以我希望,在這個學期不要渾渾噩噩,復習備考公務員和學好如何做一個數據分析師兩手抓,在馬上到來的職場中能有所作為。
????我不知道為什么在這里留下了這么多文字,我也不希望陌生人看見了會覺得我怎么怎么樣,我只希望如果以后的我看見這段話,會勾起那些回憶和承諾,不要辜負了她
總結
以上是生活随笔為你收集整理的做一个关于我和她微信聊天记录的爱心词云图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 给对象创建实例_Java中创建
- 下一篇: 机器学习里面常用知识