词云生成 python wordcloud库

目录

前言

一、程序展示

二、代码讲解

1.准备阶段:

2.初始化并生成词云


前言

 词云是一个很炫酷的工具,它能够把枯燥无味的句子中的单词放到一张空白页面上,单词出现频率越高,空白页上显示的单词就越大。我们想用这个代码段来生成一张词云,最好还有特定形状,这样更酷一点。该程序一共分两个部分:1.准备阶段 2.生成词云


一、程序展示

import wordcloud, jieba, imageio

content = "蛋白质是组成人体一切细胞、组织的重要成分。一般说,蛋白质约占人体全部质量的百分之十八。蛋白质是生命的物质基础,是有机大分子,是构成细胞的基本有机物"
shape=imageio.imread("summer1.jpg")
cut1=jieba.lcut(content)
perfect=" ".join(cut1)
font="楚辰体_.ttf"
w=wordcloud.WordCloud(width=600,height=400,max_words=100,max_font_size=70,background_color="white",font_path=font,mask=shape)
w.generate(perfect)
w.to_file("summer.png")


二、代码讲解

1.准备阶段:

第二行到第六行其实就是数据的写入读出,没有什么实际意义。我们从第七行说起。。。第七行加载图片并将他转换成wordcloud可识别的图片载体。这一步为的是给词云框定一个形状。注意:图片背景什么都不能有,不然imageio可能无法识别出正确的形状。

接下来对于英语输入,就不用jieba这两行,可以直接跳到w=wordcloud.WordCloud()这一步——初始化词云对象。而对于中文输入,我们就需要用jieba.lcut(content) 先将这段中文输入砍成一个个词(像“了”,“的”,这样没有实际意义的词他不会放到词云中),在分隔的地方标上imageio可以识别的分隔符后,再把他们用jieba." ".join(cut1),即用空格再把词按顺序拼接回句子。

为什么英文就可以直接初始化而中文还要多三步呢?这是因为英文的标点符号包括空格wordcloud库是能够看懂的,可是对于中文的标点符号他就犯了难,不知道要如何把中文句子分割成一个个词。这个时候就需要jieba库的帮助,把中文单词进行分隔并重新组合。

分隔了,又组合了回去......这不是相当于什么都没有干么?别忘了,上一段提到,jieba做的不仅仅是组合了回去,他还在每个该分隔的地方做了个imageio可以识别的标记,这样imageio就可以直接根据分隔符来将句子分成词了,顺便还舍弃了标点符号,多智能啊!

然后就是加载中文字体,我这里下载了“楚辰体”。(大家别忘了把字体,图片和程序保存在一个文件夹里面)

2.初始化并生成词云

创建词云对象w,我们看到WordCloud()里面有好多的参数设置,有长宽,有最大字体设置,还有单词展示数量上限,背景颜色,字体样式和词云形状设置。我们都可以试一下,看看怎么搭配最好看。然后就是在generate()方法中输入句子并生成词云,再用w.to_file()保存词云并起名为:”summer.png"。

插一句:有些人可能会想导入一篇文章。但是如果把文章复制进程序里的话,不仅显得很冗余,看起来不像程序,还会严重影响代码的优美度和可读性,让读代码的人脑袋嗡嗡的。所以我们必须将该文章保存到另外一个地方。这个时候我们就需要用with open(),旨在帮助我们打开文件写入数据,或打开文件读取数据。基本操作如下所示:

content="articlexxxxxxxstringxxxxxxxxxxxx"

with open("xxx.txt","w") as f1:
    f1.write(content)

with open("xxx.txt","r") as f2:
    output=f2.read()

    

你可能感兴趣的:(python,中文分词,大数据)