1.什么是词云图
词云图是一种可视化工具,它通过对文本中出现频率较高的词语按照词频大小进行可视化呈现,从而让读者可以一目了然地看到文本的重点信息。在文本处理、舆情分析、口碑监测等领域重要应用。
1.1 词云图的优点
词云图具有以下几个优点:
直观性强,易于理解。
能够准确地表达文本中的关键信息。
可以帮助人们快速审阅长篇文本,并挖掘出其中的重点信息。
具有丰富的表现形式,可以让人们根据需要选择不同的词云展现方式。
2.基于Python生成英文词云图
下面我们就来学习利用Python对英文文本进行词云图生成的操作。在这里我们使用Python中的wordcloud包来生成词云图。
2.1 安装wordcloud包
要安装wordcloud包,需要使用pip工具。
!pip install wordcloud
2.2 读取英文文本
我们使用Python的文件读取功能来读取文本文件。
#导入相关包
import os
from os import path
from wordcloud import WordCloud
# 获取当前文件路径
d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()
# 读取文件内容
text = open(path.join(d, 'text_en.txt')).read()
# 定义停用词
stopwords = set(["the", "and", "this", "that", "it", "is", "to", "in", "of", "with", "for", "on", "was", "by", "at", "an", "be", "are", "you", "were", "from", "or", "we", "can", "has", "have"])
# 创建WordCloud对象
wc = WordCloud(
background_color='white', # 设置背景颜色
mask=None, # 设置背景图片
max_words=200, # 设置最大显示的字数
stopwords=stopwords, # 设置停用词
font_path='arial.ttf', # 设置字体格式,如不设置显示不了中文
width=400, # 设置图片宽度
height=400, # 设置图片高度
margin=5 # 设置图片边缘
)
代码中采用了stopwords过滤停用词,可以去掉一些常见的词汇,可以节省一些计算时间,更好地体现文本特征。
2.3 生词云图
生成词云图可以使用WordCloud对象的generate()函数。
# 生成词云图
wc.generate(text)
# 显示图片
import matplotlib.pyplot as plt
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
在这里,我们也可以根据需要对词云图的背景、字体、尺寸等进行设置,以生成更美观、更符合实际需求的词云图。
2.4 保存词云图到本地
如果我们需要将生成的词云图保存到本地,可以使用WordCloud对象的to_file()函数:
# 保存图片到本地
wc.to_file('wordcloud_en.png')
该语句会将词云图保存为wordcloud_en.png文件。
3.优化词云图效果
虽然上面的步骤已经可以完成生成英文版词云图,但是通过一些优化可以让生成的词云图表现更加美观,同时更能符合我们的需求。
3.1 调整词云图字体大小
默认情况下,生成词云图时,文字的大小是根据词频来确定的。但是我们也可以按照自己的需要调整字体大小。
# 调整字体大小
frequency = [10,8,6,4,2,1]
wcc = WordCloud(background_color='white',
width=500,
height=300,
font_path='arial.ttf',
max_words=100,
stopwords=stopwords,
min_font_size=15,
max_font_size=120
)
wcc.generate(text)
plt.imshow(wcc,interpolation='bilinear')
plt.axis('off')
plt.show()
这里,我们通过max_font_size和min_font_size来设置词云图的字体大小。max_font_size设置最大字体大小,min_font_size设置最小字体大小。
3.2 调整词云图背景
我们还可以通过调整词云图的背景颜色来增加其美观程度和可读性。
#设置背景颜色
from PIL import Image
import numpy as np
alice_coloring = np.array(Image.open(path.join(d, 'alice_color.png')))
wc = WordCloud(
background_color="white",
max_words=2000,
mask=alice_coloring,
stopwords=stopwords,
contour_width=3,
contour_color='steelblue'
)
wc.generate(text)
# 显示图片
import matplotlib.pyplot as plt
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
# 绘制轮廓线
plt.figure()
plt.imshow(alice_coloring, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis('off')
plt.show()
该程序将会产生一个带有轮廓线的词云图,区别于白底的词云图。
3.3 自定义词云图颜色
我们可以根据自己的需要设置词云图中词汇的颜色。这一般需要设置颜色函数(Color Function),代码如下:
import random
# 定义颜色函数,按照不同的词汇返回不同的颜色值
def custom_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None):
return "hsl(0, 0%%, %d%%)" % random.randint(60, 80)
# 创建WordCloud对象
wc = WordCloud(background_color='white',
width=400,
height=400,
mask=None,
max_words=200,
stopwords=stopwords,
color_func=custom_color_func,
prefer_horizontal=0.8
)
在这里,我们通过color_func参数自定义颜色函数,用来根据词的长度、频率等属性,为不同的词汇设定不同的颜色。同时,我们还设置了prefer_horizontal参数,用来控制词云图中的词汇排布方向。
4.总结
在这篇文章中,我们学习了如何使用Python中的wordcloud包来生成英文版词云图。通过对文本在词频、背景、字体等方面的处理,能够得到一个直观美观、更符合实际需求的词云图。在实践中,我们还可以通过自定义停用词、字体大小等来优化词云图效果。通过对Python生成词云图代码的学习,我们了解了词云图的优点、制作过程以及优化操作,为实际应用提供了可行的解决方案。