为了账号安全,请及时绑定邮箱和手机立即绑定

数据分析-可视化-wordcloud词云

标签:
Java

webp

image.png

我们使用已经合并在一起的拉勾网数百个职位招聘详情文件来进行这个练习。
百度云下载文件 密码:bvb8

读取文件

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

text=''with open('./lagou-job1000-ai-details.txt','r') as f:
    text=f.read()
    f.close()
print(text[:100])

输出
职位描述:岗位职责:1.展开机器学习/深度学习等相关领域研究和开发工作;2.负责从事深度学习框架搭建,包括机器学习、图像处理等的算法和系统研发;3.支持公司相关产品深度学习相关研究;岗位要求:1.机器

jieba分词

#cell-2import jieba
words = jieba.lcut(text)
cuted=' '.join(words)
print(cuted[:100])

输出被空格分开的文本:
职位 描述 : 岗位职责 : 1 . 展开 机器 学习 / 深度 学习 等 相关 领域 研究 和 开发 工作 ; 2 . 负责 从事 深度 学习 框架 搭建 , 包括 机器 学习 、 图像处理 等 的

安装wordcloud和matplotlib

词云wordcloud的官方项目地址

推荐直接用pip3 install wordcloud进行安装。
如果是conda则要使用-c切换通道为conda-forge,命令是
conda install -c conda-forge wordcloud可能比较慢,耐心等就好。

matplotlib视觉化模块官方网址
安装命令pip3 install matplotlibconda install matplotlib

生成词云对象

#cell-3from 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是不支持中文显示的,所以要先添加一个中文字体文件,一般是.ttf或.otf格式,你可以从网上搜索‘字体下载’找到想要的字体。上面代码中使用的是思源中文字体,点击可以直接下载使用

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

显示词云图

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

#cell-4import matplotlib.pyplot as plt
plt.figure(dpi=100) #通过这里可以放大或缩小plt.imshow(wc, interpolation='catrom',vmax=1000)
plt.axis("off") #隐藏坐标

可以得到如下图效果:


webp

image.png

去除冗余单词

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

#cell-2import jieba

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

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

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

words = jieba.lcut(text)
words = [w for w in words if w not in removes]



作者:zhyuzh3d
链接:https://www.jianshu.com/p/656c978764cb


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消