如何画一个词云 | python小知识

简介: 词云,又称文字云,是文本数据的视觉表示,通过将网络文本或大量文本数据中出现频率较高的“关键词”以不同大小的字体、颜色或形状进行可视化展示,形成类似云的彩色图形。这种视觉上的突出使得浏览者能够一眼扫过文本就领略到文本的主旨,是数据可视化的一种重要形式 【7月更文挑战第6天】

如何画一个词云 | python小知识

什么是词云

yyq-2024-07-28-08-37-17.png
yyq-2024-07-28-08-37-43.png

词云的概念

词云,又称文字云,是文本数据的视觉表示,通过将网络文本或大量文本数据中出现频率较高的“关键词”以不同大小的字体、颜色或形状进行可视化展示,形成类似云的彩色图形。这种视觉上的突出使得浏览者能够一眼扫过文本就领略到文本的主旨,是数据可视化的一种重要形式。

词云的应用场景

词云在多个领域有着广泛的应用,主要包括以下几个方面:

  1. 数据可视化:词云可以通过直观的方式展示大量文本数据的主题和关键词,帮助人们更好地理解和分析数据。
  2. 情感分析:通过制作词云,研究人员或决策者可以快速了解某个主题或文本中情感分析的结果,如消费者对产品的评价、公众对某事件的态度等。
  3. 舆情监测:词云用于监测网上的舆情,通过分析社交媒体和新闻等数据中出现频率较高的词语,了解公众对某个话题的关注和态度。
  4. 营销和品牌推广:词云可以帮助企业了解消费者对其品牌的印象和关注点,从而优化营销策略和品牌形象。
  5. 教育和培训:词云可以被用于教育和培训领域,帮助学生和员工更好地理解和记忆关键概念和知识点。

词云生成的技术原理

词云生成的基本原理是基于文本中每个词的频率来确定词语的大小,即频率高的词在词云中显示得更大,频率低的词则显示得更小。生成词云的过程通常包括以下几个步骤:

  1. 文本清洗和预处理:为了生成有意义的词云,需要对文本进行清洗和预处理,包括去除停用词(如“的”、“了”等常见但无实际意义的词汇)、标点符号,并进行分词等操作。
  2. 词频统计:对预处理后的文本进行词频统计,计算每个词汇在文本中出现的次数。
  3. 可视化展示:根据词频统计结果,将词汇以不同大小的字体、颜色或形状进行可视化展示,形成词云。

动手创建词云

在技术实现上,Python中的WordCloud库是一个常用的工具,用于生成词云。此外,其他数据可视化库如Matplotlib、Seaborn等也可以与词云生成库结合使用。在生成词云时,还可以设置一些参数来调整词云的外观和生成方式,如词云图的宽度和高度、背景颜色、最大单词数量、停用词列表、字体文件路径等。

pip install wordcloud
pip install jieba

import matplotlib.pyplot as plt
from wordcloud import WordCloud

# 准备字符数组
text = "Python is an interpreted, high-level, general-purpose programming language. Created by Guido van Rossum and first released in 1991, Python's design philosophy emphasizes code readability with its notable use of significant indentation."


# 创建词云对象
wordcloud = WordCloud(font_path=r'C:/Windows/Fonts/simhei.ttf',  # 指定中文字体路径
                      width=800,
                      height=400,
                      background_color='white').generate(text)


# 显示词云图
plt.figure(figsize=(20, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')  # 不显示坐标轴
plt.savefig('worlcloud.png', format='png', dpi=150)

plt.show()

yyq-2024-07-28-11-38-45.png

wordcloud是利用空格进行分词的,对于英文是可以的,但是对于中文就会出现整句话作为一个词情况,因此需要进行分词,分词可以采用jieba分词

import matplotlib.pyplot as plt
from wordcloud import WordCloud

import jieba


text = "这个项目用c来实现一个完整的大语言模型,对于学习模型推理大有益处。告别繁重的PyTorch和cPython,拥抱纯粹的C/CUDA大型语言模型(LLMs)!我们的存储库直接采用简洁高效的C/CUDA语言,无需加载245MB的PyTorch或107MB的cPython,让你轻松搭建大型语言模型。目前,我们的重点是预训练,特别是重现GPT-2和GPT-3这样的经典系列模型! 为了让大家更容易上手,我们还提供了一个并行的PyTorch参考实现train_gpt2.py。这个文件其实是我之前项目nanoGPT的升级版,你会一眼就认出来的。速度方面,我们的llm.c已经超越了PyTorch Nightly,快了大约7%! 不仅如此,我们还提供了一个简单的CPU fp32参考实现,全部代码仅一个文件train_gpt2.c,清晰易懂,大约1000行代码。我们的目标是保持存储库的纯粹性,只维护C和CUDA代码。 当然,如果你希望在其他语言中实现,我们非常欢迎,但请在其他存储库中完成。我们会在“值得注意的分支”部分提供链接"

text = " ".join(jieba.cut(text))

# 创建词云对象
wordcloud = WordCloud(font_path=r'C:/Windows/Fonts/simhei.ttf',  # 指定中文字体路径
                      width=800,
                      height=400,
                      background_color='white').generate(text)


# 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')  # 不显示坐标轴
plt.savefig('words.png', format='png', dpi=150)

plt.show()

yyq-2024-07-28-11-49-29.png

词云进阶

分词中的很多次并不是关键词,通常需要去掉停用词,常用的停用词可以参见:

stopwords_file = './Stopwords-main/stopwords_cn.txt'
stopwords = []
with open(stopwords_file, 'r', encoding='utf8') as f:
    for line in f.readlines():
        stopwords.append(line.strip())

import matplotlib.pyplot as plt
from wordcloud import WordCloud

import jieba


text = "这个项目用c来实现一个完整的大语言模型,对于学习模型推理大有益处。告别繁重的PyTorch和cPython,拥抱纯粹的C/CUDA大型语言模型(LLMs)!我们的存储库直接采用简洁高效的C/CUDA语言,无需加载245MB的PyTorch或107MB的cPython,让你轻松搭建大型语言模型。目前,我们的重点是预训练,特别是重现GPT-2和GPT-3这样的经典系列模型! 为了让大家更容易上手,我们还提供了一个并行的PyTorch参考实现train_gpt2.py。这个文件其实是我之前项目nanoGPT的升级版,你会一眼就认出来的。速度方面,我们的llm.c已经超越了PyTorch Nightly,快了大约7%! 不仅如此,我们还提供了一个简单的CPU fp32参考实现,全部代码仅一个文件train_gpt2.c,清晰易懂,大约1000行代码。我们的目标是保持存储库的纯粹性,只维护C和CUDA代码。 当然,如果你希望在其他语言中实现,我们非常欢迎,但请在其他存储库中完成。我们会在“值得注意的分支”部分提供链接"
text = " ".join(jieba.cut(text))

# 创建词云对象
wordcloud = WordCloud(font_path=r'C:/Windows/Fonts/simhei.ttf',  # 指定中文字体路径
                      width=800,
                      height=400,
                      stopwords=stopwords,
                      background_color='white').generate(text)


# 显示词云图
plt.figure(figsize=(10, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')  # 不显示坐标轴
plt.savefig('words.png', format='png', dpi=150)

plt.show()

yyq-2024-07-28-12-16-13.png

另外再词云显示上,也可以添加自定义的样式,只要在WordCloud添加mask参数,比如这里填一个机器人造型的mask


stopwords_file = './Stopwords-main/stopwords_cn.txt'
stopwords = []
with open(stopwords_file, 'r', encoding='utf8') as f:
    for line in f.readlines():
        stopwords.append(line.strip())

import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
import jieba
import numpy as np
from PIL import Image

background_Image = np.array(Image.open('./a.jpg'))
img_colors = ImageColorGenerator(background_Image)

mask = np.where(background_Image > 200, 255, 0)  
text = "这个项目用c来实现一个完整的大语言模型,对于学习模型推理大有益处。告别繁重的PyTorch和cPython,拥抱纯粹的C/CUDA大型语言模型(LLMs)!我们的存储库直接采用简洁高效的C/CUDA语言,无需加载245MB的PyTorch或107MB的cPython,让你轻松搭建大型语言模型。目前,我们的重点是预训练,特别是重现GPT-2和GPT-3这样的经典系列模型! 为了让大家更容易上手,我们还提供了一个并行的PyTorch参考实现train_gpt2.py。这个文件其实是我之前项目nanoGPT的升级版,你会一眼就认出来的。速度方面,我们的llm.c已经超越了PyTorch Nightly,快了大约7%! 不仅如此,我们还提供了一个简单的CPU fp32参考实现,全部代码仅一个文件train_gpt2.c,清晰易懂,大约1000行代码。我们的目标是保持存储库的纯粹性,只维护C和CUDA代码。 当然,如果你希望在其他语言中实现,我们非常欢迎,但请在其他存储库中完成。我们会在“值得注意的分支”部分提供链接"
text = " ".join(jieba.cut(text))

# 创建词云对象
wordcloud = WordCloud(font_path=r'C:/Windows/Fonts/simhei.ttf',  # 指定中文字体路径
                      width=800,
                      height=400,
                      stopwords=stopwords,
                      mask=mask,
                      background_color='white').generate(text)


# 显示词云图
plt.figure(figsize=(20, 5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')  # 不显示坐标轴
plt.savefig('words.png', format='png', dpi=150)

plt.show()

yyq-2024-07-28-13-58-45.png

目录
相关文章
|
6月前
|
机器学习/深度学习 自然语言处理 数据可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
数据代码分享|PYTHON用NLP自然语言处理LSTM神经网络TWITTER推特灾难文本数据、词云可视化
|
7天前
|
自然语言处理 Python Windows
python知识点100篇系列(23)- 使用stylecloud生成词云
【10月更文挑战第10天】`stylecloud` 是 `wordcloud` 的优化版,支持使用 Font Awesome 图标自定义词云形状,操作更简便。本文介绍如何安装 `jieba` 和 `stylecloud` 库,并使用它们生成中文词云。通过 `jieba` 进行分词,再利用 `stylecloud` 的 `gen_stylecloud` 方法生成具有特定形状和颜色的词云图像。
python知识点100篇系列(23)- 使用stylecloud生成词云
|
27天前
|
自然语言处理 计算机视觉 Python
用 Python 创建词云
用 Python 创建词云
24 2
|
3月前
|
自然语言处理 搜索推荐 数据可视化
如何使用python实现一个优雅的词云?(超详细)
如何使用python实现一个优雅的词云?(超详细)
79 2
|
3月前
|
自然语言处理 数据可视化 Python
【Python】Python人民的名义-词云-关系图可视化(源码+报告)【独一无二】
【Python】Python人民的名义-词云-关系图可视化(源码+报告)【独一无二】
|
5月前
|
搜索推荐 Python Windows
python中对于wordcloud词云生成报错提示的解决
通过搜索印象错误信息:ValueError:Only supported for TrueType fonts,几乎大部分人给出的选项都是让你指定TrueType fonts路径,或者新下载TTF字体,并重新指定,但是这两种解决方案并无法解决报错。 在真正解决问题之前,先来介绍几个与之相关的知识点,对于有经验的人,这样的知识点完全是“小菜”,但是对于初学者,这种知识点就是因为缺少相关实践而无从下手,无从搜索引擎。
|
5月前
|
数据采集 自然语言处理 数据可视化
拿来及用的Python词云图代码 | wordcloud生成词云详解
词云也叫文字云,是一种可视化的结果呈现,常用在爬虫数据分析中,原理就是统计文本中高频出现的词,过滤掉某些干扰词,将结果生成一张图片,直观的获取数据的重点信息。今天,我们就来学习一下Python生成词云的常用库wordcloud。
|
5月前
|
机器学习/深度学习 自然语言处理 数据可视化
文本挖掘与可视化:生成个性化词云的Python实践【7个案例】
词云(Word Cloud),又称为文字云或标签云,是一种用于文本数据可视化的技术,通过不同大小、颜色和字体展示文本中单词的出现频率或重要性。在词云中,更频繁出现的单词会显示得更大,反之则更小。
|
5月前
|
机器学习/深度学习 自然语言处理 数据可视化
文本挖掘与可视化:生成个性化词云的Python实践【7个案例】
词云是文本数据可视化的工具,显示单词频率,直观、美观,适用于快速展示文本关键信息。 - 用途包括关键词展示、数据探索、报告演示、情感分析和教育。 - 使用`wordcloud`和`matplotlib`库生成词云,`wordcloud`负责生成,`matplotlib`负责显示。 - 示例代码展示了从简单词云到基于蒙版、颜色和关键词权重的复杂词云生成。 - 案例覆盖了中文分词(使用`jieba`库)、自定义颜色和关键词权重的词云。 - 代码示例包括读取文本、分词、设置词云参数、显示和保存图像。
209 1
|
5月前
|
自然语言处理 监控 数据可视化
艺术与文本的交织:基于Python的jieba和wordcloud库实现华丽词云
艺术与文本的交织:基于Python的jieba和wordcloud库实现华丽词云
68 0