Python实现Wordcloud生成词云图的示例

wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概。

首先贴出一张词云图(以哈利波特小说为例):

在生成词云图之前,首先要做一些准备工作

1.安装结巴分词库

pip install jieba

Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型。

下面我来简单介绍一下结巴分词的用法

结巴分词的分词模式分为三种:

(1)全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题

(2)精确模式:将句子最精确地切开,适合文本分析

(3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词

下面用一个简单的例子来看一下三种模式的分词区别:

import jieba

 # 全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题
 text = "哈利波特是一常优秀的文学作品"
 seg_list = jieba.cut(text, cut_all=True)
 print(u"[全模式]: ", "/ ".join(seg_list))

 # 精确模式:将句子最精确地切开,适合文本分析
 seg_list = jieba.cut(text, cut_all=False)
 print(u"[精确模式]: ", "/ ".join(seg_list))

 # 默认是精确模式
 seg_list = jieba.cut(text)
 print(u"[默认模式]: ", "/ ".join(seg_list))

 # 搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词
seg_list = jieba.cut_for_search(text)
print(u"[搜索引擎模式]: ", "/ ".join(seg_list))

下面是对这句话的分词方式:

通过这三种分词模式可以看出,这些分词模式并没有很好的划分出“哈利波特”这个专有名词,这是因为在结巴分词的字典中并没有记录这个名词,所以需要我们手动添加自定义字典

添加自定义字典:找一个方便引用的位置              (下图的路径是我安装的位置),新建文本文档(后缀名为.txt),将想添加的词输入进去(注意输入格式),保存并退出

在上面的代码中加入自定义字典的路径,再点击运行

jieba.load_userdict("/home/jmhao/anaconda3/lib/python3.7/site-packages/jieba/mydict.txt")

分词结果,可以看出“哈利波特”这个词已经被识别出来了

结巴分词还有另一个禁用词的输出结果

 stopwords = {}.fromkeys(['优秀', '文学作品'])

 #添加禁用词之后
 seg_list = jieba.cut(text)
 final = ''
 for seg in seg_list:
   if seg not in stopwords:
       final += seg
 seg_list_new = jieba.cut(final)
 print(u"[切割之后]: ", "/ ".join(seg_list_new))

可以看到输出结果中并没有“优秀”和“文学作品”两个词

结巴分词还有很多比较复杂的操作,具体的可以去官网查看,我就不再过多的赘述了

下面我们正式开始词云的制作

首先下载模块,这里我所使用的环境是Anaconda,由于Anaconda中包含很多常用的扩展包,所以这里只需要下载wordcloud。若使用的环境不是Anaconda,则另需安装numpy和PIL模块

pip install wordcloud

然后我们需要找一篇文章并使用结巴分词将文章分成词语的形式

# 分词模块
 def cut(text):
   # 选择分词模式
   word_list = jieba.cut(text,cut_all= True)
   # 分词后在单独个体之间加上空格
   result = " ".join(word_list)
   # 返回分词结果
   return result

这里我在当前文件夹下创建了一个文本文档“xiaoshuo.txt”,并复制了一章的小说作为词云的主体文字

使用代码控制,打开并读取小说的内容

 #导入文本文件,进行分词,制作词云
 with open("xiaoshuo.txt") as fp:
   text = fp.read()
   # 将读取的中文文档进行分词
   text = cut(text)

在网上找到一张白色背景的图片下载到当前文件夹,作为词云的背景图(若不指定图片,则默认生成矩形词云)

#设置词云形状,若设置了词云的形状,生成的词云与图片保持一致,后面设置的宽度和高度将默认无效
  mask = np.array(image.open("monkey.jpeg"))

接下来可以根据喜好来定义词云的颜色、轮廓等参数 下面为常用的参数设置方法

font_path : "字体路径" 词云的字体样式,若要输出中文,则跟随中文的字体
width =  n 画布宽度,默认为400像素
height =  n 画布高度,默认为400像素
scale = n 按比例放大或缩小画布
min_font_size = n 设置最小的字体大小
max_font_size = n 设置最大的字体大小
stopwords = 'words' 设置要屏蔽的词语
background_color = ''color 设置背景板颜色
relative_scaling = n 设置字体大小与词频的关联性
contour_width = n 设置轮廓宽度
contour_color = 'color' 设置轮廓颜色

完整代码

#导入词云库
 from wordcloud import WordCloud
 #导入图像处理库
 import PIL.Image as image
 #导入数据处理库
 import numpy as np
 #导入结巴分词库
 import jieba

 # 分词模块
 def cut(text):
   # 选择分词模式
   word_list = jieba.cut(text,cut_all= True)
   # 分词后在单独个体之间加上空格
   result = " ".join(word_list)
   return result

 #导入文本文件,进行分词,制作词云
 with open("xiaoshuo.txt") as fp:
   text = fp.read()
   # 将读取的中文文档进行分词
   text = cut(text)
   #设置词云形状
   mask = np.array(image.open("monkey.jpeg"))
   #自定义词云
   wordcloud = WordCloud(
     # 遮罩层,除白色背景外,其余图层全部绘制(之前设置的宽高无效)
     mask=mask,
     #默认黑色背景,更改为白色
     background_color='#FFFFFF',
     #按照比例扩大或缩小画布
     scale=,
     # 若想生成中文字体,需添加中文字体路径
     font_path="/usr/share/fonts/bb5828/逐浪雅宋体.otf"
   ).generate(text)
   #返回对象
   image_produce = wordcloud.to_image()
   #保存图片
   wordcloud.to_file("new_wordcloud.jpg")
   #显示图像
   image_produce.show()

注:若想要生成图片样式的词云图,找到的图片背景必须为白色,或者使用Photoshop抠图替换成白色背景,否则生成的词云为矩形

我的词云原图:

生成的词云图:

到此这篇关于Python实现Wordcloud生成词云图的示例的文章就介绍到这了,更多相关Python Wordcloud生成词云图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python基于WordCloud制作词云图

    这篇文章主要介绍了python基于WordCloud制作词云图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 导入需要的包package import matplotlib.pyplot as plt from scipy.misc import imread from wordcloud import WordCloud,STOPWORDS import xlrd 2. 设置生成词云图的背景图片,最好是分辨率高且色彩边界分明的图片 de

  • Python实现Wordcloud生成词云图的示例

    wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前,首先要做一些准备工作 1.安装结巴分词库 pip install jieba Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型. 下面我来简单介绍一下结巴分词的用法 结巴分词的分词模式分为三种: (1)全模式:把句子中所有的可以成词的词语都扫描出

  • python 爬取豆瓣电影短评并利用wordcloud生成词云图

    目录 前言 第一步.准备数据 第二步.编写爬虫代码 第三步.生成词云图 前言 最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站[实验名称] 爬取豆瓣电影<千与千寻>的评论并生成词云 利用爬虫获得电影评论的文本数据 处理文本数据生成词云图 第一步.准备数据 需要登录豆瓣网站才能够获得短评文本数据movie.douban.com/subject/129… 首先获取cookies,使用爬虫强大的firefox浏览器 将cookies数据复制到cookies.txt文件当中备用, 第二步.编写爬

  • python根据文本生成词云图代码实例

    这篇文章主要介绍了python根据文本生成词云图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 效果 代码 from wordcloud import WordCloud import codecs import jieba #import jieba.analyse as analyse from scipy.misc import imread import os from os import path import matplot

  • python中实现词云图的示例

    import matplotlib.pyplot as plt import jieba from wordcloud import wordcloud # 1.读出词语 text = open('text/test.txt', 'r', encoding='utf-8').read() print(text) # 2.把歌词剪开 cut_text = jieba.cut(text) # print(type(cut_text)) # print(next(cut_text)) # print(

  • Python将QQ聊天记录生成词云的示例代码

    在这个情人节前夕,我把现任对象回收掉了,这段感情积攒了太多的失望,也给了我太多的伤害,所以我看到这个活动的第一反应是拒绝的.然而人生嘛,最重要的就是体验,沉浸在过去的回忆里没有意义,积极面对才能让自己更好地重振旗鼓. 所以,当大家都一致地在这个活动里各种秀恩爱时,我决定走一条不一样的路来为单身狗和刚分手的小伙伴们打打气:时间能改变的,是那些原本就不坚定的东西,未来的路还很长,笑一笑,一切都会过去的! 言归正传,我们要做的任务是,把 QQ 分手聊天记录导出,使用 Python 分词后做成分开的桃心

  • Python爬取英雄联盟MSI直播间弹幕并生成词云图

    一.环境准备 安装相关第三方库 pip install jieba pip install wordcloud 二.数据准备 爬取对象:2021年5月23号,RNG夺冠直播间的弹幕信息 爬取对象路径: 方式1.根据开发者工具(F12),获取请求url.请求头.cookie等信息: 方式2:根据直播地址url,前+字符i 我们这里演示的是,采用方式2. 三.代码如下 import requests, re import jieba, wordcloud """ # 以下是练习代

  • Python爬取哆啦A梦-伴我同行2豆瓣影评并生成词云图

    一.前言 通过这篇文章,你将会收货: ① 豆瓣电影数据的爬取: ② 手把手教你学会词云图的绘制: 二.豆瓣爬虫步骤 当然,豆瓣上面有很多其他的数据,值得我们爬取后做分析.但是本文我们仅仅爬取评论信息. 待爬取网址: https://movie.douban.com/subject/34913671/comments?status=P 由于只有一个字段,我们直接使用re正则表达式,解决该问题. 那些爬虫小白看过来,这又是一个你们练手的好机会. 下面直接为大家讲述爬虫步骤: # 1. 导入相关库,用

  • Python控制浏览器自动下载歌词评论并生成词云图

    目录 一.前言 二.准备工作 1.需要用的模块 2.驱动安装 三.下载歌词 四.词云图 一.前言 一首歌热门了,参与评论的人也很多,那我们有时候想看看评论,也只能看看热门的评论,大部分人都说的什么,咱也不知道呀~ 那本次咱们就把歌词给自动下载保存到电脑上,做成词云图给它分析分析… 二.准备工作 1.需要用的模块 本次用到的模块和包: re  # 正则表达式 内置模块 selenium  # 实现浏览器自动操作的 jieba  # 中文分词库 wordcloud  # 词云图库 imageio  

  • Python通过文本和图片生成词云图

    使用现有的txt文本和图片,就可以用wordcloud包生成词云图.大致步骤是: 1.读取txt文本并简单处理: 2.读取图片,以用作背景: 3.生成词云对象,保存为文件. 需要用到3个库:jieba(用于分割文本为词语).imageio(用于读取图片).wordcloud(功能核心,用于生成词云). 我用简历和我的照片,生成了一个词云图: 代码如下: import jieba import imageio import wordcloud # 读取txt文本 with open('resume

随机推荐