python词云图_Python生成一篇文章的词云图

使用前需要确保安装以下第三方库:

jieba, wordcloud, imageio, sklearn,csv

imageio、csv和sklearn在安装anaconda时默认是安装的,另外两个库需要手动安装,安装方式如下:

打开Anaconda Prompt使用pip安装即可:

pip install jieba

pip install wordcloud

我们选一篇自己喜欢的文章,然后保存为txt,放到工作目录下。我选取的文章为知乎上秋叶大叔的一篇文章:如何实现财富自由?

我将其内容保存为"caifu.txt",放在工作目录下,以下是获得这篇文章词云图的过程。

获得词云图

from wordcloud importWordCloud, STOPWORDSfrom imageio importimreadfrom sklearn.feature_extraction.text importCountVectorizerimportjiebaimportcsv#获取文章内容

with open("caifu.txt") as f:

contents=f.read()print("contents变量的类型:", type(contents))#使用jieba分词,获取词的列表

contents_cut =jieba.cut(contents)print("contents_cut变量的类型:", type(contents_cut))

contents_list= " ".join(contents_cut)print("contents_list变量的类型:", type(contents_list))#制作词云图,collocations避免词云图中词的重复,mask定义词云图的形状,图片要有背景色

wc = WordCloud(stopwords=STOPWORDS.add("一个"), collocations=False,

background_color="white",

font_path=r"C:\Windows\Fonts\simhei.ttf",

width=400, height=300, random_state=42,

mask=imread('axis.png',pilmode="RGB"))

wc.generate(contents_list)

wc.to_file("ciyun.png")#使用CountVectorizer统计词频

cv =CountVectorizer()

contents_count=cv.fit_transform([contents_list])#词有哪些

list1 =cv.get_feature_names()#词的频率

list2 =contents_count.toarray().tolist()[0]#将词与频率一一对应

contents_dict =dict(zip(list1, list2))#输出csv文件,newline="",解决输出的csv隔行问题

with open("caifu_output.csv", 'w', newline="") as f:

writer=csv.writer(f)for key, value incontents_dict.items():

writer.writerow([key, value])

上述代码中,变量的类型如下:

contents变量的类型: contents_cut变量的类型:contents_list变量的类型:

词云图的形状我尝试了两种,一种是cat.png,另一种是在PPT中直接画一个箭头,保存为图片格式,如下图:

1600350-20190630221803005-1836276208.png

1600350-20190630221850814-835660061.png

两种背景图产生的词云图结果如下:

1600350-20190630221942268-400048819.png

1600350-20190630222009943-2119932828.png

我们可以把背景图的设置为任意形状和图片,如果没有合适的照片,我们可以用PPT自己画一个合适的形状。

获得词频列表,保存为csv文件

如果还想要获得词频列表,可以使用sklearn中的CountVectorizer统计词频,当然也可以自己写函数实现。上述代码输出了词频的csv文件,如下图:

1600350-20190630225059535-1894583984.png

参考链接:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值