只用Python就可以制作的简单词云

  • Post category:Python

制作简单词云的完整攻略如下:

材料准备

首先,我们需要安装Python的wordcloud库。在命令行(Windows)或终端(Mac/Linux)中输入以下命令:

pip install wordcloud

如果你使用anaconda环境,可以使用以下命令:

conda install -c conda-forge wordcloud

文本处理

接下来,我们需要准备要制作词云的文本。在本示例中,我们准备使用《红楼梦》的文字作为材料。你可以选择任意文本。

我们首先需要将文本读入到Python中。在Python中,我们使用open函数打开文本文件,然后通过read方法读取文本内容:

with open('hongloumeng.txt', 'r', encoding='utf-8') as f:
    text = f.read()

接下来需要对文本进行处理。首先,我们将文本分词,即将文本按照空格、标点等符号进行分隔,变成一个个单词。在Python中,我们可以使用jieba库进行分词。如果你没有安装jieba库,可以使用以下命令进行安装:

pip install jieba

分词代码如下:

import jieba

# 分词
words = jieba.cut(text)

分词之后,我们需要去掉一些无用的单词,比如“的”、“了”等常用词语。我们可以使用中文停用词库来去掉这些词语。在Python中,我们可以使用stopwords库来加载中文停用词库。如果你没有安装stopwords库,可以使用以下命令进行安装:

pip install stopwords

去掉停用词的代码如下:

from stopwords import stopwords

# 去掉停用词
filtered_words = []
for word in words:
    if word not in stopwords:
        filtered_words.append(word)

制作词云

接下来,我们就可以使用wordcloud库来制作词云了。wordcloud库可以非常方便地根据词语频率来生成词云图。

首先,我们需要将单词列表转换为一个字符串。我们可以使用Python的字符串join方法,将单词列表中的所有单词用空格连接起来,变成一个字符串:

text = ' '.join(filtered_words)

然后,我们就可以使用wordcloud库中的WordCloud类来生成词云图了。我们可以根据需要设置词云的宽度、高度、背景色、字体、字号等参数。

以下是一个生成《红楼梦》词云图的示例代码:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 生成词云图
wordcloud = WordCloud(font_path='simsun.ttf',width=1200,height=600,background_color='white',max_words=200).generate(text)

# 显示词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

运行上述代码,就可以得到一张《红楼梦》词云图了。

示例说明

由上面的攻略可得,其实只需要Python和相应库,就可以轻松制作出漂亮的词云图。我们来看两个示例:

示例1

准备一篇英文文章作为材料,然后按照上面的攻略进行词云图的制作。

首先,我们需要将英文文章读入到Python中。与中文不同,英文不需要进行分词和去停用词的处理。因此,我们可以直接将文本转换为单词列表。

接下来,我们需要将单词列表转换为一个字符串,然后根据需要设置词云的各种参数。示例代码如下:

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 读入英文文章
with open('article.txt', 'r', encoding='utf-8') as f:
    text = f.read()

# 转换为单词列表
words = text.split()

# 将单词列表转换为字符串
text = ' '.join(words)

# 生成词云图
wordcloud = WordCloud(width=1200,height=600,background_color='white',max_words=200).generate(text)

# 显示词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

示例2

准备一本小说作为材料,然后按照上面的攻略进行词云图的制作。

首先,我们需要将小说的所有章节读入到Python中,并合并为一个字符串。接下来,我们需要对这个字符串进行分词和去停用词的处理,然后根据需要设置词云的各种参数。

示例代码如下:

from wordcloud import WordCloud
import jieba
from stopwords import stopwords
import matplotlib.pyplot as plt

# 读入小说
with open('novel.txt', 'r', encoding='utf-8') as f:
    text = f.read()

# 分词
words = jieba.cut(text)

# 去掉停用词
filtered_words = []
for word in words:
    if word not in stopwords:
        filtered_words.append(word)

# 将单词列表转换为字符串
text = ' '.join(filtered_words)

# 生成词云图
wordcloud = WordCloud(width=1200,height=600,background_color='white',max_words=200).generate(text)

# 显示词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

注意,这里使用了stopwords库中的中文停用词库。如果你没有安装stopwords库,需要先进行安装(参见材料准备部分)。