词云,相信大家都看到过,这是一个使用python的著名的词云工具wordcloud库绘制而成的,本文将详细介绍如何使用wordcloud绘制中国四大名著之一的《红楼梦》的词云。

1.准备工作

包括3部分:

2.wordcloud库和jieba库,可使用pip install wordcloud,pip install jieba进行安装

3.准备中文字体文件

txt文本文件和字体文件已打包,以方便大家直接复现本教程实例。

2.绘制《红楼梦》词云

直接上代码:

    from wordcloud import WordCloud
    import jieba
    text = "".join(jieba.cut(open("红楼梦.txt").read()))
    wordcloud = WordCloud(font_path="kaibold.ttf").generate(text)

    # Display the generated image:
    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis("off")
    plt.margins(x=0, y=0)
    plt.show()

《python3绘制炫酷的红楼梦词云》

虽然上面的实例中,我们首先导入需要的库,然后读取文本文件并使用jieba的cut进行中文分词,分词之后为list,使用空格连接list使其像英文一样满足词云工具的输入要求。然后指定使用的字体文件绘制图形即可。

可以看到,词云已经成功的绘制,但是还存在一些明显的问题,比如“道”这种次就出现在了好多地方而且频率非常高,是需要剔除的。接下来剔除。

《python3绘制炫酷的红楼梦词云》

3.特定图形的词云

除了上面的直接绘制外,wordcloud还可以根据用户给定的形状绘制词云,而这强大的功能只需要在生成wordcloud的时候使用mask参数指定即可,上代码:

    from wordcloud import WordCloud
    import jieba,requests
    from PIL import Image
    import numpy as np
    text = " ".join(jieba.cut(open("红楼梦.txt").read()))
    remove_word = [i.strip() for i in open("remove.txt").readlines()]
    for i in remove_word:
        text = text.replace(i+" ","")
    wave_mask = np.array(Image.open(BytesIO(requests.get(\
            "https://www.bobobk.com/wp-content/uploads/2018/11/butter.jpg").content)))

    # Make the figure

    wordcloud = WordCloud(mask=wave_mask,background_color="lightblue",font_path="/Library/Fonts/kaibold.ttf").generate(text)

    plt.imshow(wordcloud, interpolation='bilinear')
    plt.axis("off")
    plt.margins(x=0, y=0)
    plt.show()

 这里使用本站绘制的蝴蝶曲线生成的词云图形,如下

《python3绘制炫酷的红楼梦词云》

总结

通过公开的python库wordcloud,结合中文分词工具jieba绘制了红楼梦全文的词云。

字体文件及文本文件下载地址:

链接: https://pan.baidu.com/s/1Wi8sdpj9tva0pglDyfv8gA 提取码: pq6t