python的总结与心得词云设计理念_用python分析文章并绘出词云,让你更清楚了解文章主要内容...

今天,咿哑呀带领大家学习怎样给一篇文章总结分析出词云,让我们更清楚地了解文章的主要意思,理解文章意义。为了分析文章,我们需要使用第三方库jieba,将文章分解出相关词语,然后将出现次数最多的词语进行有序排序提炼,再使用第三方库wordcloud和matplotlib库将关键词进行绘制,就成了文章词云。

下面,我们将词云组合成一个类,让运用的更广泛。首先我们要在系统终端命令窗口用命令pip install安装jieba3k、wordcloud、matplotlib等库。安装完成后,新建一个python脚本文件wordcloud.py。在wordcoud.py中写以下代码:

import io

import re

import jieba

import matplotlib.pyplot as plt

from wordcloud import WordCloud, ImageColorGenerator

from scipy.misc import imread

然后,写word_cloud类,这个类是整个词云的关键代码。代码如下:

class word_cloud:

def __init__(self, txt_file, jpg_file):

self.mapping = {}

rewords = ''

with io.open(txt_file, encoding="utf-8") as f:

for s in re.findall("\w+", f.read()):

rewords += s.lower() + ' '

for word in jieba.cut(rewords):

if len(word) > 1:

self.mapping[word] = self.mapping.get(word, 0) + 1

word_num=int(len(self.mapping.keys())*0.9)

wordlist = sorted(self.mapping.items(), key=lambda item: item[1], reverse=True)[:word_num]

worddict = {}

total = 0

mstr=''

for item in wordlist:

total += item[1]

for item in wordlist:

worddict[item[0]] = item[1] / total

mstr += item[0] +':'+ str(item[1] / total) + '\n'

with open('output\\'+txt_file.split('\\')[-1][:-4]+'.txt','w', encoding='utf8') as f:

f.write(mstr)

color_mask = imread(jpg_file) # 读取背景图片

image_colors = ImageColorGenerator(color_mask)

cloud = WordCloud(

font_path="fonts\simhei.ttf",

background_color='white',

# 词云形状

mask=color_mask,

# 允许最大词汇

max_words=word_num,

max_font_size=40

)

word_cloud = cloud.generate_from_frequencies(worddict) # 产生词云

plt.imshow(word_cloud.recolor(color_func=image_colors))

plt.axis('off')

plt.show()

word_cloud.to_file(txt_file.split('\\')[-1][:-4]+'.png')

注意,这个类中使用了fonts中的字库simhei.ttf,要确保目录中有这个字库,否则,更换相关代码。继续写入主函数代码:

if __name__ == '__main__':

word_cloud(r"test.txt", r'bg.jpg')

然后,在wordcloud.py的同一目录下,建好所需要的test.txt文章,同时,保存一幅需要形成词云形状的图片bg.jpg。按F5运行这个脚本,看是不是形成了一个词云图片,并且,在这个目录下是不是生成了一个词云文件test.png。

如果这篇文章对你有用,请点赞、转发、收藏、评论,如果喜欢我的文章,请搜索并关注“咿哑呀”,我将分享更多文章给大家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值