python 词云

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

# 导入文本数据进行简单的文本处理,去掉换行符,半角和全角空格
f = open("bb.txt","r", encoding='utf8')
t = f.read()
f.close()


ls = jieba.lcut(t)
txt = " ".join(ls)


# 导入停词,用于去掉文本中类似于'啊'、'你','我'之类的词
stop_words = open("bb.txt", encoding="utf8").read().split("\n")


# 导入背景图,注意背景图除了目标形状外,其余地方都应是空白的
background_image = np.array(Image.open("5.jpg"))

color_list=["#C2D26F","#C848A3","#B22222","#B03060","#EEA9B8","#708090"]
colormap=colors.ListedColormap(color_list)
# 使用WordCloud生成词云
w = WordCloud(font_path="simsun.ttc",  # 设置词云字体
              background_color="white", width=1000, height=880,  # 词云图的背景颜色、高度和宽度
              mask=background_image,  # 指定词云的形状
              max_words=1500,  # 显示单词数
              max_font_size=100,  # 最大字号
              colormap=colormap,
              stopwords=stop_words)  # 去掉的停词
w.generate(txt)

# 运用matplotlib展现结果
plt.subplots(figsize=(10, 8))
plt.imshow(w)
plt.axis("off")
plt.show()

### Python生成的方法及推荐库 Python中生成的常用方法主要依赖于`wordcloud`库和中文分工具`jieba`。以下是生成的具体步骤以及相关库的推荐[^1]。 #### 1. 环境准备 在开始之前,需要确保安装了必要的库。可以通过以下命令安装所需的库: ```bash pip install wordcloud jieba matplotlib pillow ``` #### 2. 数据准备 对于中文文本,通常需要进行分处理以提取出有意义的汇。可以使用`jieba`库对中文文本进行分[^3]。 #### 3. 分与停用处理 为了提高的质量,可以加载停用表以过滤掉常见的无意义汇。例如: ```python import jieba # 读取文本 with open('chinese_article.txt', 'r', encoding='utf-8') as f: text = f.read() # 中文分 seg_list = jieba.cut(text, cut_all=False) seg_text = " ".join(seg_list) # 加载停用 stopwords = set() with open('chinese_stopwords.txt', 'r', encoding='utf-8') as f: for line in f: stopwords.add(line.strip()) ``` #### 4. 生成 使用`wordcloud`库生成图,并可设置字体、背景颜色、最大汇数等参数。 ```python from wordcloud import WordCloud import numpy as np from PIL import Image import matplotlib.pyplot as plt # 加载形状蒙版 mask = np.array(Image.open("china_map.png")) # 生成 wc = WordCloud( font_path="SimHei.ttf", # 中文字体路径 mask=mask, # 形状蒙版 stopwords=stopwords, # 停用集合 background_color="white", # 背景颜色 max_words=100 # 最大汇数 ).generate(seg_text) # 显示 plt.figure(figsize=(12, 8)) plt.imshow(wc, interpolation='bilinear') plt.axis("off") plt.savefig('chinese_wordcloud.png', dpi=300, bbox_inches='tight') plt.show() ``` #### 5. 性能优化 对于较大的文本数据,可以通过以下方式优化性能: - 对文本进行预处理,如去除标点符号和数字。 - 减少`max_words`参数值以降低计算复杂度[^3]。 #### 推荐库 - **wordcloud**:用于生成的核心库,支持多种自定义选项。 - **jieba**:中文分工具,适用于中文文本的分处理。 - **matplotlib**:用于可视化图。 - **Pillow**:处理图像蒙版和保存图片。 通过上述方法,可以生成美观且专业的图,并可根据需求进一步调整样式和布局[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值