python中文词云程序例子_使用python生成词云

什么是词云呢?

词云就是一些关键词组成的一个图片。大家在网上经常看到,下面看一些例子:

fda17b2a84c94f87546318addaf4a325.png

85c20ce36a1a9dc8e1a375ba85337046.png

那用python生成一个词云的话怎么办呢,首先要有一些词,咱们随便找个吧,用see you again的歌词好了,放到again.txt里面,放着待会咱们用。

然后呢,咱们用 wrodcloud这个模块,他可以实现分词,生成咱们想要的词云图片,直接使用pip install wordcloud安装即可。

过程呢,就是先读取到歌词,然后给WordCloud,让他帮咱们分词,分词的意思就是把里面的一些关键词提取出来,以及指定图片的大小,背景颜色,字体等等,废话不多说,直接上代码。

1

2

3

4

5

6

7

8

9

10

11

fromwordcloud importWordCloud#导入词云模块

words=open('again.txt',encoding='utf-8').read()#打开歌词文件,获取到歌词

wordcloud=WordCloud(width=1000,#图片的宽度

height=860,#高度

margin=2,#边距

background_color='black',#指定背景颜色

font_path='simsun.ttf'#指定字体文件,要有这个字体文件,自己随便想用什么字体,就下载一个,然后指定路径就ok了

)

wordcloud.generate(words)#分词

wordcloud.to_file('again.jpg')#保存到图片

简单的几行代码就ok拉,下面是生成的效果图

8a6f069e91b92ce84e54616d858501d2.png

但是wordcloud这个模块对中文分词支持不怎么好,因为英文每个单词都是空格分开的,但是中文每个词语并部署,另外有个模块,对中文分词的比较好,这个模块是jieba,直接pip install jieba即可。

下面咱们再找个歌词,来个中文的,找到一路向北的歌词,保存到ylxb.txt里面,然后先使用wordcloud分词,保存到,lyxb1.jpg里面,再用jiba来分词,保存到lyxb2.jpg里面,看看差别

第一张,wordcloud自带的分词之后的词云

66e4e3bdf39188343cc131683ce1b593.png

第二张,使用jieba分词之后的词云

3042fa9bacf24ea44b7533a2a9c559f2.png

明显就能看出来第一个基本就没有分词,使用jieba之后,把歌词里面的一些词语提取了出来,下面是代码。

1

2

3

4

5

6

7

8

9

10

11

12

importjieba

fromwordcloud importWordCloud#导入词云模块

words=open('lyxb',encoding='utf-8').read()#打开歌词文件,获取到歌词

new_words=' '.join(jieba.cut(words))#使用jieba.cut分词,然后把分好的词变成一个字符串,每个词用空格隔开

wordcloud=WordCloud(width=1000,#图片的宽度

height=860,#高度

margin=2,#边距

background_color='black',#指定背景颜色

font_path='simsun.ttf'#指定字体文件,要有这个字体文件,自己随便想用什么字体,就下载一个,然后指定路径就ok了

)

wordcloud.generate(new_words)#分词

wordcloud.to_file('lyxb2.jpg')#保存到图片y

ok,词云已经生成了,很完美。但是我看到别人的词云,都是各种形状的,为啥咱们都是一个矩形呢。当然是可以解决的了,咱们想让它成什么形状就是什么形状,需要先找到一个有形状的图片,我这里找了一棵树的图片作为例子,然后需要用到PIL模块,处理图片,用numpy把这个图片的各种属性转成数字,这2个模块需要安装,都是用pip安装即可,pip install PIL,pip install numpy。先看下图片

原来的大树参照物

3935df401a786487ecb004232e793d47.png

下面是产生大树形状的词云

36b9459a9184ad3a8c451e7d3be94de8.png

下面直接上代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

importjieba,numpy

fromPIL importImage#导入PIL模块处理图片

fromwordcloud importWordCloud#导入词云模块

words=open('lyxb',encoding='utf-8').read()#打开歌词文件,获取到歌词

new_words=' '.join(jieba.cut(words))#使用jieba.cut分词,然后把分好的词变成一个字符串,每个词用空格隔开

alice_mask=numpy.array(Image.open('dashu.jpg'))

#使用pil模块打开这个图片,然后用numpy获取到这个图片各种乱八七糟的属性

wordcloud=WordCloud(width=1000,#图片的宽度

height=860,#高度

margin=2,#边距

mask=alice_mask,

background_color='#d4ff80',#指定背景颜色,这里用的是颜色代码

font_path='simsun.ttf'#指定字体文件,要有这个字体文件,自己随便想用什么字体,就下载一个,然后指定路径就ok了

)

wordcloud.generate(new_words)#分词

wordcloud.to_file('lyxb4.jpg')#保存到图片

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值