python分析热点词汇 |
您所在的位置:网站首页 › 战地5注册账号安全吗知乎推荐一下 › 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。 如果这篇文章对你有用,请点赞、转发、收藏、评论,如果喜欢我的文章,请搜索并关注“咿哑呀”,我将分享更多文章给大家。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |