python詞云實現(xiàn)可視化——最簡潔易懂教程

? ? ? 我們開門見山,從6個步驟實現(xiàn)詞云 ,包括:1、讀取文本 2、分詞 3、加載停用詞表 4、去停用詞 5、提取關(guān)鍵詞2?6、詞云展示 。

? ? ? 本節(jié)內(nèi)容所用到的小文本數(shù)據(jù)集停詞表,我會提供給大家。那么話不多說,開始吧。

? ? ?小文本數(shù)據(jù)集鏈接:百度網(wǎng)盤 請輸入提取碼?提取碼:9527

? ? ? 停詞表:最全中文停用詞表整理(1893個)_Dorisi_H_n_q的博客-CSDN博客_中文停用詞?將里面的詞全部復(fù)制放在txt文檔中,取名stopWord_all.txt

? ? ?生成詞云背景圖:bg1.png? ?大家自行保存。??


完整代碼也在文章末尾給出,不需要看每一步具體的流程的童鞋可以直接在末尾cv代碼。

第一步:下載并 導(dǎo)python庫包

代碼如下:直接復(fù)制粘貼即可


import matplotlib.pyplotas plt# 繪制圖像的模塊

import jieba.analyseas anls# 關(guān)鍵詞提取

import re

from collectionsimport Counter

from wordcloudimport WordCloud

import numpyas np

from PILimport Image

import jieba


代碼復(fù)制后,要裝上相應(yīng)的庫 在pycharm中點擊 file->setting 找到這里進(jìn)行安裝庫,(不再詳細(xì)介紹,如果有小白不會下載安裝庫,可以留言)


第二步:讀取文本+分詞+去停用詞+詞頻統(tǒng)計+詞云生成

# 1、讀取文本


text =open("nba安東尼百度百科.txt",'r',encoding='utf-8').read()

stopwords = [line.strip()for linein open('stopWord_all.txt',encoding='UTF-8').readlines()]# 加載停用詞表,停用詞表的路徑,按照自己寫的設(shè)定。


# 2、去停用詞?list類型


text_split_no = []

for wordin text_split:

if wordnot in stopwords:

text_split_no.append(word)

# print(text_split_no)

text_split_no_str =' '.join(text_split_no)# list類型分為str


# 3、基于tf-idf提取關(guān)鍵詞


print("基于TF-IDF提取關(guān)鍵詞結(jié)果:")

keywords = []

for x, win anls.extract_tags(text_split_no_str,topK=20,withWeight=True): #topK是設(shè)置關(guān)鍵詞的個數(shù)

keywords.append(x)# 前20關(guān)鍵詞組成的list

keywords =' '.join(keywords)# 轉(zhuǎn)為str

print(keywords)


# 4、畫詞云


mask = np.array(Image.open("bg1.jpg"))#選擇詞云背景圖片

wordcloud = WordCloud(font_path="D:\simfang.ttf",background_color="white",width=1000,height=880,mask=mask,mode="RGBA").generate(keywords)

# 設(shè)置字體,不然會出現(xiàn)口字亂碼,文字的路徑是電腦的字體一般路徑,可以換成別的

? ? # keywords為字符串類型

plt.imshow(wordcloud,interpolation="bilinear")

plt.axis("off")

plt.show()

wordcloud.to_file("bg3.png")#生成的詞云圖片



運(yùn)行結(jié)果:

關(guān)鍵詞提取


詞云效果

好了,到這里,整個小實驗已經(jīng)完成了,我把完整的代碼給大家放在下面,直接cv:

注意:文本路徑,和topK的值(設(shè)置關(guān)鍵詞的個數(shù))大家按照自己情況更換。

完整代碼如下:


import matplotlib.pyplotas plt# 繪制圖像的模塊

import jieba.analyseas anls# 關(guān)鍵詞提取

import re

from collectionsimport Counter

from wordcloudimport WordCloud

import numpyas np

from PILimport Image

import jieba

'''功能描述:? 1、讀取文本? 2、分詞? 3、加載停用詞表? 4、去停用詞? 5、提取關(guān)鍵詞2種方法? 6、畫詞云展示'''

# 1、讀取文本

text =open("nba安東尼百度百科.txt",'r',encoding='utf-8').read()

# 加載停用詞表

stopwords = [line.strip()for linein open('stopWord_all.txt',encoding='UTF-8').readlines()]# list類型

# 分詞未去停用詞

text_split = jieba.cut(text)# 未去掉停用詞的分詞結(jié)果? list類型

# 去掉停用詞的分詞結(jié)果? list類型

text_split_no = []

for wordin text_split:

if wordnot in stopwords:

text_split_no.append(word)

# print(text_split_no)

text_split_no_str =' '.join(text_split_no)# list類型分為str

# 基于tf-idf提取關(guān)鍵詞

print("基于TF-IDF提取關(guān)鍵詞結(jié)果:")

keywords = []

for x, win anls.extract_tags(text_split_no_str,topK=20,withWeight=True):

keywords.append(x)# 前20關(guān)鍵詞組成的list

keywords =' '.join(keywords)# 轉(zhuǎn)為str

print(keywords)

# 畫詞云

mask = np.array(Image.open("bg1.jpg"))#選擇詞云背景圖片

wordcloud = WordCloud(font_path="D:\simfang.ttf",background_color="white",width=1000,height=880,mask=mask,mode="RGBA").generate(keywords)

# 設(shè)置字體,不然會出現(xiàn)口字亂碼,文字的路徑是電腦的字體一般路徑,可以換成別的

? ? # keywords為字符串類型

plt.imshow(wordcloud,interpolation="bilinear")

plt.axis("off")

plt.show()

wordcloud.to_file("bg3.png")#生成詞云圖片


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容