Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >爬虫(104)教你词云分析拉勾网数百个职位招聘详

爬虫(104)教你词云分析拉勾网数百个职位招聘详

作者头像
公众号---人生代码
发布于 2020-05-18 07:29:25
发布于 2020-05-18 07:29:25
55700
代码可运行
举报
文章被收录于专栏:人生代码人生代码
运行总次数:0
代码可运行

昨天我们分析了某 girl 的 QQ 空间,之后想想还是不过瘾啊,感觉还可以深度挖掘词云这个库,于是在网上找了一个实际例子又来波

首先需要下载 拉勾网数百个职位招聘详数据,这里小编已经为大家准备好了

https://pan.baidu.com/s/1HG7rcgeLTpcemo-oT_KebA

密码 bvb8

我们需要读取这个文件

读取并打印出前面100个字符

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
text=''
with open('./lagou-job1000-ai-details.txt','r') as f:
    text=f.read()
    f.close()
print(text[:100])

jieba 分词

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#cell-2
import jieba
words = jieba.lcut(text)
cuted=' '.join(words)
print(cuted[:100])

生成词云对象

首先,默认情况wordcloud是不支持中文显示的,所以要先添加一个中文字体文件,一般是.ttf或.otf格式,你可以从网上搜索‘字体下载’找到想要的字体。上面代码中使用的是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#cell-3
from wordcloud import WordCloud
fontpath='SourceHanSansCN-Regular.otf'

wc = WordCloud(font_path=fontpath,  # 设置字体
               background_color="white",  # 背景颜色
               max_words=1000,  # 词云显示的最大词数
               max_font_size=500,  # 字体最大值
               min_font_size=20, #字体最小值
               random_state=42, #随机数
               collocations=False, #避免重复单词
               width=1600,height=1200,margin=10, #图像宽高,字间距,需要配合下面的plt.figure(dpi=xx)放缩才有效
              )
wc.generate(cuted)

WordCloud(...)命令包含了很多参数,其中就包含了我们上面设定的字体路径font_path。 注意这里width=1600,height=1200,margin=100图像宽高只是原始图像的大小,至于后面显示出来的时候可能还会被放缩。它的更多参数可以查看下面链接wordcloud官方WordCloud方法说明

显示词云图

我们用matplotlib的imshow就是image-show把图片显示出来

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#cell-4
import matplotlib.pyplot as plt
plt.figure(dpi=100) #通过这里可以放大或缩小
plt.imshow(wc, interpolation='catrom',vmax=1000)
plt.axis("off") #隐藏坐标plt.show()
wc.to_file('py_book.png')

去除冗余单词

我们可以利用jieba的del_word功能去掉冗余单词。 修改cell-2代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#cell-2
import jieba

removes =['熟悉', '技术', '职位', '相关', '工作', '开发', '使用','能力','优先','描述','任职']
for w in removes:
    jieba.del_word(w)

words = jieba.lcut(text)
cuted = ' '.join(words)
print(cuted[:100])

这里用for循环依次删除了各个冗余词,也可不用for循环,改为lcut之后对words进行处理:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
words = jieba.lcut(text)
words = [w for w in words if w not in removes]

区分中英文

如果我们只关注英文技术点,比如python,tensorflow等,那就忽略中文内容。 使用正则表达式来匹配提取哪些由az小写字母和AZ大写字母加上0~9数字组成的单词。 修改cell-2如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#cell-2
import jieba
words = jieba.lcut(text)
import re
pattern = re.compile(r'^[a-zA-Z0-1]+$')
words = [w for w in words if pattern.match(w)]
cuted = ' '.join(words)
print(cuted[:100])

改变造型

我们让单词按照特定的造型来排列。首先我们需要一张造型图片,下面是一张AI文字造型图片,请把它右键另存为ai-mask.png文件。

前面在wc = WordCloud(font_path=fontpath...中有很多参数可以设置,其中就有mask遮罩参数,可以指定一张读取的图片数据,根据官方说明,这个数据应该是nd-array格式,这是一个多维数组格式(N-dimensional Array)。

我们使用PIL模块中的Image.open('...')可以读取图片,然后利用numpy来转换为nd-arry格式。 修改cell-3,读取图片并增加mask参数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#cell-3
from wordcloud import WordCloud
fontpath='SourceHanSansCN-Regular.otf'

import numpy as np
from PIL import Image
aimask=np.array(Image.open("ai-mask.png"))

wc = WordCloud(font_path=fontpath,  # 设置字体
               background_color="white",  # 背景颜色
               max_words=1000,  # 词云显示的最大词数
               max_font_size=100,  # 字体最大值
               min_font_size=5, #字体最小值
               random_state=42, #随机数
               collocations=False, #避免重复单词
               mask=aimask, #造型遮盖
               width=1600,height=1200,margin=2, #图像宽高,字间距,需要配合下面的plt.figure(dpi=xx)放缩才有效
              )
wc.generate(cuted)

改进颜色

默认情况图片上文字的颜色都是随机的,我们可以使用图片来控制文字的颜色。

WordCloud方法提供了一个color_func颜色函数的参数,用一个函数来改变每个词的颜色,在这里我们直接使用上面深色的AI图片颜色来控制。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
fontpath='SourceHanSansCN-Regular.otf'

import numpy as np
from PIL import Image
aimask=np.array(Image.open("ai-mask.png"))

genclr=ImageColorGenerator(aimask)

wc = WordCloud(font_path=fontpath,  # 设置字体
               background_color="white",  # 背景颜色
               max_words=1000,  # 词云显示的最大词数
               max_font_size=100,  # 字体最大值
               min_font_size=5, #字体最小值
               random_state=42, #随机数
               collocations=False, #避免重复单词
               mask=aimask, #造型遮盖
               color_func=genclr,
               width=1600,height=1200,margin=2, #图像宽高,字间距,需要配合下面的plt.figure(dpi=xx)放缩才有效
              )
wc.generate(cuted)

在上面,我们引入了from wordcloud import ImageColorGenerator方法,它是直接用来生成一个color_func颜色函数的,它括号里需要一个nd-array多维数组的图像,恰好我们上面的aimask就是这个格式,直接用就可以。

重新运行得到最开始看到的图, 和原图对比,就能看到文字颜色的规律了:

汇总

读取文件

jieba分词

利用re正则表达式选出英文单词

生成词云对象,利用图片遮罩形状和改变颜色

使用Matplotlib来显示图片

完整代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#cell-1
text=''
with open('./lagou-job1000-ai-details.txt','r') as f:
    text=f.read()
    f.close()
print(text[:100])

#cell-2
import jieba
words = jieba.lcut(text)
import re
pattern = re.compile(r'^[a-zA-Z0-1]+$')
words = [w for w in words if pattern.match(w)]
cuted = ' '.join(words)
print(cuted[:500])

#cell-3
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
fontpath='SourceHanSansCN-Regular.otf'

import numpy as np
from PIL import Image
aimask=np.array(Image.open("ai-mask.png"))

genclr=ImageColorGenerator(aimask)

wc = WordCloud(font_path=fontpath,  # 设置字体
               background_color="white",  # 背景颜色
               max_words=1000,  # 词云显示的最大词数
               max_font_size=100,  # 字体最大值
               min_font_size=5, #字体最小值
               random_state=42, #随机数
               collocations=False, #避免重复单词
               mask=aimask, #造型遮盖
               color_func=genclr,
               width=1600,height=1200,margin=2, #图像宽高,字间距,需要配合下面的plt.figure(dpi=xx)放缩才有效
              )
wc.generate(cuted)

#cell-4
import matplotlib.pyplot as plt
plt.figure(dpi=150) #通过这里可以放大或缩小
plt.imshow(wc, interpolation='catrom',vmax=1000)
plt.axis("off") #隐藏坐标
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CryptoCode 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
wordcloud词云图美化
之前的文章我们已经介绍了如何使用wordcloud库制作中英文词云图,并介绍了中英文停用词的使用方法,但如何美化词云图,例如换字体背景颜色,背景换成图片等,这些将在本篇文章进行详细介绍。
罗罗攀
2021/03/11
2.3K0
wordcloud词云图美化
Python 简单实现标签词云
基于Python的词云生成类库,很好用,而且功能强大.博主个人比较推荐 github:https://github.com/amueller/word_cloud 官方地址:https://amueller.github.io/word_cloud/ 写这篇文章花费一个半小时,阅读需要十五分钟,读完本篇文章后您将能上手wordcloud
Python疯子
2018/09/06
3.1K0
Python 简单实现标签词云
WordCloud 中英文词云图绘制,看这一篇就够了
摘要: 当我们手中有一篇文档,比如书籍、小说、电影剧本,若想快速了解其主要内容是什么,则可以采用绘制 WordCloud 词云图,显示主要的关键词(高频词)这种方式,非常方便。本文将介绍常见的英文和中文文本的词云图绘制,以及 Frequency 频词频词云图。
sergiojune
2018/12/17
9.8K0
手把手教你几种生成词云的方式
在数据可视化方面,词云一直是一种视觉冲击力很强的方式。对输入的一段文字进行语义分割,得到不同频度的词汇,然后以正比于词频的字体大小无规则的集中显示高频词,简洁直观高效。
1480
2020/03/05
4.4K0
手把手教你几种生成词云的方式
Python生成词云图,TIIDF方法文本挖掘: 词频统计,词云图
python中使用wordcloud包生成的词云图。 下面来介绍一下wordcloud包的基本用法。 class wordcloud.WordCloud(font_path=None, width=400, height=200, margin=2, ranks_only=None, prefer_horizontal=0.9,mask=None, scale=1, color_func=None, max_words=200, min_font_size=4, stopwords=None, random
学到老
2018/03/19
2.1K0
Python生成词云图,TIIDF方法文本挖掘: 词频统计,词云图
【推荐收藏】介绍2种Python绘制词云的手法,你会偷偷pick谁呢?
最近有粉丝同学在演示此前案例时发现在制作词云的时候有报错,希望才哥能讲解一下Python词云的绘制,那么今天他来了。
可以叫我才哥
2021/08/05
8400
深度有趣 | 03 高端又一般的词云
以《西游记》为例,可以看到结果中会出现各种双字、三字和四字等,但很多并不是合理的词语
张宏伦
2018/10/25
8930
深度有趣 | 03 高端又一般的词云
拿来就用能的Python词云图代码|wordcloud生成词云详解
词云也叫文字云,是一种可视化的结果呈现,常用在爬虫数据分析中,原理就是统计文本中高频出现的词,过滤掉某些干扰词,将结果生成一张图片,直观的获取数据的重点信息。今天,我们就来学习一下Python生成词云的常用库「wordcloud」。
吾非同
2021/03/12
5K0
WordCloud生成卡卡西忍术词云
本想果断的说,卡卡西是火影里面最帅的人物。但是出于对大家的尊重,我把这句话改成:“卡卡西是动漫界最帅的人物”,不接受任何反驳。
ZackSock
2020/02/14
1.5K0
COVID-19数据分析实战:WordCloud 词云分析
上一篇文章(链接)我们对COVID19_line_list数据集进行了清洗以及初步分析。本文中我们将分析如何用词云来展示文本信息的概要。
Ai学习的老章
2020/05/25
1.4K0
COVID-19数据分析实战:WordCloud 词云分析
python之生成带背景的词云图(附源码)
wordcloud.WordCloud 类是用于生成词云图像的主要类常用参数及示例
不止于python
2023/09/05
9650
python之生成带背景的词云图(附源码)
Python词云制作
“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”。从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
楚客追梦
2022/11/11
2K0
Python词云制作
Python 词云生成
https://www.lfd.uci.edu/~gohlke/pythonlibs/
arcticfox
2019/06/26
4.3K0
Python 词云生成
利用jieba和wordcloud从新闻中生成词云
wordcloud 是一个python实现的高效词频可视化工具,除了可以使用各种mask和颜色提供个性化的掩膜,还可以通过api便捷的挑战获得个性化的词云输出。 安装
菲宇
2020/03/25
2.1K0
(数据科学学习手札71)在Python中制作个性化词云图
词云图是文本挖掘中用来表征词频的数据可视化图像,通过它可以很直观地展现文本数据中地高频词:
Feffery
2019/11/18
1.3K0
python抓取数据构建词云
词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现,词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨。
周小董
2019/03/25
2.8K0
python抓取数据构建词云
赘婿词云图制作
之前的文章我们已经介绍了如何使用wordcloud库制作中英文词云图,并介绍了中英文停用词的使用方法,介绍了如何美化词云图,例如换字体背景颜色,背景换成图片等,那这次我们就以现在很火的电视剧赘婿为例,制作赘婿小说的词云图。
罗罗攀
2021/03/15
8550
python数据可视化——词云
词云百度百科:“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨
Python知识大全
2020/02/13
1.5K0
python数据可视化——词云
爬取许嵩新歌《雨幕》弹幕,告诉你什么才是真正的创作!
首先,利用哔哩哔哩的弹幕接口,把数据保存到本地。接着,对数据进行分词。最后,做了评论的可视化。
小小詹同学
2019/10/21
9001
爬取许嵩新歌《雨幕》弹幕,告诉你什么才是真正的创作!
Python十分钟制作属于你自己的个性logo
词云的使用相信大家已经不陌生了,使用很简单,直接调用wordcloud包就可以了。它的主要功能是根据文本词汇和词汇频率生成图片,从中可以直观的看出各个词汇所占比重。最近正好想做一个人的logo,于是乎决定使用词云来制作完成。
Python数据科学
2018/08/06
7840
Python十分钟制作属于你自己的个性logo
相关推荐
wordcloud词云图美化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验