? ? ? 我們開門見山,從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é)果:


好了,到這里,整個小實驗已經(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")#生成詞云圖片