python3绘制炫酷的红楼梦词云
词云,相信大家都看到过,这是一个使用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()
虽然上面的实例中,我们首先导入需要的库,然后读取文本文件并使用jieba的cut进行中文分词,分词之后为list,使用空格连接list使其像英文一样满足词云工具的输入要求。然后指定使用的字体文件绘制图形即可。
可以看到,词云已经成功的绘制,但是还存在一些明显的问题,比如“道”这种次就出现在了好多地方而且频率非常高,是需要剔除的。接下来剔除。
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()
这里使用本站绘制的蝴蝶曲线生成的词云图形,如下
总结
通过公开的python库wordcloud,结合中文分词工具jieba绘制了红楼梦全文的词云。
字体文件及文本文件下载地址:
链接: https://pan.baidu.com/s/1Wi8sdpj9tva0pglDyfv8gA 提取码: pq6t
- 原文作者:春江暮客
- 原文链接:https://www.bobobk.com/252.html
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。