词云技术jieba实例(仅供参考)

文中所用数据与上一篇博客所用数据出自同一网站,存入的文件就不再声明了,直接打开

jieba的实际应用

目的

将中文数据进行可视化,使人一眼看出重要的信息,本文的数据选用51job网站的工作需求介绍。

代码实现

#引入jieba、词云、matplotlib、json、numpy、PIL模块(json是用来打开文件,numpy是用来转换图片的,其他是必须的)
import jieba
from wordcloud import WordCloud, STOPWORDS
import matplotlib.pyplot as plt
import json
import numpy as np
from PIL import Image    #引入处理图片模块


#因为我一开始存的是json格式,然后画蛇添足的转来转去,其实没啥,只要能有数据就行
with open('6.json','r', encoding='utf-8') as fp:
    a = json.load(fp)
    signatures = json.loads(a)
# print(type(signatures))
with open('1.txt','w',encoding='utf-8')as fp:
    fp.write(str(signatures))
with open('1.txt','r',encoding='utf-8')as fp:
    neirong = fp.read()
    
# 设置分词
# print(type(neirong))
split = jieba.cut(neirong, cut_all=False)  # False精准模式分词、True全模式分词
words = ' '.join(split)  # 以空格进行拼接
print(words)
#
# 设置屏蔽词,去除个性签名中的表情、特殊符号等你不需要的数据,也可以先运行,照着结果将不需要的去掉
stopwords = STOPWORDS.copy()
stopwords.add('xa0')
stopwords.add('xa03')
stopwords.add('n4')
stopwords.add('要求')
stopwords.add('进行')
stopwords.add('n')
stopwords.add('无忧')
stopwords.add('推荐')
stopwords.add('xa009')
stopwords.add('发布')
stopwords.add('有限公司')
stopwords.add('民营公司')

# 导入背景图,将数据用此图片展示
image = np.array(Image.open('1.png'))        #背景图随便,只要颜色边界分明就行,大多使用黑白的
# 设置词云参数,参数分别表示:画布宽高、背景颜色、背景图形状、字体、屏蔽词、最大词的字体大小
wc = WordCloud(background_color='white', mask=image, font_path='STKAITI.TTF',stopwords=stopwords,max_font_size=500, random_state=50)
# 将分词后数据传入云图
wc.generate_from_text(words)     #也可以直接用generate     没有区别
plt.imshow(wc)   # 绘制图像
plt.axis('off')  # 不显示坐标轴
# 保存结果到本地,此程序的上级目录下
plt.savefig('1.jpg')     #会生成一个图片,即为最终结果

过程中,会遇到很多问题,我遇到两个:1.导入背景图的时候,将1.png写成了1.jpg,报FileNotFoundError: [Errno 2] No such file or directory: '1.jpg’的错;2.读取文件时,数据的格式出错。
总体来说,都是马虎的问题,多调试,能出来结果的

上一篇:jieba分词原理 ‖ 词性标注


下一篇:【Python jieba】 -- 2019-08-11 18:43:19