主要库:wordcloud,jieba,matplotlib
本例子实现制作一个网页内容的词云
注意,如果中文词云出现乱码,可以根据下面的博客介绍内容进行操作:
https://blog.csdn.net/Dick633/article/details/80261233
参考文章:http://liyangbit.com/nltk/nltk-yidaiyilu/
代码中出现的图片timg.jpg
是直接在百度图片上找到的中国地图。
下面直接贴上代码,已有详细注释
# -*- coding: utf-8 -*- """ Created on Tue Jun 5 12:56:01 2018 @author: kindy 本例子实现制作一个网页内容的词云 注意,如果中文词云出现乱码,可以根据下面的博客介绍内容进行操作: https://blog.csdn.net/Dick633/article/details/80261233 参考文章:http://liyangbit.com/nltk/nltk-yidaiyilu/ """ ## 0、导入相关包 import jieba from wordcloud import WordCloud, ImageColorGenerator import matplotlib.pyplot as plt import os import PIL.Image as Image import numpy as np import requests from bs4 import BeautifulSoup ## 1、需要分析的网页 url_2018 = 'http://www.gov.cn/xinwen/2018-03/22/content_5276608.htm' ## 2、构造提取网页内容以及使用jieba分词相关函数 def extract_text(url): """ url: 传入的网页地址 Extract html content.抽取html网页内容 """ page_source = requests.get(url).content bs_source = BeautifulSoup(page_source,'lxml') report_text = bs_source.find_all('p') text = '' for p in report_text: text += p.get_text() text += '\n' return text ## 3、首先使用 jieba 中文分词工具进行分词 text =extract_text(url_2018) # 这一步可以自己输入需要制作词云的文本 wordlist = jieba.cut(text, cut_all=False) # cut_all, True为全模式,False为精确模式 wordlist_space_split = ' '.join(wordlist) ## 4、使用WordCloud词云 d = os.path.dirname(__file__) # 获取当前路径 alice_coloring = np.array(Image.open(os.path.join(d,'timg.jpg'))) # 打开一幅图片,图片形状就是词云的形状 # 简单介绍WorCloud的参数: # background_color: 背景颜色,可以是16进制形式,如 #ffffff # mask :就是自己生成的词云想要哪种形状,就是前面打开的图片内容里的形状 # max_words: 最大词数,即最多显示多少词 # max_font_size:最大字体大小 my_wordcloud = WordCloud(background_color='white', max_words=100, mask=alice_coloring, max_font_size=300, random_state=42).generate(wordlist_space_split) image_colors = ImageColorGenerator(alice_coloring) # 词云的颜色是根据蒙版图片里的颜色生成的 plt.show(my_wordcloud.recolor(color_func=image_colors)) plt.imshow(my_wordcloud) # 以图片的形式显示词云 plt.axis('off') # 关闭坐标轴 plt.show() ## 5、保存词云图片 #my_wordcloud.to_file(os.path.join(d, 'words_cloud.png'))
结果如图:
文章来源: python/wordcloud制作词云图