1. 詞云圖
相信大家在生活中也看過下面這樣的圖形吧?想必對于詞云圖也不是很陌生吧?詞云圖,顧名思義,就是一些具有關鍵意義的詞,組成一些具有代表意義的形狀,并按照重要程度、出現頻率等進行排列組合得到一張精煉濃縮的信息圖。是不是感覺十分高大上?其實,我們自己也可以做屬于我們自己的詞云圖。
2. 準備素材
巧婦難為無米之炊,我們需要準備一下材料去烹飪我們這道視覺盛宴:
- 主材料:文本
- 輔料:圖片
- 工具:詞云制作工具(WordArt 等) OR 編程語言(python 等)
3. 準備文本
這一章里面,我主要介紹的是如何把QQ聊天記錄導出,并把整理成關鍵詞,為后續可視化做準備的。
-
導出聊天記錄
首先找到qq的消息管理器(小喇叭),然后找到你想要得到的聊天記錄的那位,右鍵,導出消息記錄就可以了。【注意】選擇下拉菜單,將聊天記錄導出為(* .txt)格式或者是(* .mht)格式。
導出qq聊天記錄.png -
處理文本
在得到文本素材以后,我們需要將這些文本進行分割,得到一個個詞語,經過過濾得到關鍵詞。這里,我們選用的是 jieba 結巴中文分詞。
jieba 中文分詞的 Github 項目地址:https://github.com/fxsjy/jieba- 通過
pip
安裝jieba:pip install jieba
- 通過 jieba 處理文本:
import jieba
import jieba.analyse
import re # 正則表達式清洗數據
# 打開并讀取文檔
file=open("wxb.txt",'r',encoding='UTF-8')
obj=file.read()
file.close()
- 清洗聊天記錄
這里主要利用re 模塊進行清洗,大家可以根據自己的聊天記錄形式進行自定義的處理。
re 模塊介紹:http://www.runoob.com/python/python-reg-expressions.html
import re
# 使用re.sub()函數進行清洗
# 主要清洗對象為"=="、"YYYY-MM-DD"、"HH:MM:SS"、"QQ昵稱"、"[圖片]"
# 下面以時間數據處理為例進行簡單的演示,大家可以根據自己的需要,根據規則進行修改
t_rm1= re.sub("\d\d:\d\d:\d\d",'',obj)
- 分詞
# 將特定的詞加入詞典
jieba.add_word("不安分的小王")
# 分詞
word_list=jieba.cut(obj,cut_all=Flase,HMM=True)
word_split="\".join(word_list)
word_split
便是你最終的分詞結果- 提取關鍵詞
光得到分詞結果我們還不能很好地展現文本內容,這一步,我們需要分詞后的統計,提取關鍵詞。為后面可視化做準備。
# 提取關鍵詞
rank_K=300 #提取前300的關鍵詞
# 返回帶有權重的詞語的list
tags = jieba.analyse.extract_tags(wrd_split, topK=rank_K, withWeight=True, allowPOS=())
word_split="\".join(word_list)
# 如果不想帶權重的話,可以設置 withWeight=False
- 保存最終關鍵詞和結果
with open("keywords.txt",'w',encoding='UTF-8') as f: for i in range(0,rank_K): f.write(str(tags[i])+'\n')
-
保存最終關鍵詞和結果
關鍵詞提取結果(部分)
- 清洗聊天記錄
- 通過
到此,介紹完了文本準備的相關工作。后面會繼續介紹如何制作詞云。