python绘制词云图

词云图是文本分析中比较常见的一种可视化手段,将出现频率相对高的词字体相对变大,让重点词,关键词一目了然

主要用到了python的两个库:wordcloud和jieba,直接pip安装即可

jieba主要用于中文分词,wordcloud主要用于统计词频和绘图
jieba分词:

import jieba
s = "一身男儿血,满腔报国志"
print("精准模式:" + '|'.join(jieba.cut(s)))
print("全模式:" + '|'.join(jieba.cut(s, cut_all=True)))
print("搜索引擎模式:" + '|'.join(jieba.cut_for_search(s)))

输出:

精准模式:一身|男儿|血|,|满腔|报国志
全模式:一身|男儿|血|,|满腔|报国|报国志
搜索引擎模式:一身|男儿|血|,|满腔|报国|报国志

这里还可以设置自定义词典,比如“一身男儿血”不能进行分割,我们可以将“一身男儿血”放入自定义词典

自定义词典的格式:一个词占一行,比如我们设置的dict.txt是

import jieba
s = "一身男儿血,满腔报国志"
jieba.load_userdict('dict.txt')
print("精准模式:" + '|'.join(jieba.cut(s)))
print("全模式:" + '|'.join(jieba.cut(s, cut_all=True)))
print("搜索引擎模式:" + '|'.join(jieba.cut_for_search(s)))

输出:

精准模式:一身男儿血|,|满腔|报国志
全模式:一身|一身男儿血|男儿|血|,|满腔|报国|报国志
搜索引擎模式:一身|男儿|一身男儿血|,|满腔|报国|报国志

首先我们找一张图片,如:

准备一段文字,可以是字符串,也可以是写在文件里面的,写在文件内的需要读取出来,然后在用jieba进行分词,如果是分好的词,可以直接进行使用
代码:

import jieba
import numpy as np
import PIL.Image as Image
from wordcloud import WordCloud

text = '''
世界上最简单、有最重要的东西是什么?——是数字。
0到9九个数字,支撑起了人类的科学大厦。0和1两个数字,
构建了无边无际的互联网世界。5G、大数据、人工智能、
工业互联网……“新基建”将推动我国步入下一个发展周期,
背后的本质是0和1。再来看一串数字:14万所学校,
300万个班级,1.3亿学生,全国3亿人。
这是钉钉最新发布的“在线上课”数据和总的用户数据。
这串数字的背后,仍是0和1。没有0和1,就没有中国的抗疫胜利,
社会就要停滞,经济就要崩溃。
'''

word_list = jieba.cut(text)
space_word_list = ' '.join(word_list)
print(space_word_list)
# 调用包PIL中的open方法,读取图片文件,通过numpy中的array方法生成数组
mask_pic = np.array(Image.open("1.png"))
word = WordCloud(
    font_path='C:/Windows/Fonts/simfang.ttf',  # 设置字体,本机的字体
    mask=mask_pic,  # 设置背景图片
    background_color='white',  # 设置背景颜色
    max_font_size=150,  # 设置字体最大值
    max_words=2000,  # 设置最大显示字数
    stopwords={'的'}  # 设置停用词,停用词则不在词云途中表示
                 ).generate(space_word_list)
image = word.to_image()
word.to_file('2.png')  # 保存图片
image.show()

结果:

原文地址:https://www.cnblogs.com/hziwei/p/12919143.html