当前位置:   article > 正文

【Python】生成词云图太简单了|拿来就用能的词云图代码_词云分析图

词云分析图

1 词云简介

词云也叫文字云,是一种可视化的结果呈现,常用在爬虫数据分析中,原理就是统计文本中高频出现的词,过滤掉某些干扰词,将结果生成一张图片,直观的获取数据的重点信息。今天,我们一起来学习一下Python生成词云的常用库「wordcloud」

wordcloud是第三方库,需要提前下载安装。

安装: pip install wordcloud

 wordcloud 对象有很多参数设定,设定不同的参数,可以绘制不同形状、颜色和尺寸的词云图。


2 WordCloud对象常用参数 

参数说明
font_path设置字体,指定字体文件的路径
width生成图片宽度,默认400像素
height生成图片高度,默认200像素
mask词云形状,默认使用矩形
min_font_size词云中最小的字体字号,默认4号
font_step字号步进间隔,默认1
max_font_size词云中最大的字体字号,默认根据高度自动调节
max_words词云显示的最大词数,默认200
stopwords设置停用词(需要屏蔽的词),停用词不在词云中显示,默认使用内置的STOPWORDS
background_color图片背景颜色,默认黑色

3 WordCloud常用方法 

方法功能
generate(text)加载词云文本
to_file(filename)输出词云文件

 wordcloud默认是为了英文文本来做词云的,如果需要制作中文文本词云,就需要先对中文进行分词。这里就需要用到中文分词库「jieba」


4 jieba 分词库

jieba 是优秀的中文分词库,需要安装。它的原理是利用一个中文词库,确定中文字符之间的关联概率,汉字间概率大的组成词组,形成分词结果,除了分词,还可以添加自定义词组。

安装:pip install jieba

jieba有三种分词模式,这里我们只学习它的精确模式,把文本精确地切分开,不存在冗余单词。

使用jieba.lcut(s),返回列表型分词结果。当然,也可以使用jieba.add_word(w)向jieba库中增加词语。


5 使用wordcloud生成词云的步骤

  • 读取文件,分词整理,生成词云文本
  • 配置wordcloud对象参数,加载词云文本
  • 计算词频,输出词云文件

6 词云案例

        --- 爬取最近很火的一部电影《芭比》的影评数据,生成词云图。 

1)生成文本文件 

        获取豆瓣电影网站10页短评数据,保存到文本中。

代码如下:

  1. import requests
  2. from lxml import etree
  3. import time
  4. import random
  5. # 通过观察url翻页的规律,使用for循环得到10个链接,保存到urls列表中
  6. urls = ['https://movie.douban.com/subject/4058939/comments?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for
  7. i in range(0, 200, 20)]
  8. # print(urls)
  9. headers = {
  10. "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
  11. }
  12. # 初始化用于保存短评的列表
  13. comments_list = []
  14. # 使用for循环遍历获取每个页面的数据,保存到comments_list列表中
  15. for url in urls:
  16. resp = requests.get(url=url, headers=headers).text
  17. html = etree.HTML(resp)
  18. data_list = html.xpath('//div[@id="comments"]/div[@class="comment-item "]')
  19. # page_list用于保存同一页面内的所有评论
  20. page_list = []
  21. for data in data_list:
  22. comment = data.xpath('./div[2]/p/span/text()')[0]
  23. page_list.append(comment)
  24. # print(page_list)
  25. comments_list.extend(page_list)
  26. # 让程序随机睡眠0~3秒,避免速度过快被反爬
  27. time.sleep(random.randint(0, 3))
  28. print("共获取电影《芭比》的短评条数:", len(comments_list))
  29. with open('movie_comments.txt', 'w', encoding='utf-8') as f:
  30. # 将列表中的数据逐条写入到文本文件中
  31. for comment in comments_list:
  32. f.write(comment + "\n")

 2)生成基本的词云

        读取第一步中的文本文件,生成词云图。

 代码如下:

  1. import jieba
  2. import wordcloud
  3. # 读取文本
  4. with open("movie_comments.txt", encoding="utf-8") as f:
  5. s = f.read()
  6. # print(s)
  7. # 生成分词列表
  8. list_s = jieba.lcut(s)
  9. # print(ls)
  10. # 用空格连接成字符串文本
  11. text = ' '.join(list_s)
  12. # print(text)
  13. # 将不需要显示的词整理好后,放入stopwords中
  14. stopwords = ["是", "的", "了", "啊"]
  15. # 创建词云对象
  16. wc = wordcloud.WordCloud(font_path="msyh.ttc",
  17. width=1000,
  18. height=700,
  19. background_color='white',
  20. max_words=100,
  21. stopwords=stopwords)
  22. # msyh.ttc是电脑本地字体,也可以写成绝对路径,字体也可以根据需求换其他字体文件
  23. wc.generate(text) # 加载词云文本
  24. wc.to_file("芭比comments.png") # 保存词云图文件

词云图效果如下:

 3)添加蒙版图片的词云图

可以将有白色背景的图片作为蒙版图片,而有图案的地方会被词云填充。

添加蒙版图片需要使用PIL库和numpy库,需提前下载安装。

本案例添加蒙版图片如下:

 

 代码如下:

  1. from wordcloud import WordCloud
  2. from PIL import Image
  3. import numpy as np
  4. import jieba
  5. # 打开文本
  6. with open("movie_comments.txt", encoding="utf-8") as f:
  7. s = f.read()
  8. # 中文分词
  9. text = ' '.join(jieba.cut(s))
  10. # 打开蒙版图片,生成Image对象
  11. img = Image.open("img/chicken.jpg") # 打开遮罩图片
  12. # 生成蒙版
  13. mask = np.array(img) # 将图片转换为数组
  14. # 整理不需要显示的词
  15. stopwords = ["的", "是", "了", "在", "也", "和", "就", "都", "这", "你", "我", "她"]
  16. # 生成WordCloud词云对象,并加载text字符串文本
  17. wc = WordCloud(font_path="msyh.ttc",
  18. mask=mask,
  19. width=1000,
  20. height=800,
  21. background_color='white',
  22. max_words=200,
  23. stopwords=stopwords).generate(text)
  24. # 保存词云图到文件
  25. wc.to_file("芭比comments.png")

词云图效果如下:

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/531895
推荐阅读
相关标签
  

闽ICP备14008679号