文章目录1.何为词云图?2.前期准备2.1.开发环境2.2.需要用到的Python库3.代码解析3.1.导入Python库3.2.以只读模式打开.txt3.3.预处理文本和背景图片3.4.设置词云图参数3.5.展示词云图并保存3.6.运行结果及优化4.完整代码4.1.展示4.2.下载
本文采用Python编程,实现对文本文档(中、英文)做词频统计以及词云图展示。
1.何为词云图?
词云图是文本数据的视觉展示,可以快速从大量文本信息中找出关键词。一般来说字体越大就代表出现的频率越高。
E.G. 下图是《三国演义》中的高频词,部分词汇通过筛选不在图中展示。本文主要展示《三国演义中》出现频率较高的人
【使用Python制作词云图】
词云图是一种可视化技术,它将文本数据转化为图形,以文字的形式展示其中的高频词汇。每个词的大小代表其在文本中出现的频率,通常字体越大,表示该词出现的次数越多。这种图表便于快速识别大量文本中的关键主题或频繁出现的词汇。例如,在分析《三国演义》的词云图中,我们可以直观地看到人物名称和其他高频词汇,而某些无意义或低频的词汇则可能被排除在外。
为了制作词云图,我们需要进行以下步骤:
1. **开发环境**:在Windows 10系统上,可以选择Sublime Text 3作为代码编辑器。确保已安装必要的Python库。
2. **Python库**:主要用到的库有:
- `wordcloud`:这是用于生成词云图的第三方库,它可以根据词频自定义图形样式。
- `jieba`:中文分词工具,帮助我们将中文文本拆分成单词。
- `numpy`:提供数值计算和矩阵操作,对于处理图像数据非常有用。
- `matplotlib`:一个强大的绘图库,可用于展示词云图。
- `PIL`(Python Imaging Library):用于处理图像,如设置词云图的背景图片。
3. **代码解析**:
- **导入库**:首先导入所需的库,如numpy、jieba、wordcloud、matplotlib和PIL。
- **打开文本**:使用Python的内置函数`open()`以只读模式打开文本文件,并使用`read()`读取内容,然后关闭文件。
- **预处理文本**:使用jieba进行中文分词,将文本转换为单词列表,然后使用`join()`方法以空格连接这些单词。
- **处理背景图片**:加载背景图片,将其转换为numpy数组,以便于wordcloud库使用。
- **设置词云图参数**:创建WordCloud对象,指定背景颜色、尺寸、字体、最大词汇数、最大字体大小、停用词列表和背景图片。
- **生成并显示词云图**:使用matplotlib的`imshow()`绘制词云图,`axis('off')`隐藏坐标轴,`show()`显示图形,并通过`to_file()`保存为PNG文件。
4. **优化**:在实际应用中,我们可能需要去除无意义的词汇,如“二人”、“却说”等,这可以通过创建一个停用词列表并将其传递给WordCloud对象来实现。最终结果将只显示有意义且高频的词汇。
完整代码示例:
```python
import numpy as np
import jieba
from wordcloud import WordCloud
from matplotlib import pyplot as plt
from PIL import Image
# 打开文本文件
f = open('E:/PySource/threekingdoms.txt','r',encoding='utf-8')
txt = f.read()
f.close()
# 分词
words = jieba.lcut(txt)
newtxt = ' '.join(words)
# 加载背景图片
img = Image.open(r'back_pic_cloud.jpg')
img_array = np.array(img)
# 创建词云图对象
excludes = ['将军','却说','荆州','二人','不可','不能','如此','如何','商议','主公','左右','军士','军马','引兵','大喜','次日','东吴','天下','于是','今日','魏兵','不敢','不知','陛下','一人','人马','都督','汉中','众将','只见','后主','大叫','孔明曰','玄德曰']
wordcloud = WordCloud(
background_color="black",
width=1080,
height=960,
font_path="C:/Windows/Fonts/simfang.ttf",
max_words=150,
max_font_size=100,
stopwords=excludes,
mask=img_array
).generate(newtxt)
# 显示并保存词云图
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
wordcloud.to_file('result.png')
```
通过上述步骤和代码,我们可以成功地使用Python生成基于《三国演义》文本的词云图,从而揭示文本的主要内容和焦点。这种技术广泛应用于新闻分析、社交媒体数据挖掘、文本情感分析等领域,帮助我们快速理解大量文本数据的概貌。
评论10
最新资源