我们开门见山,从6个步骤实现词云 ,包括:1、读取文本 2、分词 3、加载停用词表 4、去停用词 5、提取关键词2 6、词云展示 。
本节内容所用到的小文本数据集和停词表,我会提供给大家。那么话不多说,开始吧。
小文本数据集链接:百度网盘 请输入提取码 提取码:9527
停词表:最全中文停用词表整理(1893个)_Dorisi_H_n_q的博客-CSDN博客_中文停用词 将里面的词全部复制放在txt文档中,取名stopWord_all.txt
生成词云背景图:bg1.png 大家自行保存。
完整代码也在文章末尾给出,不需要看每一步具体的流程的童鞋可以直接在末尾cv代码。
第一步:下载并 导python库包
代码如下:直接复制粘贴即可
import matplotlib.pyplotas plt# 绘制图像的模块
import jieba.analyseas anls# 关键词提取
import re
from collectionsimport Counter
from wordcloudimport WordCloud
import numpyas np
from PILimport Image
import jieba
代码复制后,要装上相应的库 在pycharm中点击 file->setting 找到这里进行安装库,(不再详细介绍,如果有小白不会下载安装库,可以留言)
第二步:读取文本+分词+去停用词+词频统计+词云生成
# 1、读取文本
text =open("nba安东尼百度百科.txt",'r',encoding='utf-8').read()
stopwords = [line.strip()for linein open('stopWord_all.txt',encoding='UTF-8').readlines()]# 加载停用词表,停用词表的路径,按照自己写的设定。
# 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提取关键词
print("基于TF-IDF提取关键词结果:")
keywords = []
for x, win anls.extract_tags(text_split_no_str,topK=20,withWeight=True): #topK是设置关键词的个数
keywords.append(x)# 前20关键词组成的list
keywords =' '.join(keywords)# 转为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)
# 设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
# keywords为字符串类型
plt.imshow(wordcloud,interpolation="bilinear")
plt.axis("off")
plt.show()
wordcloud.to_file("bg3.png")#生成的词云图片
运行结果:
好了,到这里,整个小实验已经完成了,我把完整的代码给大家放在下面,直接cv:
注意:文本路径,和topK的值(设置关键词的个数)大家按照自己情况更换。
完整代码如下:
import matplotlib.pyplotas plt# 绘制图像的模块
import jieba.analyseas anls# 关键词提取
import re
from collectionsimport Counter
from wordcloudimport WordCloud
import numpyas np
from PILimport Image
import jieba
'''功能描述: 1、读取文本 2、分词 3、加载停用词表 4、去停用词 5、提取关键词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)# 未去掉停用词的分词结果 list类型
# 去掉停用词的分词结果 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提取关键词
print("基于TF-IDF提取关键词结果:")
keywords = []
for x, win anls.extract_tags(text_split_no_str,topK=20,withWeight=True):
keywords.append(x)# 前20关键词组成的list
keywords =' '.join(keywords)# 转为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)
# 设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
# keywords为字符串类型
plt.imshow(wordcloud,interpolation="bilinear")
plt.axis("off")
plt.show()
wordcloud.to_file("bg3.png")#生成词云图片