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

云图

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 字体路径
  1. 绝对路径这里为了方便就使用绝对路径

    C:WindowsFontssimhei.ttf
    

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

  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:WindowsFontsSTFANGSO.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:WindowsFontssimhei.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:WindowsFontssimhei.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:WindowsFontsSTFANGSO.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
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:WindowsFontsSTFANGSO.TTF",
                      collocations=False,
                      background_color="white",
                      width=800,
                      height=600,
                      max_words=50).generate(txt_str)				#传入
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

请添加图片描述

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

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

注意事项:必须引入的使用就引入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:WindowsFontsSTFANGSO.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:WindowsFontsSTFANGSO.TTF",
                      collocations=False,
                      background_color="white",
                      width=800,
                      height=600,
                      max_words=50).generate(txt_str)
#生成图片
image = wordcloud.to_image()
#展示图片
image.show()

请添加图片描述

原文地址:https://blog.csdn.net/m0_73282576/article/details/130724153

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_21892.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注