ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python案例实操2-词云生成

2022-01-31 22:36:04  阅读:234  来源: 互联网

标签:plt img Python text stopwords 词云 实操 图片


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)  # 将图片转为数组格式

遮罩图片可以随意,注意北背景为白色即可在这里插入图片描述

  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. 大功告成.效果图如图在这里插入图片描述
  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-网络爬虫

标签:plt,img,Python,text,stopwords,词云,实操,图片
来源: https://blog.csdn.net/weixin_45698637/article/details/122761758

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有