1/26
# 导入所需的库
import jieba # 用于中文分词
import matplotlib # 用于绘图
matplotlib.use('Agg') # 使用非交互式后端,适合保存图片而不显示
from matplotlib import pylab as plt # 导入 matplotlib 的绘图模块
from wordcloud import WordCloud # 导入词云生成库
import numpy as np # 用于处理数组
from PIL import Image # 用于图像处理
from utils.query import querys # 假设这是一个自定义模块,用于执行数据库查询
# 定义生成词云图的函数
def get_img(targetImageSrc, resImage):
# 从数据库中查询商品标题
data = querys('select title from commoditydata', [], 'select')
# 初始化一个空字符串,用于存储所有商品标题
text = ''
for i in data:
if i[0] != '':
tagArr = i
for j in tagArr:
text += j
# 使用 jieba 进行中文分词,精确模式(cut_all=False)
data_cut = jieba.cut(text, cut_all=False)
# 将分词结果拼接成一个长字符串
string = ''.join(data_cut)
# 打开遮罩图片(用于词云形状)
img = Image.open(targetImageSrc)
# 将遮罩图片转换为 NumPy 数组
img_arr = np.array(img)
# 初始化 WordCloud 对象
wc = WordCloud(
font_path='STHUPO.TTF', # 指定字体路径,用于支持中文显示
mask=img_arr, # 使用遮罩图片的形状
background_color='#010105', # 设置词云背景颜色
)
# 根据分词结果生成词云
wc.generate_from_text(string)
# 创建一个绘图对象
fig = plt.figure(1)
# 显示词云图片
plt.imshow(wc)
# 关闭坐标轴
plt.axis('off')
# 保存词云图片到指定路径
plt.savefig(resImage, dpi=800, bbox_inches='tight', pad_inches=-0.1)
# 调用函数,生成词云图
get_img('./static/cloudMask.jpg', './static/cloudImg/cloudgoods')