本文灵感及主要内容来源于以下文章:
http://www.tuicool.com/wx/mqIV73E
http://blog.csdn.net/qq_21057881/article/details/69562028
————————————————————————————————————
目标:
要作出这张看起来酷炫(其实并不)的图,需要准备以下材料:
- python
- 《人民的名义》剧本(直接下载或者用爬虫下载,我用的python版本为3.4,tuicool里给出的爬虫并不好用)
- jieba(最好的中文分词工具)wordcloud(词云制作工具)
- 酷炫的中文字体(可以下载心仪的ttf)
先附上代码,毕竟本人才疏学浅,只会找些有意思又不难的东西实现,因此代码足够短。
#coding=gbk import jieba import jieba.analyse from scipy.misc import imread from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator import matplotlib.pyplot as plt file_name='people.txt' content = open(file_name, 'rb').read() word_jieba = jieba.cut(content) word_split = " ".join(word_jieba) my_wordclud = WordCloud(max_words=100,width = 1600,height=800,font_path='W2.ttf').generate(word_split) plt.imshow(my_wordclud) plt.axis("off") plt.show()
0 安装python
其实我建议大家安装anaconda,功能强大,可以同时用conda和pip管理包。一些数据科学的常用包(如scipy)已经预安装,可以直接使用。
1 安装jieba和wordcloud
pip install ... 其中jieba的github值得一看。里面的教程简明易懂。
2 下载剧本txt
3 对剧本进行分词
jieba.cut()为默认的分词函数,可以将剧本拆分为词。当然,对于人名的分词还是有问题的,可以自己写一个词典,把剧中的人民加入词典中,这样就不会出现类似“瑞金”这样不完整的人名了。添加词典的语法为:
jieba.load_userdict(file_name) # file_name 为文件类对象或自定义词典的路径
4 云词的制作
需要注意的是,云词的制作需要中文字体的支持。W2是我从网站上下的一个中文艺术字体(里的最不艺术的字体),ubuntu的字体放在/usr/share/fonts中,如果安装过中文字体的可以引用这个目录下的字体。
5 欣赏