如何画一个词云 | python小知识
什么是词云
词云的概念
词云,又称文字云,是文本数据的视觉表示,通过将网络文本或大量文本数据中出现频率较高的“关键词”以不同大小的字体、颜色或形状进行可视化展示,形成类似云的彩色图形。这种视觉上的突出使得浏览者能够一眼扫过文本就领略到文本的主旨,是数据可视化的一种重要形式。
词云的应用场景
词云在多个领域有着广泛的应用,主要包括以下几个方面:
- 数据可视化:词云可以通过直观的方式展示大量文本数据的主题和关键词,帮助人们更好地理解和分析数据。
- 情感分析:通过制作词云,研究人员或决策者可以快速了解某个主题或文本中情感分析的结果,如消费者对产品的评价、公众对某事件的态度等。
- 舆情监测:词云用于监测网上的舆情,通过分析社交媒体和新闻等数据中出现频率较高的词语,了解公众对某个话题的关注和态度。
- 营销和品牌推广:词云可以帮助企业了解消费者对其品牌的印象和关注点,从而优化营销策略和品牌形象。
- 教育和培训:词云可以被用于教育和培训领域,帮助学生和员工更好地理解和记忆关键概念和知识点。
词云生成的技术原理
词云生成的基本原理是基于文本中每个词的频率来确定词语的大小,即频率高的词在词云中显示得更大,频率低的词则显示得更小。生成词云的过程通常包括以下几个步骤:
- 文本清洗和预处理:为了生成有意义的词云,需要对文本进行清洗和预处理,包括去除停用词(如“的”、“了”等常见但无实际意义的词汇)、标点符号,并进行分词等操作。
- 词频统计:对预处理后的文本进行词频统计,计算每个词汇在文本中出现的次数。
- 可视化展示:根据词频统计结果,将词汇以不同大小的字体、颜色或形状进行可视化展示,形成词云。
动手创建词云
在技术实现上,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()
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()
词云进阶
分词中的很多次并不是关键词,通常需要去掉停用词,常用的停用词可以参见:
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()
另外再词云显示上,也可以添加自定义的样式,只要在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()