前端时间爬下了拉勾网关于数据挖掘职位的相关信息(爬取可看我的另一篇博客https://blog.csdn.net/cy776719526/article/details/80094817),于是就打算把ta的职位要求做成词云呈现出来,由于刚刚学习,所以只是一个简单的实例
所有我爬下的岗位要求都保存到了一个名为岗位需求的TXT文件中(已保存在网盘中https://pan.baidu.com/s/1ymqZifBVP8Y4xap5IXKZLQ,想试一试的可以下载运行一下)
首先需要进行分词,也就是将一个句子分割成一个个的词语,我这里使用的是jieba分词
import jieba
cut = jieba.cut(text) #text为你需要分词的字符串/句子
string = ' '.join(cut) #将分开的词用空格连接
print(string)
上面是一个非常简单的分词的例子,在cut的时候也可以选择不同的参数,使用不同的模式进行分词,具体使用方法可自行百度,当然也有其他的分词包,大家可自行选择
分好词后就需要将词做成词云了,我使用的是wordcloud
from matplotlib import pyplot as plt
from wordcloud import WordCloud
string = 'Importance of relative word frequencies for font-size. With relative_scaling=0, only word-ranks are considered. With relative_scaling=1, a word that is twice as frequent will have twice the size. If you want to consider the word frequencies and not only their rank, relative_scaling around .5 often looks good.'
font = r'C:\Windows\Fonts\FZSTK.TTF'
wc = WordCloud(font_path=font, #如果是中文必须要添加这个,否则会显示成框框
background_color='white',
width=1000,
height=800,
).generate(string)
wc.to_file('ss.png') #保存图片
plt.imshow(wc) #用plt显示图片
plt.axis('off') #不显示坐标轴
plt.show() #显示图片
这是一个十分简单的例子,文字是我随便copy的,不过这样方方正正的不怎么好看,我希望能做成网上那样有不同形状的,在wordcloud中提供了一个参数mask,他可以让你指定你想绘制的图片,不过必须是白底的,他会在你非白底的地方填充上文字,所以最终我的代码是这样的:
import jieba
from matplotlib import pyplot as plt
from wordcloud import WordCloud
from PIL import Image
import numpy as np
path = r'文件存储的目录'
font = r'C:\Windows\Fonts\FZSTK.TTF'
text = (open(path+r'\岗位需求.txt','r',encoding='utf-8')).read()
cut = jieba.cut(text) #分词
string = ' '.join(cut)
print(len(string))
img = Image.open(path+r'\22.png') #打开图片
img_array = np.array(img) #将图片装换为数组
stopword=['xa0'] #设置停止词,也就是你不想显示的词,这里这个词是我前期处理没处理好,你可以删掉他看看他的作用
wc = WordCloud(
background_color='white',
width=1000,
height=800,
mask=img_array,
font_path=font,
stopwords=stopword
)
wc.generate_from_text(string)#绘制图片
plt.imshow(wc)
plt.axis('off')
plt.figure()
plt.show() #显示图片
wc.to_file(path+r'\new.png') #保存图片
源图片为
这是我从另外一个博主那拉下来的,侵删,生成的结果是这样的:
从这个图片看来数据挖掘和机器学习的关系是非常密切。还生成了一张文字的,不过很模糊
最后贴几个参考资料的链接,在此感谢各位博主:
https://blog.csdn.net/starryj/article/details/70081479 python词云
https://blog.csdn.net/lawfay/article/details/78667958 爬取寻梦环游记的评论生成词云
https://blog.csdn.net/qq_25819827/article/details/78991733 python词云实现
https://blog.csdn.net/u010309756/article/details/67637930 生成词云之Python中wordCloud包的用法