商务服务
文本挖掘与可视化:生成个性化词云的Python实践【7个案例】
2024-10-31 18:07

词云(Word Cloud),又称为文字云或标签云,是一种用于文本数据可视化的技术,通过不同大小、颜色和字体展示文本中单词的出现频率或重要性。在词云中,更频繁出现的单词会显示得更大,反之则更小。

文本挖掘与可视化:生成个性化词云的Python实践【7个案例】

词云的生成通常涉及文本预处理(如去除停用词、标点符号等),然后根据单词的权重(如词频或TF-IDF分数)来调整字体大小,最后使用图形库(如PIL/Pillow)生成图像。尽管词云非常有用,但也存在局限性,如难以展示复杂的语法结构和语义关系,因此在实际应用中需要根据具体需求谨慎使用。

主要用到对 和 这两个Python库

以下是对 和 这两个Python库的简单介绍:

WordCloud

是一个流行的Python库,用于生成词云。词云是一种通过不同大小的单词来表示文本数据中单词频率的可视化方法。单词出现得越频繁,它们在词云中显示得越大。这个库非常灵活,允许用户自定义词云的许多方面,包括:

库通常用于数据分析、文本挖掘和可视化,以直观地展示文本数据的关键特征。

Matplotlib

是Python中一个广泛使用的绘图库,它提供了一个类似于MATLAB的绘图框架,用于创建各种静态、交互式和动画的可视化图表。 支持多种输出格式,并且可以无缝地与各种Python环境集成,包括IPython、Jupyter notebook等。

的主要特点包括:

是数据科学、机器学习、科学计算和商业分析中常用的可视化工具之一。

这两个库结合使用时,可以创建出既美观又信息丰富的词云图像,帮助用户快速把握文本数据的关键信息。

编辑器: pycharm

环境版本:

代码:

# -*- coding: utf-8 -*-

from wordcloud import WordCloud

import matplotlib.pyplot as plt

# 打开文本

text = open('constitution.txt').read()

# 生成对象

wc = WordCloud().generate(text)

# 显示词云

plt.imshow(wc, interpolation='bilinear')

plt.axis('off')

plt.show()

# 保存到文件

wc.to_file('wordcloud.png')

这段代码是使用Python编写的,它的作用是生成一个词云(WordCloud),词云是一种可视化技术,用于显示文本数据中单词的频率。具体来说,这段代码做了以下几件事情:

要运行这段代码,你需要确保有 和 这两个Python库安装在你的系统中,并且有一个名为 的文本文件存在于代码运行的同一目录下。该文本文件应该包含你想要生成词云的文本数据。运行代码后,你将在当前目录下得到一个名为 的词云图片文件。

运行结果如下:

代码:

# -*- coding: utf-8 -*-

# 中文不分词

from wordcloud import WordCloud

import matplotlib.pyplot as plt

# 打开文本:吴承恩的西游记,指定使用utf-8编码读取

with open('../xyj.txt', 'r', encoding='utf-8') as f:

    text = f.read()

# 生成对象

wc = WordCloud(font_path='../Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)

# 显示词云

plt.imshow(wc, interpolation='bilinear')

plt.axis('off')

plt.show()

# 保存到文件

wc.to_file('main_2.png')

运行结果:

为什么中文文本需要分词:

分词(Tokenization)是文本处理中的一个术语,指的是将文本分解成更小的单元,通常是单词或者词语。在中文文本处理中,分词尤为重要,因为中文书写时通常不会像英文那样使用空格来分隔单词。

代码中,使用库进行中文分词:

# 中文分词

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

这里,会返回一个生成器,其中包含了文本的分词结果。使用将分词结果连接成一个由空格分隔的字符串,以便库可以正确地处理和生成词云。

是中文分词领域的一个非常流行的Python库,它支持三种分词模式:

最后,使用分词后的文本生成词云,可以更准确地反映出文本中各个词语的重要性和频率,从而生成更有意义的词云图像。

代码:

# -*- coding: utf-8 -*-

# 中文,分词

from wordcloud import WordCloud

import matplotlib.pyplot as plt

import jieba

# 打开文本

with open('../xyj.txt', 'r', encoding='utf-8') as f:

    text = f.read()

# 中文分词

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

print(text[:100])

# 生成对象

wc = WordCloud(font_path='../Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)

# 显示词云

plt.imshow(wc, interpolation='bilinear')

plt.axis('off')

plt.show()

# 保存到文件

wc.to_file('wordcloud.png')

运行结果:

代码:

# -*- coding: utf-8 -*-


from wordcloud import WordCloud

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

import jieba

# 打开文本

with open('../xyj.txt', 'r', encoding='utf-8') as f:

    text = f.read()

# 中文分词

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

print(text[:100])

# 生成对象

mask = np.array(Image.open("../black_mask.png"))

wc = WordCloud(mask=mask, font_path='../Hiragino.ttf', mode='RGBA', background_color=None).generate(text)

# 显示词云

plt.imshow(wc, interpolation='bilinear')

plt.axis("off")

plt.show()

# 保存到文件

wc.to_file('main_4.png')

蒙版:

运行结果:

代码:

# -*- coding: utf-8 -*-

from wordcloud import WordCloud, ImageColorGenerator

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

import jieba

# 打开文本

with open('../xyj.txt', 'r', encoding='utf-8') as f:

    text = f.read()

# 中文分词

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

print(text[:100])

# 生成对象

mask = np.array(Image.open("../color_mask.png"))

wc = WordCloud(mask=mask, font_path='../Hiragino.ttf', mode='RGBA', background_color=None).generate(text)

# 从图片中生成颜色

image_colors = ImageColorGenerator(mask)

wc.recolor(color_func=image_colors)

# 显示词云

plt.imshow(wc, interpolation='bilinear')

plt.axis("off")

plt.show()

# 保存到文件

wc.to_file('main_5.png')

运行结果:

代码:

# -*- coding: utf-8 -*-

from wordcloud import WordCloud

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

import random

import jieba

# 打开文本

with open('../xyj.txt', 'r', encoding='utf-8') as f:

    text = f.read()

# 中文分词

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

print(text[:100])

# 颜色函数

def random_color(word, font_size, position, orientation, font_path, random_state):

s = 'hsl(0, %d%%, %d%%)' % (random.randint(60, 80), random.randint(60, 80))

print(s)

return s

# 生成对象

mask = np.array(Image.open("../color_mask.png"))

wc = WordCloud(color_func=random_color, mask=mask, font_path='../Hiragino.ttf', mode='RGBA', background_color=None).generate(text)

# 显示词云

plt.imshow(wc, interpolation='bilinear')

plt.axis("off")

plt.show()

# 保存到文件

wc.to_file('main_06.png')

效果图:

代码:

# -*- coding: utf-8 -*-

from wordcloud import WordCloud, ImageColorGenerator

from PIL import Image

import numpy as np

import matplotlib.pyplot as plt

import jieba.analyse

# 打开文本

with open('../xyj.txt', 'r', encoding='utf-8') as f:

    text = f.read()

# 提取关键词和权重

freq = jieba.analyse.extract_tags(text, topK=200, withWeight=True)

print(freq[:20])

freq = {i[0]: i[1] for i in freq}

# 生成对象

mask = np.array(Image.open("../color_mask.png"))

wc = WordCloud(mask=mask, font_path='../Hiragino.ttf', mode='RGBA', background_color=None).generate_from_frequencies(freq)

# 从图片中生成颜色

image_colors = ImageColorGenerator(mask)

wc.recolor(color_func=image_colors)

# 显示词云

plt.imshow(wc, interpolation='bilinear')

plt.axis("off")

plt.show()

# 保存到文件

wc.to_file('main_07.png')

    以上就是本篇文章【文本挖掘与可视化:生成个性化词云的Python实践【7个案例】】的全部内容了,欢迎阅览 ! 文章地址:http://lianchengexpo.xrbh.cn/news/11427.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 迅博思语资讯移动站 http://lianchengexpo.xrbh.cn/mobile/ , 查看更多   
最新新闻
二胎概念火了!任泽平:未来四胎五胎可能给奖励
  人口政策问题再次广受关注。  昨日晚间,央行微信公众号发布题为《关于我国人口转型的认识和应对之策》的工作论文,聚焦了
全球下载量突破20亿时TikTok遭遇“围剿”,张一鸣对公司员工说了啥
抖音短视频国际版TikTok近日在美国的遭遇不断反转、不断刷新。虽然特朗普对其封禁令尚未最终拍板,但TikTok在海外年轻人中的火爆
如何查询手机流量?查询手机流量方法教学
  手机是一个我们现在广泛使用的电子产品,我们除了利用手机进行通话之外,最多的就是利用手机上网了。如果想要利用手机上网的
孙楠:希望自己的音乐带给观众快乐
  中新网杭州6月25日电 (胡小丽 刘文彬)1990年,孙楠发行了首张个人专辑《弯弯的月亮》,从此走上职业歌手的道路。到今天,已
【夜读】7条成长建议,送给正在努力的你
01改变自己会痛苦,不改变自己会吃苦不抗拒改变、不用陈旧的方式去处理新问题,是一个人走向成熟的标志。很多时候,只是一个细节
tiktok前身是什么发展历史,一文带你了解tiktok发展历程
在互联网发展如此迅速的今天,各种的媒体社交改变了我们的生活,带来了更多的便利条件,让我们了解这个周围以及世界的最新咨询。
中考倒计时,科学备考秘籍请收好
  本报记者潘洁婷通讯员王晓敏  今年是“双减”政策实施以来的首次中考,距离2022年中考还有不足一个月时间。备考冲刺阶段,
千万粉丝!他突然全网被封
近日,在抖音拥有1800多万粉丝的倪海杉账号被平台封禁。关于倪海杉账号被封原因,网络上有多种猜测。另外,倪海杉在快手上拥有50
全新 Model 3 发布!内外饰全面焕新,屏幕换挡进入全民时代
6年前,特斯拉为 Model 3的亮相开了一场盛大的发布会,特斯拉首席执行官、首席设计官悉数到场。Model 3是公司当前的头等要事。马
一部具有重大警世意义和很高文学价值的力作——评屈全绳的长篇小说《鹅头岭》
作者:汪守德一按一般人的想象,有着数十年从军经历的老将军,离休之后不再为公务缠身,不再因百事纠结,或写一点回忆录之类的轻
本企业新闻
推荐企业新闻

点击拨打: