词云制作

 

【领域文章来源】:

通过百度查找余光中的《寻李白》,复制粘贴内容,在本地自己创建txt文件。

 

【程序编写基本思路】

通过jieba库和wordcloud库制作词云图片。调用目标txt内容,通过jieba的分词功能来产生词组;再用wordcloud库展示词云。

 

【源代码】:

import jieba
from wordcloud import WordCloud

excludes={'高力士','靴子','而今','太太','','','自从','那年'}
f=open('寻李白.txt','r',encoding='utf-8')
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=''.join(words)
wordcloud=WordCloud(background_color="white",\
                    width=900,\
                    height=600,\
                    font_path='msyh.ttc',\
                    stopwords=excludes,\
                    ).generate(newtxt)
wordcloud.to_file("寻李白.png")

 

【词云效果】:

 

 

【遇到问题及解决方法】:

 

在最开始的时候其实我是用一首英文歌的歌词试试水,整体还都很顺畅,但是最终词云效果出来之后感觉不太美观。于是就想制作一个中文词云试试,然后.......问题就出现了。

代码1.0:

import jieba
from wordcloud import WordCloud

excludes={'高力士','靴子','而今','太太','','','自从','那年'}
f=open('寻李白.txt','r')
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=''.join(words)
wordcloud=WordCloud(background_color="white",\
                    width=900,\
                    height=600,\
                    stopwords=excludes,\
                    ).generate(newtxt)
wordcloud.to_file("寻李白.png")

 

运行!然后发现出现了不能解码的问题......

我就去网上搜了一圈,参考CSDN博客,txt文档是gbk编码而Python不能识别,需要通过encoding=‘utf-8’转换一下。

【这里虽然输出问题解决了,但是对于英文内容就可以直接生成词云,中文内容就需要增加这一行代码的原因我其实还是不是特别明白......如果有了解的同学,希望能够留言解答,非常感谢了。】

 

开心地修改代码:

 

import jieba
from wordcloud import WordCloud

excludes={'高力士','靴子','而今','太太','','','自从','那年'}
f=open('寻李白.txt','r',encoding='utf-8')
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=''.join(words)
wordcloud=WordCloud(background_color="white",\
                    width=900,\
                    height=600,\
                    stopwords=excludes,\
                    ).generate(newtxt)
wordcloud.to_file("寻李白.png")

 

 

运行!然后......

 

 

?????????

 

翻开二级教程书看一看发现写着这么一句话:“处理中文时还需要指定中文字体”

也就是说需要在最后WordCloud()中加入参数:font_path='xxx.ttc',其中xxx表示某字体。

 

修改之后就是上面源代码部分的代码了。

 

 

 

本人水平有限,难免会有错误的地方,还请多批评指正!

 

posted @ 2020-04-04 15:15  王书玉  阅读(301)  评论(1编辑  收藏  举报