使用词云进行中文分词后的可视化

词云是我们在文本挖掘过程中常用的一种可视化方法。对于中文来说,我们需要西安进行分词,再生成词云,以下先给出我用来生成词云的这段话:

在研发团队中,根据木桶原理,真正体现团队技术能力的人是团队中力量最弱的开发者。不怕神一样的对手,就怕猪一样的队友,说的就是如此。
但是,打造精英团队往往是个伪命题。对很多团队而言,薪酬,待遇,福利等诸多局限,使得我们很难与那些顶尖或准顶尖的公司竞争。我们往往是二三流的团队来完成一流的事情。但是,人才是可以培养的,团队也是可以转变的。
如何转变?除了前面谈到的ABC之外,就是团队的新陈代谢了。在战场上,一个战士的受伤往往意味着损失2~3个战斗力。在开发过程中,一个人挖的坑,恐怕两个人可以填干净就不错了。劝退有可能是一种对双方都好的结果。末位淘汰尽管有些残忍,但往往是对双方的负责。
引进高手的直接手段就是招聘了。当你向HR提招聘需求的时候,不要仅仅给出一个JD,应该有更清楚的目标画像,例如毕业于怎样的院校,最好在哪些公司工作等等。这样,HR的伙伴才能够有的放矢,甚至通过猎头完成定向招聘。
总之,研发管理要具备人才培养和人才引进的能力,一切的竞争,归根到底都是人的竞争。

我们对这段文字建立词云的代码如下:

# -*- coding: utf-8 -*-
"""
Created on Mon Jan 28 17:32:00 2019

@author: chendile
"""

import matplotlib.pyplot as plt
from wordcloud import WordCloud  #词云库
from PIL import Image
import numpy as np
import jieba  #用于中文分词的库

font = "C:/Windows/Fonts/msjhbd.ttc"
abel_mask = np.array(Image.open("E:/笔记集合/text-mining/词云代码及图片/timg.jpg"))
text_from_file_with_apath = open('E:/笔记集合/text-mining/词云代码及图片/ciyun.txt','r',encoding='utf8').read()
print(text_from_file_with_apath)

wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all = True)
wl_space_split = " ".join(wordlist_after_jieba)
print(wl_space_split)

my_wordcloud = WordCloud(collocations=False, font_path=font, max_font_size=70,
max_words=1000, margin=5,background_color="pink", mask=abel_mask,colormap='hot').generate(wl_space_split)
#wordcloud里的参数设置是重中之重了,这个在wordcloud的官方文档上有很详细的解释
#color_func=lambda *args, **kwargs: "lightgreen",这个属性优先级比colormap要高,可把单词都设置为同色
#这个参数设置为0时,词的大小只和词频排序有关系,设置为1时,字体大小将是其词频的两倍,relative_scaling=1
#mask参数可以帮助词云附着在图片上
#colormap可以设置不同的词映射的颜色,wordcloud会为每个单词随机生成一个数字,根据colormap映射为颜色,然后显示,但这个不能根据词频大小来映射,colormap和matlab中的一致
print(my_wordcloud)


plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()

下面是通过改变wordcloud的参数画出的几种不同的词云:
纯色词云
在这里插入图片描述
colormap设置为hot的词云:
在这里插入图片描述
colormap设置为jet的词云:
在这里插入图片描述
colormap设置为spring的词云:
在这里插入图片描述
考虑词频数值而不仅考虑词频排序的词云:
在这里插入图片描述

几个重点:

1、最好是把txt文件存为utf-8格式,这样比较方便读取中文,并且注意在调用open函数时解码。你也可以存为ANSI格式,然后通过设置’rb’属性来以二进制格式读取,
但这样可能中文会显示为ANSI码,不能正确显示;
2、你可能能够正确读取中文,并且正确分词,但是wordcloud可能不能正确显示中文,因此图片中的中文都会显示为框框,没有文字。这是因为其默认字体是英文的,无法识别
中文,需要修改字体文件的路径,找到一个你比较喜欢的中文字体,找到它在你的系统中的路径,将font_path设置为这个路径,即可在图片中显示中文;
3、如果你想生成跟图片同样形状的词云,可以通过mask参数+PIL读取image实现,但是请注意你不想要的形状部分最好是白底或无背景,否则只要有一点颜色,词云就会
识别为可以填充词的区域,从而不能很好地显示出词云的形状;
4、将max_font_size稍微设置大一点,同时margin稍微设置得小一点,有助于词云的显示更接近image的轮廓。

#参考链接:
http://amueller.github.io/word_cloud/references.html;
https://blog.csdn.net/wireless_com/article/details/60571394;
https://zhidao.baidu.com/question/941678212532211692.html;
https://blog.csdn.net/qlj061001/article/details/78968273;

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值