Python给小说做词云

标签:gdi   分割   org   list   white   space   join   sci   date   

  闲暇时间喜欢看小说,就想着给小说做词云,展示小说的主要内容。开发语言是Python,主要用到的库有wordcloud、jieba、scipy。代码很简单,首先用jieba.cut()函数做分词,生成以空格分割的字符串,然后新建WordCloud类,保存为图片。

 1 #coding:utf-8
 2 import sys
 3 import jieba
 4 import matplotlib.pyplot as plt
 5 from wordcloud import WordCloud,ImageColorGenerator
 6 from scipy.misc import imread
 7 from datetime import datetime
 8 
 9 novel=sys.argv[1] #‘assz.txt‘
10 imgmask=sys.argv[2] #‘assz.jpg‘
11 t=datetime.now()
12 resimg="word_"+novel.split(.)[0]+"_"+str(t.month)+str(t.day)+str(t.hour)+str(t.minute)+str(t.second)+".jpg"
13 
14 novletext=open(novel).read()
15 hmseg=jieba.cut(novletext)
16 
17 seg_space= .join(hmseg)
18 
19 alice_color=imread(imgmask)
20#wordcloud默认不支持中文,这里的font_path需要指向中文字体,不然得到的词云全是乱码
21 fwc=WordCloud(font_path=msyh.ttc,max_words=700,background_color=white,mask=alice_color,max_font_size=100,font_step=1).generate(seg_space)
22 imagecolor=ImageColorGenerator(alice_color)
23 plt.imshow(fwc.recolor(color_func=imagecolor))
24 plt.axis("off")
25 plt.show()
26 fwc.to_file(resimg)

结果如下

技术分享

  得到的结果很不理想,一是角色的名字被分割开,比如“路西恩”被分割成了“路西”、“恩”或者“路”、“西恩”;二是“这样”、“那样”、“他们”这样的常用词太多,盖住了其他词语,让人无法确定小说的内容。

Python给小说做词云

扫一扫手机访问