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"))

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

完整代码

#导入词云库

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生成词云图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

时间:2020-03-30

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基于time模块求程序运行时间的方法

本文实例讲述了Python基于time模块求程序运行时间的方法.分享给大家供大家参考,具体如下: 要记录程序的运行时间可以利用Unix系统中,1970.1.1到现在的时间的毫秒数,这个时间戳轻松完成. 方法是程序开始的时候取一次存入一个变量,在程序结束之后取一次再存入一个变量,与程序开始的时间戳相减则可以求出. Python中取这个时间戳的方法为引入time类之后,使用time.time();就能够拿出来.也就是Java中的System.currentTimeMillis(). 由于Python

Python基于回溯法子集树模板实现8皇后问题

本文实例讲述了Python基于回溯法子集树模板实现8皇后问题.分享给大家供大家参考,具体如下: 问题 8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一列或同一斜线上,问有多少种摆法. 分析 为了简化问题,考虑到8个皇后不同行,则每一行放置一个皇后,每一行的皇后可以放置于第0.1.2.....7列,我们认为每一行的皇后有8种状态.那么,我们只要套用子集树模板,从第0行开始,自上而下,对每一行的皇后,遍历它的8个状态即可. 代码: ''' 8皇后问题 '''

Python基于list的append和pop方法实现堆栈与队列功能示例

本文实例讲述了Python基于list的append和pop方法实现堆栈与队列功能.分享给大家供大家参考,具体如下: #coding=utf8 ''''' 堆栈: 堆栈是一个后进先出(LIFO)的数据结构. 在栈上"push"元素是个常用术语,意思是把一个对象添加到堆栈中. 删除一个元素,可以把它"pop"出堆栈. 队列: 队列是一种先进先出(FIFO)的数据类型. 新的元素通过"入队"的方式添加进队列的末尾, "出对"就是从

Python基于Tkinter的HelloWorld入门实例

本文实例讲述了Python基于Tkinter的HelloWorld入门实例.分享给大家供大家参考.具体分析如下: 初学Python,打算做几个Tkinter的应用来提高. 刚学的HelloWorld,秀一下.我用Python3.2的,Windows版本的. 源代码如下: #导入sys和tkinter模块 import sys, tkinter #创建主窗口 root = tkinter.Tk() root.title("HelloWorld") root.minsize(200, 10

Python基于回溯法子集树模板解决0-1背包问题实例

本文实例讲述了Python基于回溯法子集树模板解决0-1背包问题.分享给大家供大家参考,具体如下: 问题 给定N个物品和一个背包.物品i的重量是Wi,其价值位Vi ,背包的容量为C.问应该如何选择装入背包的物品,使得放入背包的物品的总价值为最大? 分析 显然,放入背包的物品,是N个物品的所有子集的其中之一.N个物品中每一个物品,都有选择.不选择两种状态.因此,只需要对每一个物品的这两种状态进行遍历. 解是一个长度固定的N元0,1数组. 套用回溯法子集树模板,做起来不要太爽!!! 代码 '''0-

Python基于checksum计算文件是否相同的方法

本文实例讲述了Python基于checksum计算文件是否相同的方法.分享给大家供大家参考.具体如下: 假设有2个二进制文件(0.bin, 1.bin),用checksum检验内容是否相同 # coding: utf8 # Python2.6.2 import md5 with open('0.bin', 'rb') as f: s = md5.new(f.read()).hexdigest() with open('1.bin', 'rb') as f: ss = md5.new(f.read

Python基于正则表达式实现检查文件内容的方法【文件检索】

本文实例讲述了Python基于正则表达式实现检查文件内容的方法分享给大家供大家参考,具体如下: 这个是之前就在学python,欣赏python的小巧但是功能强大,是连电池都自带的语言.平时工作中用Java ,觉得python在日常生活中比java用处要大,首先语法没那么复杂,特别是io的操作,java里要写一大坨没关的代码.还有就是不用编译,而且linux系统默认都会自带. 这次遇到的问题是工作当中想要迁移一个系统中的一个模块,这个时候需要评估模块里的代码有没有对其他代码强依赖,就是有没有imp

Python基于正则表达式实现文件内容替换的方法

本文实例讲述了Python基于正则表达式实现文件内容替换的方法.分享给大家供大家参考,具体如下: 最近因为有一个项目需要从普通的服务器移植到SAE,而SAE的thinkphp文件结构和本地测试的有出入,需要把一些html和js的引用路径改成SAE的形式,为了不手工改,特地速成了一下Python的正则表达式和文件操作.主要要求是将某目录下的html和js里面的几个路径变量分别更改成相应的形式,匹配文件名的时候用了正则 import os import re #all file in the dir

python基于windows平台锁定键盘输入的方法

本文实例讲述了python基于windows平台锁定键盘输入的方法.分享给大家供大家参考.具体分析如下: pywin32中没有BlockInput这个函数.VC++中有,发现这个方法就可以了. 该代码可阻断windows平台下的鼠标键盘输入,如下所示: # coding: UTF-8 import time from ctypes import * user32 = windll.LoadLibrary('user32.dll') user32.BlockInput(True); time.sl

Python基于tkinter模块实现的改名小工具示例

本文实例讲述了Python基于tkinter模块实现的改名小工具.分享给大家供大家参考,具体如下: #!/usr/bin/env python #coding=utf-8 # # 版权所有 2014 yao_yu # 本代码以MIT许可协议发布 # 文件名批量加.xls后缀 # 2014-04-21 创建 # import os import tkinter as tk from tkinter import ttk version = '2014-04-21' app_title = '文件名

python中wordcloud函数不同形状云图_Python实现Wordcloud生成词云图的示例相关推荐

  1. python中int函数的用法浅析_Python中int()函数的用法浅析

    int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builtin__ ...

  2. python中int函数是什么作用_python中int函数怎么用

    python中int函数怎么用,字符串,函数,数字,出现在,赋值 python中int函数怎么用 易采站长站,站长之家为您整理了python中int函数怎么用的相关内容. int() 函数用于将一个字 ...

  3. python中decode函数在哪个库_python中decode函数的使用方法

    python中decode函数的使用方法 发布时间:2020-12-15 09:22:45 来源:亿速云 阅读:75 作者:小新 这篇文章主要介绍python中decode函数的使用方法,文中介绍的非 ...

  4. python中decode函数在哪个库_python encode和decode函数说明

    字符串编码常用类型:utf-8,gb2312,cp936,gbk等. Python中,我们使用decode()和encode()来进行解码和编码 在python中,使用unicode类型作为编码的基础 ...

  5. python中find函数运算结果类型_Python 运算符与数据类型

    Python 运算符 运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算,在Python中运算符大致可以分为7种类型:算术运算符.比较运算符.赋值运算符.逻辑运算符.位运算等,下面的例子将 ...

  6. [转载] python中set函数是什么数据类型_Python基本数据类型-list-tuple-dict-set详解

    参考链接: Python中的isdisjoint函数 Python基本数据类型-list-tuple-dict-set 数据类型 表示方法 特性 list 列表用方括号表示:[] list是一种有序的 ...

  7. python中find函数的使用方法_Python教程-String 字符串使用教程

    Python 语言中的String 在Python中,String代指以下特点: 代表Unicode字符的字节数组 用单引号或双引号引起来 无限长度 Python 中 String 字符串定义方式 $ ...

  8. python中range函数是什么意思_python中range什么意思

    今天来谈一谈关于Python中range()的作用,和我个人的理解. range的中文意思是,范围.幅度.或者是在xxx之间变动. 函数原型:range(start, end, scan): 参数含义 ...

  9. python中int函数的用法浅析_python中int函数怎么用,

    详细内容 int() 函数用于将一个字符串会数字转换为整型.接下来通过本文给大家介绍python 中的int()函数的相关知识,感兴趣的朋友一起看看吧 int(x, [base]) 功能: 函数的作用 ...

  10. python中map函数是什么意思_python中map什么意思

    python中map什么意思? python中map() 会根据提供的函数对指定序列做映射. 第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 func ...

最新文章

  1. 'utf-8' codec can't decode byte 0xff in position 0
  2. redis cluster 集群 安装 配置 详解
  3. 深入浅出 5种IO模型。
  4. summary+plan
  5. xp系统开机自检很久_电脑开机不能自检的五大原因
  6. hive 小文件数据合并
  7. java函数void返回值是,Java中main()函数的返回值是什么( )。A、StringB、intC、c......
  8. Linux***检测基础学习
  9. MySQL数据库无法启动的简单排错
  10. 10_clickhouse,SummingMergeTree,AggregatingMergeTree(基于表,物化视图的使用)
  11. Windows最值得安装的小众软件
  12. python的turtle模块制作的打地鼠小游戏2019/4/9版
  13. 三菱FX5U系列PLC控制10轴设备成套资料打包三菱FX5U控制10轴伺服的设备成套电气图纸
  14. 芝诺数解|「六」享受生活,品味甘甜——重庆奶茶
  15. linux 虚拟机连接外网配置,很简单
  16. C语言知识-零零散散(四)
  17. python语言创意绘画-校招资讯|拼多多、百度、中建六局等名企校园招聘
  18. [修改 Mysql5.7密码策略]Your password does not satisfy the current policy requirements
  19. Ubuntu2004系统下佳能MG2400打印机无响应
  20. 悄悄说--一个Swing界面的仿qq聊天软件

热门文章

  1. 造福身心障碍者 Skype及PowerPoint新增实时字幕功能
  2. PYG解密小组的Visual Assist X插件完全卸载
  3. GD32VF103开发环境简单介绍
  4. 基于51单片机简易计算器LCD1602显示
  5. Android音乐播放器demo
  6. 怎么用python画天气图_Python气象绘图教程(十五)—Cartopy_5
  7. talentcentral测评结果_热门推荐!雅诗兰黛2021笔试攻略,最新版Talent Central笔试真题!...
  8. PLC编程语言都在这里了!
  9. Games 图形学 L2线性代数
  10. 最详细的双目摄像头测距离(深度)的原理