基于python生成英文版词云图代码实例

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生成词云图代码的学习,我们了解了词云图的优点、制作过程以及优化操作,为实际应用提供了可行的解决方案。

后端开发标签