stopwords怎么用_用Python画词云图,展示“新冠肺炎”关键词

本教程介绍了如何利用Python的wordcloud和jieba库生成新冠肺炎相关材料的词云图。首先安装所需包,然后读取文本并进行分词。接着,生成词云图并演示如何设置停用词以及自定义词云形状。最后,调整词云图的背景颜色以适应不同的展示环境。
摘要由CSDN通过智能技术生成

第一步:安装相关包

主要有两个,一个是wordcloud,用来生成词云图,另一个是jieba,用来对我的文本进行分词。如果没有的话,就直接用pip在命令行里安装。

pip install wordcloudpip install jieba

安装完成后导入

from wordcloud import WordCloudimport jieba

第二步:读取文本并分词

我从网上下载了一份新冠肺炎的相关材料,并保存为“新冠肺炎.txt”,打开后如图所示:

0ba52b698e53e7954a7c7de4b8cb9181.png

新冠肺炎.txt

然后读取文件,并用jieba对文本进行分词:

with open('新冠肺炎.txt') as f:  # 读取文本    text = f.read()text = text.replace('', "")   # 将回车字符删除text_cut = jieba.lcut(text)     # 分词,每个词作为一个元素,放在列表里text_cut = ' '.join(text_cut)   # 用空格将分好的词连接在一起

第三步:生成词云图

word_cloud = WordCloud(font_path="simsun.ttc",    # 设置词云字体                       background_color="white",  # 词云图的背景颜色                       width=2000,                       height=1600)word_cloud.generate(text_cut)word_cloud.to_file('词云图.png')

运行上面代码后,就会生成一个“词云图.png”文件,打开后如图:

267a88f7a682226daf45caad17dec9db.png

词云图

第四步:额外操作

第一点,如果不想让一些词出现在词云图里怎么办,比如我不想出现“人员”、“工作”、“直接”、“根据”、“或者”这五个词,那么就将它们作为停用词,并传给WordCloud类中stopwords参数。

# 制造停用词stopwords_list = ['人员', '工作', '直接', '根据', '或者']my_stopwords = set(STOPWORDS)     # 这里的STOPWORDS是从wordcloud导入的一个变量for i in stopwords_list:    my_stopwords.add(i)# 使用WordCloud生成词云word_cloud = WordCloud(font_path="simsun.ttc",    # 设置词云字体                       background_color="white",  # 词云图的背景颜色                       width=2000,                       height=1600,                        stopwords=my_stopwords)    # 停用词word_cloud.generate(text_cut)word_cloud.to_file('词云图.png')

现在将生成的图片打开,就看不到被停用的词啦:

79c1d51479b9f071e3fd464f9041d0ae.png

去停用词后词云图

第二点,如何让词云图具有某种形状,比如我想让我的词云图呈现出一个口罩的形状,那就要准备好一个口罩图片,我将其命名为“N95.jpg”,如图:

635ca46ca54d8b2f6905a28bf80ce8a7.png

N95,jpg

然后读取图片,并将其转成numpy数组格式,传给WordCloud类中的mask参数。

# 加入图片background = Image.open("N95.jpg")   #from PIL import Image 没有的话,就用pip install pillow安装PIL包graph = np.array(background)   # import numpy as np 这没啥可说的# 使用WordCloud生成词云word_cloud = WordCloud(font_path="simsun.ttc",    # 设置词云字体                       background_color="white",  # 词云图的背景颜色                       width=2000,                       height=1600,                       stopwords=my_stopwords,    # 停用词                       mask=graph)                # 词云图的形状   word_cloud.generate(text_cut)word_cloud.to_file('词云图.png')

现在生成的词云图就具有口罩的形状啦:

87a9f3275fa20735d3b0b715585d0b28.png

口罩形状词云图

第三点,WordCloud类中的background_color参数默认值是black,但我在本文中使用的是white,因为头条文章的背景色就是白色,这样显得与背景色比较相融。该参数使用的原则就是尽量与我们大环境的背景色相同,如果使用默认的black,效果如下:

bdb1828c951153f8a586ab2076e5bc9b.png

黑色背景词云图


关注微信公众号“Python小镇”,发现更多干货知识!

回答: 好的,您可以使用Python中的wordcloud库来绘制中文词云图。首先需要安装中文字体,可以使用如下代码: ```python import matplotlib from matplotlib.font_manager import FontManager import subprocess fm = FontManager() mat_fonts = set(f.name for f in fm.ttflist) output = subprocess.check_output( 'fc-list :lang=zh -f "%{family}\n"', shell=True) # print ‘\n’.join(output.decode(‘utf-8’).split(‘\n’)) zh_fonts = set(f.split(',', 1)[0] for f in output.decode('utf-8').split('\n')) available = mat_fonts & zh_fonts matplotlib.rcParams['font.family'] = list(available)[0] ``` 然后使用jieba库分词,统计每个词语出现的次数,最后生成词云图。可以使用如下代码: ```python import jieba from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator import matplotlib.pyplot as plt import numpy as np from PIL import Image # 读取文本文件 text = open("example.txt", "r", encoding="utf-8").read() # 分词 cut_text = jieba.cut(text) result = " ".join(cut_text) # 设置停用词,增加或删除停用词列表中的词 stopwords = set(STOPWORDS) stopwords.add("说道") stopwords.add("眼前") stopwords.add("两人") stopwords.add("只见") # 读取图片文件 mask = np.array(Image.open("example.jpg")) # 生成词云图 wc = WordCloud(background_color="white", max_words=2000, mask=mask, stopwords=stopwords, max_font_size=80, random_state=42) wc.generate(result) # 显示词云图 plt.imshow(wc, interpolation="bilinear") plt.axis("off") plt.show() # 保存词云图 wc.to_file("example.png") ``` 通过分析生成的词云图,可以了解文本中的关键词和热点话题。例如,如果生成的词云图中出现了“疫情”、“防护”等词汇,说明该文本与新冠病毒防控相关。如果出现了“旅游”、“美食”等词汇,则说明该文本与旅游美食相关。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值