Python案例实操2-词云生成

Python案例实操2-词云生成


案例2:根据案例1爬取到的豆瓣电影Top250数据,将电影的一句话概述信息,生成一个词云图片

使用到的技术模块

  • wordcloud 词云处理
  • jieba 分词
  • matplotlib 绘图, 数据可视化
  • PIL.Image 图片处理
  • numpy 矩阵运算
  • sqlite3 数据库连接
  1. 准备词云所需的文字,从moive表中查找所有电影的一句话描述,拼接成字符串
conn = sqlite3.connect("movie.db")
cur = conn.cursor()
sql = "select desc from movie"
data = cur.execute(sql)
text = ""
for item in data:
    text = text + item[0]
cur.close()
conn.close()
  1. 使用jieba分词
# 分词
cut = jieba.cut(text)
str = " ".join(cut)
print("分词个数:", len(str))
  1. 中文分词里,不能直接使用wordcloud中的STOPWRODS,需要单独配置中文停用词,可以从网上复制下载
# 设置中文停用词 从文件中读取屏蔽词
stopwords = set()
content = [line.strip() for line in open(r'static/txt/stopwords.txt', 'r', encoding="utf-8").readlines()]
stopwords.update(content)
  1. 设置词云的遮罩图片
# 设置遮罩图片
img = Image.open(r'./static/assets/img/tree.jpg')  # 打开遮罩图片,图片背景为白色
img_arr = np.array(img)  # 将图片转为数组格式

遮罩图片可以随意,注意北背景为白色即可Python案例实操2-词云生成

  1. 封装词云
# 封装词云
wc = WordCloud(
    background_color="white",
    mask=img_arr,
    font_path="simkai.ttf",  # 字体 C:\Windows\Fonts
    stopwords=stopwords  # 过滤停用词
)
wc.generate_from_text(str)
  1. 绘制图片
# 绘制图片
fig = plt.figure(1)
plt.imshow(wc)
plt.axis("off")  # 是否显示坐标轴
# plt.show()  # 显示生成的词云图片
# 输出词云图片到文件 默认dpi为400
plt.savefig(r'./static/assets/img/word.jpg', dpi=450)
  1. 大功告成.效果图如图Python案例实操2-词云生成
  2. 附上完整代码 test_wordcloud.py
import jieba  # 分词
import matplotlib.pyplot as plt  # 绘图, 数据可视化
from wordcloud import WordCloud  # 词云
from PIL import Image  # 图片处理
import numpy as np  # 矩阵运算
import sqlite3

# 准备词云所需的文字
conn = sqlite3.connect("movie.db")
cur = conn.cursor()
sql = "select desc from movie"
data = cur.execute(sql)
text = ""
for item in data:
    text = text + item[0]
cur.close()
conn.close()

# 分词
cut = jieba.cut(text)
str = " ".join(cut)
print("分词个数:", len(str))

# 设置中文停用词 从文件中读取屏蔽词
stopwords = set()
content = [line.strip() for line in open(r'static/txt/stopwords.txt', 'r', encoding="utf-8").readlines()]
stopwords.update(content)

# 设置遮罩图片
img = Image.open(r'./static/assets/img/tree.jpg')  # 打开遮罩图片,图片背景为白色
img_arr = np.array(img)  # 将图片转为数组格式

# 封装词云
wc = WordCloud(
    background_color="white",
    mask=img_arr,
    font_path="simkai.ttf",  # 字体 C:\Windows\Fonts
    stopwords=stopwords  # 过滤停用词
)
wc.generate_from_text(str)

# 绘制图片
fig = plt.figure(1)
plt.imshow(wc)
plt.axis("off")  # 是否显示坐标轴
# plt.show()  # 显示生成的词云图片
# 输出词云图片到文件 默认dpi为400
plt.savefig(r'./static/assets/img/word.jpg', dpi=450)

本案例数据是案例1中通过网络爬虫获取到的数据

Python案例实操1-网络爬虫

上一篇:JavaScript 基础6


下一篇:前端_运动的魔方