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

时间:2020-03-30

python词云图实验报告_Python实现Wordcloud生成词云图的示例相关推荐

  1. python 引入同一路径的类_Python实现Wordcloud生成词云图的示例

    wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前 ...

  2. python中wordcloud生成词云_python使用WordCloud生成词云

    前言 当我们想快速了解 书籍.小说.电影剧本中的内容是时,则可以采用绘制 WordCloud 词云图,显示主要的关键词,可以非常直观的看到结果 核心代码 from wordcloud import W ...

  3. python画图程序实验报告_Python绘图简明教程

    前言 本文纯科普向. 主要介绍一下Python上最好用的2D图形绘制库matplotlib的安装以及一些基础操作. 选择Python是因为其强大的第三方库和优秀便捷的语法,并且能方便地对数据进行后续处 ...

  4. python词频统计实验报告_Python实验报告八

    安徽工程大学Python程序设计 班级:物流191 姓名:汤振宇 学号:319050108 成绩: 日期:2020/06/04 指导老师:修宇 [实验目的] : 掌握读写文本文件或 CSV 文件,进而 ...

  5. python web自动化测试实验报告_Python:web自动化测试

    用selenium包. # -*- coding: utf-8 -*- # 说明: 当前的浏览器驱动用的是edge浏览器. # 需要下载浏览器驱动,并把它的路径添加到环境变量 from seleniu ...

  6. python顺序结构实验报告_Python 数据结构 之 串 的顺序存储结构

    本文所采用的数据结构模板为 <数据结构教程>C语言版,李春葆.尹为民等著. 改篇所涉及到的是 串 的顺序存储结构. 用Python仿照C语言来实现. 代码地址: 串 的顺序存储结构: # ...

  7. python股票数据分析实验报告_Python实验报告

    一. 实验原理 ( 要求.任务等 ) (一).Python的开发环境 Python诞生于20世纪90年代初,是一种解释型.面向对象.动态数据类型的高级程序设计语言,是最受欢迎的程序设计语言之一. 编写 ...

  8. python网络爬虫实验报告_Python网络爬虫实例讲解

    聊一聊Python与网络爬虫. 1.爬虫的定义 爬虫:自动抓取互联网数据的程序. 2.爬虫的主要框架 爬虫程序的主要框架如上图所示,爬虫调度端通过URL管理器获取待爬取的URL链接,若URL管理器中存 ...

  9. python弹球游戏实验报告_Python实战案例:用Python写一个弹球游戏,就是这么强

    我们前面讲了几篇关于类的知识点,为了让大家更好的掌握类的概念,并灵活的运用这些知识,我写了一个有趣又好玩的弹球的游戏,一来可以把类的知识融会一下,二来加深对Python的兴趣.你会发现哎呀Python ...

最新文章

  1. 子shell中使用相关的环境变量
  2. Could not load file or assembly 'System.Web.Extensions
  3. cxGrid 使用指南 1
  4. python 加锁_python之给文件加锁(fcntl模块)
  5. java math round小数_Java——Math的round方法
  6. swift学习笔记之一——初见swift
  7. Windows版Mysql5.6.11的安装与配置
  8. 利用AccountsService 漏洞获得Ubuntu系统的root权限
  9. sds数据结构,Simple Dynamic String,简单动态字符串
  10. Linux 磁带机型号,请教一下,爱华的磁带机型号大全,里面的字母什么意思?
  11. 区块链基础:交易模型解读
  12. 学医后才知道的小知识...
  13. jpg转bmp c语言 linux,C++_C语言实现BMP转换JPG的方法,本文实例讲述了C语言实现BMP转 - phpStudy...
  14. 阿里云 杭州 ARM 云服务器性能评测
  15. The server time zone value 'EDT' is unrecognized or represents more than one time zone.
  16. 科三考试邢台市交安考试路线
  17. 我的星座图 php,星座图映射
  18. CSRF攻击原理和防护措施讲解
  19. C盘AppData目录文件夹JxBrowser占用90G?
  20. 分享一个免费格式转换的网址

热门文章

  1. WinNTSetup V5.3.0 Bata5 单文件版
  2. 凌动智行发布关于特别委员会独立调查的报告暨宣布董事会变更
  3. 计算机辅助制造题库选择题,《机械设计基础习题库
  4. cimcoeditv5怎样模拟刀路_cimco edit v5怎么不显示刀具运动轨迹
  5. 机器学习(一)——什么是机器学习
  6. 每周小节-2 d3-zoom,pan,brush阅读心得 d3.js on angular读书笔记
  7. 软件平台平台物联网操作系统系列文章之-软件平台的力量
  8. 晶体谐振器的关键参数详解
  9. ECS.Day3笔记
  10. 丹东纺专99届计算机专业,皖南医学院麻醉专业99届校友毕业20周年返校聚会