哪做网站便宜,网站开发和手机开发哪个好,wordpress官网打不开,青海省建设厅查询网站一、前言
本文将介绍如何利用python来根据文本数据#xff08;.txt文件#xff09;绘制词云图#xff0c;除了绘制常规形状的词云图#xff08;比如长方形#xff09;#xff0c;还可以指定词云图的形状。
二、相关库的介绍
1、安装相关的库
pip install jieba
pip i…一、前言
本文将介绍如何利用python来根据文本数据.txt文件绘制词云图除了绘制常规形状的词云图比如长方形还可以指定词云图的形状。
二、相关库的介绍
1、安装相关的库
pip install jieba
pip install matplotlib
pip install wordcloud
pip install numpy
pip install Image 2、 导入相关的库
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
import numpy as np
from PIL import Image # 图像处理3、 相关库的介绍 jieba 结巴分词库一个中文分词库。由于中文文本的每个汉字都是连续书写的因此需要对文本进行分词来获得中文文本的每个词组即分词。 matplotlib.pyplot 图像展示库。用来创建画布以及相关的图像展示。在绘图前需要创建一个figure对象即需要一张画板才能开始绘图。 wordcloud 词云展示库可以根据文本的词频,对内容进行词云图的可视化。 numpy numpy是Python的一个开源的数值计算扩展库主要用于处理大型多维数组和矩阵以及进行高效的数学运算广泛应用于数据分析、机器学习、信号处理等领域。 Image Image模块是一个强大的图像处理工具提供了对图像文件的读写和处理的功能。也提供了各种功能和方法来处理和操作图像包括加载、保存、调整大小、旋转、裁剪、应用滤镜等。
三、数据处理
1、中文分词
中文分词可以将中文语句切割成单独的词组中文分词的工具有很多比如 python 的第三方库 jiebajieba 支持三种分词模式全模式、精确模式、搜索引擎模式。结巴分词最主 要的方法是 cut 方法
1精确模式
试图将句子最精确地切开适合文本分析结巴分词默认为该模式
jieba.cut(文本内容,cut_allFalse)2全模式
把句子中所有可以成词的词语都扫描出来速度很快但是不能解决歧义
jieba.cut(文本内容,cut_allTrue)3搜索引擎模式
在精确模式的基础上对长词再次切分提高召回率
2、去除停用词
对中文来说包括像“的”、“和”、“在”、“是”等副词、量词、介词、叹词、数词都是停用词。这些词汇几乎在所有中文文本都会出现不具有特殊性,没有区分度所以通常会把这些词从文本中去除去除停用词需要一个停词表stopword.txt将分词后的文本中每个词与停词字典中的条目进行匹配。如果匹配成功该词将被删除直接百度搜索停词表并下载就好了 由于本文用到的数据集的文本内容比较简单因此没有执行去除停用词这一步的操作
四、实现
1、绘制基本词云图
1核心
在以下代码中根据实际更改文件的读取路径以及保存路径即可
2WordCloud 参数解释
参数解释
参数解释width词云图的宽度默认400像素height词云图的高度默认200像素max_font_size词云图字体的最大字号根据图片高度自动调节min_font_size词云图字体的最小字号默认为4号字体max_words词云图显示的最大单词数默认200stop_words不显示的词语、单词mask指定词云图的形状默认为长方形background_color词云图的背景颜色默认为黑色font_path字体文件的路径
如果文本是中文的需要设置字体否则会乱码
font_path C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc3完整代码
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud# 读取文本文件
text open(rC:\Users\abc\Desktop\词云图数据\grape.txt, encodingutf-8).read()
# 对文本进行分词默认精确模式
text1jieba.cut(text)
# 以空格作为分隔符将分词后的所有字符串合并成一个新的字符串
text .join(text1)
# 根据分词结果产生词云
wc WordCloud(font_path C:\Windows\Fonts\Microsoft YaHei UI\msyh.ttc,width500, height400, modeRGBA, background_colorNone).generate(text)
# 以图片的形式显示词云
plt.imshow(wc, interpolationbilinear)
# 不显示图像坐标系
plt.axis(off)
# 显示图像
plt.show()
#保存词云图
wc.to_file(r\Users\abc\Desktop\res.png)以陈奕迅《葡萄成熟时》的歌词作为文本数据词云图的结果如下
2、绘制指定形状的词云图
有时候需要指定词云图的形状我们可以通过导入背景图片作为词云图的底图来实现注意背景图片的背景一定要是白色的不可以是其他颜色或者透明以下面的葡萄图片作为背景图片
1核心代码
需要使用numpy库以及Image库来对背景图片进行图像处理 词云图的结果如下
2词云图优化
我们可以给背景图的轮廓进行清晰化比如给轮廓添加粗度和颜色 优化后的词云图如下
3完整代码
import wordcloud
import jieba
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image # 图像处理#打开背景图片
pic Image.open(grape.jpg)
# 提取图片的轮廓
shape np.array(pic)
# mask为图片背景font_path为字体若不设置可能乱码
wc wordcloud.WordCloud(maskshape, font_pathsimkai.ttf, background_colorwhite, contour_colorpurple,contour_width3,
max_font_size100)
#读取要分词的文本文件
text open(rC:\Users\abc\Desktop\词云图数据\grape.txt, r, encodingUTF-8).read()
#结巴分词
cut_text jieba.cut(text)
result .join(cut_text)
#生成词云图
wc.generate(result)
#保存词云图
wc.to_file(cloud.jpg)
# 以图片的形式显示词云
plt.imshow(wc, interpolationbilinear)
# 不显示图像坐标系
plt.axis(off)
# 显示图像
plt.show()