我想词云应该是能经常见到的,但若要生成一份词云出来,则大多需要到一些付费网站去。因此,这里有一份python的词云代码,若在用时只需要简单更改文件名称、路径什么的就可以重复且免费使用了。
在这篇文章中,我将先给出词云的python代码,然后是它的解释以及流程图,然后是对它进行改进而有了形状的词云的代码部分。
一、词云代码
那么我首先先给出最基础的python代码:
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 指定微软雅黑字体的路径
font_path = r'C:\Users\20349\Desktop\wordCloud\STLITI.TTF'
# 读取停用词文件
with open(r'C:\Users\20349\Desktop\wordCloud\stopWords.txt', 'r', encoding='utf-8') as f1:
stopList = set(line.strip() for line in f1)
# 读取文本文件
with open(r'C:\Users\20349\Desktop\wordCloud\python.txt', 'r', encoding='utf-8') as f2:
text = f2.read()
# 使用 jieba 分词,并过滤掉停用词和长度为1的词语
word_ls = [w for w in jieba.cut(text) if w not in stopList and len(w) > 1]
# 将分词结果转换为词频字典
word_freq_dict = {word: word_ls.count(word) for word in set(word_ls)}
# 创建词云对象
wordcloud = WordCloud(
font_path=font_path, # 指定字体路径
width=512, height=512,
mode='RGBA',
background_color=None,
stopwords=stopList
)
# 从词频字典生成词云
wordcloud.generate_from_frequencies(word_freq_dict)
# 显示词云
plt.figure(figsize=(15, 10))
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()
# 保存词云图片
wordcloud.to_file(r'C:\Users\20349\Desktop\wordCloud\wordCloud1.0.png')
这是我用AI给我生成的一段关于介绍python语言的文章而生成的词云:
二、解释以及流程图
词云其实就是根据词语在文章中出现的频次而在词云中以不同的大小出现,而如何计算这个频次,自然就是用python中的字典还有停用词库,在计算好后则用词云的专门的函数来生成,并将结果用matplotlib展示出来并以.png的形式保存。(当然,也可以用.jpg的形式来保存,但是如果改用.jpg后则必须要给背景以颜色,白、蓝、黑亦或其他什么色彩)
那么,接下来就是代码的流程图部分:
接下来,我再对WordCloud()函数简单说明下,在这个函数中,我目前一共用到了五类参量:
第一个是来对词云中字体的形式经行确认的参量,它指向的是一个以.ttf为结尾的文件路径,如果你想对一篇中文文章进行词云的生成,但是这个字体中没有包含中文,那么最后词云生成的会是失败的,即使它可能不报错,但它生成的会是一片空白,当然,若是其他语言的文字没有用相关的.ttf文件结果是一样的,比如日语、韩语、泰语等;
第二类参量是生成词云的长与宽,这个变量依你需求而定,但若要是在接下来的固定词云图像中,则一定要与遮盖图像大小相当;
第三类就是生成词云的文字的颜色,其中的'RGBA'的含义就是代表带有透明通道的彩色图像,其中每个像素由四个值组成:红色(Red)、绿色(Green)、蓝色(Blue)以及透明(Alpha)。
第四类是背景色,在这里,我用了None,即是无色,而根据需求还可以改为white、blue等;
第五类是停用词库,也称为停词列表,在自然语言处理(NLP)中是一种常见的预处理步骤。它包含了一系列非常常见但通常不携带太多实际意义的词汇,例如“的”、“了”、“是”等这些词语在中文中,或者“the”、“is”、“and”等在英文中。这些词语在文本中频繁出现,但在分析语义内容时往往并不重要,甚至可能会干扰文本分析的结果。
三、词云形状的改进
如果我们需要对词云的形状改进,让它在一个爱心内或是其他什么图案时就需要用到imread()函数,这个函数在早期的matplotlib库中就有但现在没有了,所以需要下载imegaion库。
有时,我们可能生成的词云并没有按照我们指定的图案,这时大多是因为我们要生成的词云的长宽和指定图形的.jpg文件的长宽不一,或是.jpg文件的灰度什么有问题,更改这些数值即可解决。
这是更进后的部分代码:
# 创建词云对象
wordcloud = WordCloud(
font_path=font_path, # 指定字体路径
mask=imageio.v2.imread(r'C:\Users\20349\Desktop\wordCloud\heart.jpg'),
width=512, height=512,
mode='RGBA',
background_color=None,
stopwords=stopList
)
如果我以这个黑心图案为例:
那么我以上述代码生成的wordcloud2.0.png就是这样的:
(因为我用的是无背景色,且电脑处于黑夜模式下,所以背景色为黑色)
此上