【Python】生成词云图太简单了|拿来就用能的词云图代码

这篇具有很好参考价值的文章主要介绍了【Python】生成词云图太简单了|拿来就用能的词云图代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 词云简介

词云也叫文字云,是一种可视化的结果呈现,常用在爬虫数据分析中,原理就是统计文本中高频出现的词,过滤掉某些干扰词,将结果生成一张图片,直观的获取数据的重点信息。今天,我们一起来学习一下Python生成词云的常用库「wordcloud」

wordcloud是第三方库,需要提前下载安装。

安装: pip install wordcloud

 wordcloud 对象有很多参数设定,设定不同的参数,可以绘制不同形状、颜色和尺寸的词云图。


2 WordCloud对象常用参数 

参数 说明
font_path 设置字体,指定字体文件的路径
width 生成图片宽度,默认400像素
height 生成图片高度,默认200像素
mask 词云形状,默认使用矩形
min_font_size 词云中最小的字体字号,默认4号
font_step 字号步进间隔,默认1
max_font_size 词云中最大的字体字号,默认根据高度自动调节
max_words 词云显示的最大词数,默认200
stopwords 设置停用词(需要屏蔽的词),停用词不在词云中显示,默认使用内置的STOPWORDS
background_color 图片背景颜色,默认黑色

3 WordCloud常用方法 

方法 功能
generate(text) 加载词云文本
to_file(filename) 输出词云文件

 wordcloud默认是为了英文文本来做词云的,如果需要制作中文文本词云,就需要先对中文进行分词。这里就需要用到中文分词库「jieba」


4 jieba 分词库

jieba 是优秀的中文分词库,需要安装。它的原理是利用一个中文词库,确定中文字符之间的关联概率,汉字间概率大的组成词组,形成分词结果,除了分词,还可以添加自定义词组。

安装:pip install jieba

jieba有三种分词模式,这里我们只学习它的精确模式,把文本精确地切分开,不存在冗余单词。

使用jieba.lcut(s),返回列表型分词结果。当然,也可以使用jieba.add_word(w)向jieba库中增加词语。


5 使用wordcloud生成词云的步骤

  • 读取文件,分词整理,生成词云文本
  • 配置wordcloud对象参数,加载词云文本
  • 计算词频,输出词云文件

6 词云案例

        --- 爬取最近很火的一部电影《芭比》的影评数据,生成词云图。 

1)生成文本文件 

        获取豆瓣电影网站10页短评数据,保存到文本中。

代码如下:

import requests
from lxml import etree
import time
import random

# 通过观察url翻页的规律,使用for循环得到10个链接,保存到urls列表中
urls = ['https://movie.douban.com/subject/4058939/comments?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for
        i in range(0, 200, 20)]
# print(urls)
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
# 初始化用于保存短评的列表
comments_list = []
# 使用for循环遍历获取每个页面的数据,保存到comments_list列表中
for url in urls:
    resp = requests.get(url=url, headers=headers).text
    html = etree.HTML(resp)
    data_list = html.xpath('//div[@id="comments"]/div[@class="comment-item "]')
    # page_list用于保存同一页面内的所有评论
    page_list = []
    for data in data_list:
        comment = data.xpath('./div[2]/p/span/text()')[0]
        page_list.append(comment)
    # print(page_list)
    comments_list.extend(page_list)
    # 让程序随机睡眠0~3秒,避免速度过快被反爬
    time.sleep(random.randint(0, 3))
print("共获取电影《芭比》的短评条数:", len(comments_list))

with open('movie_comments.txt', 'w', encoding='utf-8') as f:
    # 将列表中的数据逐条写入到文本文件中
    for comment in comments_list:
        f.write(comment + "\n")

 2)生成基本的词云

        读取第一步中的文本文件,生成词云图。

 代码如下:

import jieba
import wordcloud

# 读取文本
with open("movie_comments.txt", encoding="utf-8") as f:
    s = f.read()
# print(s)
# 生成分词列表
list_s = jieba.lcut(s)
# print(ls)
# 用空格连接成字符串文本
text = ' '.join(list_s)
# print(text)
# 将不需要显示的词整理好后,放入stopwords中
stopwords = ["是", "的", "了", "啊"]
# 创建词云对象
wc = wordcloud.WordCloud(font_path="msyh.ttc",
                         width=1000,
                         height=700,
                         background_color='white',
                         max_words=100,
                         stopwords=stopwords)
# msyh.ttc是电脑本地字体,也可以写成绝对路径,字体也可以根据需求换其他字体文件
wc.generate(text)   # 加载词云文本
wc.to_file("芭比comments.png")  # 保存词云图文件

词云图效果如下:

python词云图,从零开始学习Python开发,python,开发语言,中文分词

 3)添加蒙版图片的词云图

可以将有白色背景的图片作为蒙版图片,而有图案的地方会被词云填充。

添加蒙版图片需要使用PIL库和numpy库,需提前下载安装。

本案例添加蒙版图片如下:

 文章来源地址https://www.toymoban.com/news/detail-714578.html

python词云图,从零开始学习Python开发,python,开发语言,中文分词

 代码如下:

from wordcloud import WordCloud
from PIL import Image
import numpy as np
import jieba

# 打开文本
with open("movie_comments.txt", encoding="utf-8") as f:
    s = f.read()

# 中文分词
text = ' '.join(jieba.cut(s))

# 打开蒙版图片,生成Image对象
img = Image.open("img/chicken.jpg")  # 打开遮罩图片
# 生成蒙版
mask = np.array(img)   # 将图片转换为数组
# 整理不需要显示的词
stopwords = ["的", "是", "了", "在", "也", "和", "就", "都", "这", "你", "我", "她"]
# 生成WordCloud词云对象,并加载text字符串文本
wc = WordCloud(font_path="msyh.ttc",
               mask=mask,
               width=1000,
               height=800,
               background_color='white',
               max_words=200,
               stopwords=stopwords).generate(text)

# 保存词云图到文件
wc.to_file("芭比comments.png")

词云图效果如下:

python词云图,从零开始学习Python开发,python,开发语言,中文分词 

 

到了这里,关于【Python】生成词云图太简单了|拿来就用能的词云图代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python学习之10行代码制作炫酷的词云图(匹配指定图形形状)

    想必大家有一个问题:什么是词云呢? 词云又叫名字云,是对文本数据中出现频率较高的“”在视觉上的突出呈现,形成的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。 网页上有许多词云的效果图: python代码运行需要安装第

    2024年02月09日
    浏览(42)
  • 不是吧,阿sir,还有人不会制作影院订票系统前端页面吗?(拿来就用)

    引言:   大家好,欢迎来到我的博客。五一假期就快到了,你们准备怎么安排假期活动呢?要不去看一场电影来缓解一下枯燥的学习生活?😝说起电影,就离不开中国内地电影票房冠军《长津湖》。那么今天,我们就来制作一个影院订票系统前端页面,如有错误之处,欢

    2023年04月15日
    浏览(67)
  • Kibana 8.X 如何做出靠谱的词云图?

    Kibana 实现一个词云效果并不复杂,甚至可以说非常简单。 大致可以分成如下几个步骤: 步骤1:已有索引待做词云的 text 类型字段设置:fielddata 为true,以便基于分词结果聚合操作。 步骤2:在 8.X 的 kibana 的 Data Views关联索引。 步骤3:在dashboard控制面板选择 Aggregation Based 下

    2023年04月08日
    浏览(32)
  • python怎么生成词云图

    词云图又称文字云,是信息可视化的表现形式之一。词云是把文本中出现频率较高的进行视觉上的突出显示,形成云层或渲染,从而过滤掉大量的文本信息。读者可以快速领略文本的主旨。 相对柱状图、折线图、饼图等用来显示数据的图表,词云图可以展

    2024年02月07日
    浏览(19)
  • 使用Python将《青花瓷》歌词生成词云图

    哈喽大家好,因为上次有小伙伴问我,歌曲的歌词和评论怎么生成词云图,想买代码… 当时我就拒绝了,直接免费送给了他。 所以今天来分享给大家 我们以周董的《青花瓷》为例,要对《青花瓷》歌词生成词云图,需要采取以下步骤: 安装所需的库 要完成该任务,需要安

    2024年02月07日
    浏览(27)
  • 简单的用Python采集下微博评论,制作可视化词云图

    简单的用Python来获取微博评论,制作词云图。 环境使用 Python 3.8或以上版本即可 Pycharm 任意版本 模块使用   以上三个模块都需要安装,直接pip install 加上模块名安装即可。 一. 数据来源分析 明确需求: 明确采集的网站以及数据内容 - 网址: https://weibo.com/2803301701/NxcPMvW2l - 数据

    2024年02月04日
    浏览(34)
  • 自然语言处理中的词云生成

    自然语言处理中的词云技术是文本可视化的一种形式,用于展示文本数据中词语的频率分布。以下是词云在自然语言处理中的基本介绍和发展: 起源和发展: 词云的概念最初来源于信息可视化领域,用于将文本中的以视觉方式呈现。在自然语言处理中,词云得到了广

    2024年01月22日
    浏览(38)
  • 大牛分享,提高工程性能的7个简单技巧

    软件性能和弹性(恢复能力)是用户体验的关键组成部分,但随着软件行业采用DevOps,它开始在性能和弹性方面出现不足。在软件完全失败之前,性能问题经常被忽略。 但是,我们都知道性能不会突然降低。随着软件通过迭代发布,每次添加更多代码时都会产生性能成本,以

    2024年02月09日
    浏览(22)
  • SpringBoot最简单好用的导出导入功能,拿来即用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:粘贴即可用 SpringBoot 项目整合的导入导出接口。 项目pom.xml 文件添加依赖,编写封装类即可。依赖、导入导出的封装类以及使用方法,以下文章都会一一列举,十分方便,已经经过测试,复制粘贴

    2024年02月05日
    浏览(59)
  • 全站最简单 “数据滚动可视化大屏” 【JS基础拿来即用】

      源码获取方式: 数据滚动大屏源码,原生js实现超级简单-Javascript文档类资源-CSDN下载 原生js实现的数据滚动大屏案例,实现应该是全网最简单的,拿来直接使用即可,没有会员的小伙伴去我文章主更多下载资源、学习资料请访问CSDN下载频道. https://download.csdn.net/download/wei

    2024年01月18日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包