词云图

wordcloud 是什么? 词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现词云图过滤掉大量的低频低质的文本信息使得浏览者只要一眼扫过文本就可领略文本的主旨。

安装

pip install wordcloud

怎么使用?

先导入,在创建一个wordcloud的实例化对象。

基本使用方法如下:

from wordcloud import WordCloud                          #导入
with open("new.txt","r",encoding="utf-8") as file:       #打开文件txt = file.read()                                 #读取文件wordcloud = WordCloud(font_path="BASKVILL.TTF",        #设置属性collocations=False,background_color="white",width=800,height=600,max_words=50).generate(txt)#生成图片image = wordcloud.to_image()#展示图片image.show()#保存图片wordcloud.to_file("tag.jpg")

这里面的参数都是什么意思?

  • font_path 字体路径。如果数据文件中包含的有中文的话,font_path必须指定字体,否则中文会乱码
  • collocations: 是否包括两个词的搭配,默认为True,如果为true的时候会有重复的数据,这里我不需要重复数据,所以设置为False
  • width 幕布的宽度,height 幕布的高度
  • max _words 要显示的词的最大个数
  • generate 读取文本文件
font_path 字体的路径
  1. 绝对路径:这里为了方便就使用绝对路径了

    C:\Windows\Fonts\simhei.ttf
    

    怎么找?
    在C:\Windows\Fonts\找到字体之后右键,属性,找到字体文件名

  2. 相对路径:

    把字体文件放到与py文件一个文件夹里

从文件中读取文本

from wordcloud import WordCloud
with open("new.txt","r",encoding="utf-8") as file:txt = file.read()wordcloud = WordCloud(font_path="BASKVILL.TTF",  #这里我用的是相对路径,自己演示的时候可以做修改collocations=False,background_color="white",width=800,height=600,max_words=50).generate(txt)#generate(txt)这个方法的作用是把 txt 里面的信息传给wordcloud,让他绘制词云图#生成图片image = wordcloud.to_image()#展示图片image.show()

文本为英文时font_path可以不用写

from wordcloud import WordCloud
# 第一个是包名,第二个是类名
txt ="The awesome yellow planet of Tatooine emerges from a totaleclipse,~her two moons glowing againstl"
wordcloud = WordCloud(# font_path="C:\Windows\Fonts\STFANGSO.TTF",collocations=False,      #这些也可以不用设置,默认的也可以background_color="black",width=800,height=600,max_words=50).generate(txt)
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

文本含中文时,不加字体路径会出现乱码现象

from wordcloud import WordCloud
# wordcloud是包名,WordCloud是类名
txt = "这是我写的第一个词云图"
wordcloud = WordCloud(# font_path="C:\Windows\Fonts\simhei.ttf",collocations=False,background_color="white",width=800,height=600,max_words=50).generate(txt)
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

把路径加上再演示一下

from wordcloud import WordCloud
# wordcloud是包名,WordCloud是类名
txt = "这是我写的第一个词云图"
wordcloud = WordCloud(font_path="C:\Windows\Fonts\simhei.ttf",collocations=False,background_color="white",width=800,height=600,max_words=50).generate(txt)
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

运行后会发现这根本不是词云图

wordcloud默认以空格来拆分词

怎么解决?

方法一:手动给中文分词

from wordcloud import WordCloud
# wordcloud是包名,WordCloud是类名
txt = "这 是我 写的 第一个 词云图"
wordcloud = WordCloud(font_path="C:\Windows\Fonts\STFANGSO.TTF",collocations=False,background_color="white",width=800,height=600,max_words=50).generate(txt)
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

方法二:

中文使用词云图—需要使用jieba分词模块

特点-支持三种分词模式:

  • 精确模式,试图将句子最精确地切开,适合文本分析
  • 全模式,把句子中所有的可以成词的词语都扫描出来速度非常快,但是不能解决歧义
  • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引警分词。
  • 支持繁体分词
  • 支持自定义词典

安装

pip install jieba
  • jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模e式,HMM 参数用来控制是否使用 HMM 模型。必须需要传入的参数:需要分词的字符串
  • jieba.cut_for_seaich 方法接受两个参数: 需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
  • jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用 =jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
import jieba
seg_list = jieba.cut("我来到北京清华大学") # 默认是精确模式
print(" ".join(seg_list)) seg_list = jieba.cut("小明硕士毕业于中国科学院计算所,后在日本京都大学深造") # 默认
print("-".join(seg_list))

一般都是以空格相连

全模式
seg_list = jieba.cut("我来到北京清华大学",cut_all=True)
print("Full Mode:" + " ".join(seg_list))
精确模式
seg_list = jieba.cut("我来到北京清华大学",cut_all=False)
print("Default Mode:" + " ".join(seg_list)) #精确模式
cut_for_search

会从前往后找能够拼接的词。把能组成词的全部显示出来

seg_list = jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")
print(" ".join(seg_list))

看一下拆分后是什么?

import jieba # 数据文件
txt ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
txt_list =jieba.cut(txt)       #jieba.cut()返回的是一个迭代器没法直接打印
print([i for i in txt_list])

txt_str = " ".join(txt_list)  #把txt_list 这个列表里的数据用空格来拼接起来,前面" "里面是什么,就拿什么拼接

还有一点要注意:

import jieba # 数据文件
txt ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
txt_list =jieba.cut(txt)       #jieba.cut()返回的是一个迭代器没法直接打印
print(type(txt_list))
print([i for i in txt_list])
txt_str = " ".join(txt_list)  #把txt_list 这个列表里的数据用空格来拼接起来,前面" "里面是什么,就拿什么拼接
print(txt_str)     # 这一步无法打印是因为前面使用了迭代器,前面迭代器已经走到最后了,再往后就没有了

词云图和分词结合起来

from wordcloud import WordCloud
import jieba
import jieba.analyse
txt ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
txt_list = jieba.cut(txt)                                          # 分词
txt_str = " ".join(txt_list)                                     # 拼接
wordcloud = WordCloud(font_path="C:\Windows\Fonts\STFANGSO.TTF",collocations=False,background_color="white",width=800,height=600,max_words=50).generate(txt_str)             #传入
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

但是它还有问题:像 的 了 着 这些我们不需要,怎么处理???

jieba.analyse的使用: 提取关键字

  • 第一个参数:待提取关键词的文本。

  • 第二个参数 topk:返回关键词的数量,重要性从高到低排排序

  • 第三个参数withWeight:是否同时返回每个关键词的权重 (一般用不到)

  • 第四个参数allowPOS=(): 词性过滤,为空表示不过滤,若提供则仅返回符合词性要求的关键词

    比如:名词为 n,动词为 v

注意事项:必须引入的使用就引入jieba.analyse,才能使用. 不能导入jieba,然后使用jieba.analyse,会报错

试一试?

import jieba
# import jieba.analyse
text ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
seg_list = jieba.analyse.extract_tags(text, allowPOS=("v"))
print("analysea extract allowPOS:"+ str((seg_list))) # 分析提取

提取名词

import jieba
import jieba.analyse
text ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
seg_list = jieba.analyse.extract_tags(text, allowPOS=("n"))
print("analysea extract allowPOS:"+ str((seg_list))) # 分析提取

提取动词

import jieba
import jieba.analyse
text ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
seg_list = jieba.analyse.extract_tags(text, allowPOS=("v"))
print("analysea extract allowPOS:"+ str((seg_list))) # 分析提取

不设置词性

import jieba.analyse
text ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
seg_list = jieba.analyse.extract_tags(text)
print("analysea extract allowPOS:"+ str((seg_list))) # 分析提取

词云图和分词结合起来

from wordcloud import WordCloud
import jieba.analyse
text ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
seg_list = jieba.analyse.extract_tags(text)#将列表拼接成字符串
txt_str = " ".join(seg_list)
wordcloud = WordCloud(font_path="C:\Windows\Fonts\STFANGSO.TTF",collocations=False,background_color="white",width=800,height=600,max_words=50).generate(txt_str)
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

对比上面生成的没有像 的 了 着 的那些词了,相比之下好很多

综合案例

from wordcloud import WordCloud
import jieba.analyse
text ="皇后区的友好邻居变成了宇宙的,现实世界资本的侵蚀之下,只有哥谭还维持着它的地域性"
seg_list = jieba.analyse.extract_tags(text,topK=3,allowPOS=("v"))#将列表拼接成字符串
txt_str = " ".join(seg_list)
wordcloud = WordCloud(font_path="C:\Windows\Fonts\STFANGSO.TTF",collocations=False,background_color="white",width=800,height=600,max_words=50).generate(txt_str)
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

python中的词云图相关推荐

  1. DayDayUp:寒门女孩考入北大→换角度看待表达《感谢贫穷》—关于吃苦与穷~~~Python之wordcloud词云图可视化

    DayDayUp:寒门女孩考入北大→换角度看待表达<感谢贫穷>-关于吃苦与穷~~~Python之wordcloud词云图可视化 目录 博主看法-关于吃苦与穷 文本内容 寒门女孩考入北大-& ...

  2. Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析

    Python基于WordCloud词云图的数据可视化分析 词云图的基本使用 政府工作报告分析 文章目录 1.词云图简介 2.wordcloud库的安装 3.WordCloud的主要参数说明 4.绘制词 ...

  3. Python生成中文词云图(二):不可指定词云特定的形状和颜色。

    Python生成中文词云图(二):不可指定词云特定的形状和颜色. 什么是词云? 首先,什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关 ...

  4. Python生成英文词云图

    Python生成英文词云图 什么是词云? 首先,什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从 ...

  5. Python生成中文词云图(一):可指定特定的词云形状和颜色。

    Python生成中文词云图 什么是词云? 首先,什么是词云呢?词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从 ...

  6. 数据科学 | Python酷炫词云图原来可以这么玩

    ↑↑↑↑↑点击上方蓝色字关注我们! 『运筹OR帷幄』转载 作者:费弗里 编者按 词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中的高频词.词云图过滤掉大量的低频低质的文 ...

  7. 大数据时代从繁乱冗杂中精准提取核心文本信息 × Python Tkinter 生成词云图

    背景 人类在数字化浪潮中面临着怎样的抉择?如何把握数字时代的机遇和挑战?科技日新月异,人类生活日益便捷,你是愕然还是亢奋?机器人越来越人性化,你是恐惧焦虑还是心生欢喜?人类是否可以始终制霸选择权中的& ...

  8. python背景颜色词云图_python中实现词云图

    import matplotlib.pyplot as plt import jieba from wordcloud import wordcloud # 1.读出词语 text = open('t ...

  9. python中词云图是用来描述_python中实现词云图

    import matplotlib.pyplot as plt import jieba from wordcloud import wordcloud # 1.读出词语 text = open('t ...

最新文章

  1. python网络爬虫_Python网络爬虫——爬取视频网站源视频!
  2. 一步一步学Silverlight 2系列(32):图形图像综合实例—“功夫之王”剧照播放_转载...
  3. 真人秀制作网站_[BoA] 出道20周年真人秀Nobody Talks To BoA上演与李秀满总制作人充满默契的对话!...
  4. mongodb查询值不为空_MongoDB使用规范(上)
  5. 谁能给我讲讲原理——视频弹幕游戏!!
  6. 基于MysqlConnector/C++的数据库连接池的实现
  7. matlab中k-means算法_机器学习 | KMeans聚类分析详解
  8. 2019.6.18 区块链论文翻译
  9. uni-app 引入本地iconfont的正确姿势以及阿里图标引入
  10. 最新知宇企业自动发卡系统源码 易支付接口版
  11. Bootloader的启动
  12. MySQL高级篇知识点——锁
  13. 亲爱的我把孩子放大了文案解说
  14. 关于最近很火的Python圣诞树
  15. 用html编写一个红绿灯,红绿灯.html
  16. 线性代数-向量,矩阵,线性变换
  17. win11开机声音如何关闭 windows11关闭开机声音的步骤方法
  18. 【服务器数据恢复】RAID5重建初始化失败,数据丢失的数据恢复
  19. 经验总结6—数据发散
  20. dell主板40针开机针脚_实测戴尔OptiPlex 790主板34针前置面板接口针脚接口定义

热门文章

  1. 聊一聊被 .NET程序员 遗忘的 COM 组件
  2. 陈鸽:正统或异端_异端:数字人包装
  3. 当PS弹出你的PS已经停止工作,你或许还可以使用这个方法挽救!
  4. 《坚持与自由》——读明朝那些事儿有感
  5. 软件测试与质量保证笔记
  6. opencv 图像添加畸变
  7. vue create is a Vue CLI 3 only command and you are using Vue CLI 2.9.6. You may want to run the fol
  8. python3基础写的水果销售系统
  9. 印美贸易战变成数据官司,我们能从中学到什么?
  10. 串口调试助手fx2n_串口调试助手详细讲解(结合实操),通讯问题不再是问题...