1.安裝Anaconda和pycharm,并完成相關(guān)配置。
參考教程:https://blog.csdn.net/tang_chuanlin/article/details/79793654
配置之后需要在settings界面安裝jieba等相關(guān)包。點(diǎn)擊下圖綠色+圖標(biāo),搜索出包后點(diǎn)擊左下側(cè)安裝即可。但是在安裝wordcloud包時(shí)可能會(huì)出現(xiàn)錯(cuò)誤,解決辦法為手動(dòng)下載whl文件進(jìn)行安裝。
下載界面:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
打開cmd->在Anaconda相關(guān)安裝目錄下找到pip.exe文件將其拖入->空一格輸入“install whl文件的完整安裝路徑”,按下空格鍵安裝完成。
2.詞云圖的實(shí)現(xiàn)
參考教程:https://blog.csdn.net/Tang_Chuanlin/article/details/79862505
3.注意
(1)f_stop = open(path.join(d, stop_name), encoding="utf8")
無法打開文件,將分詞的文件另存為utf8編碼文件格式即可。
(2)停用詞表去掉聊天日期、網(wǎng)名、數(shù)字、鏈接、自動(dòng)回復(fù)語(yǔ)言、系統(tǒng)提示語(yǔ)、文字顯示的表情包。優(yōu)化:如何自動(dòng)去掉文本中的鏈接?
(3)修改詞云的形狀需要在參數(shù)mask內(nèi)設(shè)置
完整代碼如下:
import jieba
from os import path? ? ? ? ? ? ? ? ? ? ? ? ? ? # 獲取文檔的路徑
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.font_manager as fm
bg = np.array(Image.open("princess.png"))?????? # 背景圖
d = path.dirname(__file__) ? ? ? # 獲取當(dāng)前的項(xiàng)目文件夾的路徑
stop_name = 'stopwords.txt' ? ? # 讀取停用詞表,jieba.add_word("葉文潔")可添加自定義分詞
data_name = "20170520-20180113.txt" ?? # 文本路徑
data = open(path.join(d, data_name), encoding="utf8").read()? # 讀取要分析的文本,讀取格式
def separate(text_data): ? ? ? # 定義函數(shù)用于分詞
? ? word_list = [] ? ? ? ? ? ? ? ? ? ? # 定義一個(gè)空的列表,保存分詞
? ? seg_list = jieba.cut(text_data, cut_all=False)? # false精準(zhǔn)分詞模式,試試True??
? ? list_str = ','.join(seg_list)? ? ? ? ? ? ? # 將分詞用,連接起來
? ? # 打開停用詞表
? ? f_stop = open(path.join(d, stop_name), encoding="utf8")
? ? try:
? ? ? ? f_stop_text = f_stop.read()
? ? finally:
? ? ? ? f_stop.close()? ? ? ? ? ? ? ? ? ? ? ? ? # 關(guān)閉資源
? ? f_stop_seg_list = f_stop_text.split("\n")?????? # 將停用詞格式化,用\n分開,返回一個(gè)列表
? ? # 對(duì)默認(rèn)模式(精準(zhǔn))分詞結(jié)果進(jìn)行遍歷,去除停用詞
? ? for my_word in list_str.split(','):
? ? ? ? if not(my_word in f_stop_seg_list) and not my_word.isdigit() and len(my_word.strip()) > 1:
? ? ? ? ? ? word_list.append(my_word)
? ? return ' '.join(word_list)
result = separate(data)
# 生成詞云圖
wc = WordCloud(
? ? ? ? background_color="white", ? ? # 設(shè)置背景為白色,默認(rèn)為黑色
? ? ? ? mask=bg, ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? # 設(shè)置詞云形狀
? ? ? ? width=990,? ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置圖片的寬度
? ? ? ? height=440,? ? ? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置圖片的高度
? ? ? ? margin=10, ? ? ? ? ? ? ? ? ? ? ? ? ? ? # 設(shè)置圖片的邊緣
? ? ? ? max_font_size=50, ? ? ? ? ? ? ? ? # 設(shè)置最大字體
? ? ? ? random_state=30,
? ? ? ? font_path='C:/Windows/Fonts/simfang.ttf'? # 中文處理,用系統(tǒng)自帶的字體
? ? ).generate(result)
my_font = fm.FontProperties(fname='C:/Windows/Fonts/simfang.ttf')? # 為圖片設(shè)置字體
image_colors = ImageColorGenerator(bg) ?? # 產(chǎn)生背景圖片,基于彩色圖像的顏色生成器
plt.imshow(wc, interpolation="bilinear") ? ? # 開始畫圖
plt.axis("off") ?? # 為云圖去掉坐標(biāo)軸
wc.to_file("公主圖案.png") ?? # 保存云圖