Python学习之jieba、wordcloud

来源:互联网 发布:网络定向监控商品信息 编辑:程序博客网 时间:2024/06/08 05:50

在上一篇的博客中,获取到了大量的淘宝MM的数据,这里我们使用这些数据来生成一个类似如下的图片


在这里我们要用到结巴分词、词云WordCloud和会图库matplotlib。直接上代码

# coding:utf-8from os import pathfrom scipy.misc import imreadimport matplotlib.pyplot as pltimport jiebafrom wordcloud import WordCloud, STOPWORDS, ImageColorGeneratorstopwords = {}def importStopword(filename=''):    global stopwords    f = open(filename, 'r', encoding='utf-8')    line = f.readline().rstrip()    while line:        stopwords.setdefault(line, 0)        stopwords[line] = 1        line = f.readline().rstrip()    f.close()def processChinese(textContent):    jieba.enable_parallel(4)    seg_generator = jieba.cut(textContent)  # 使用结巴分词,也可以不使用    seg_list = [i for i in seg_generator if i not in stopwords]    seg_list = [i for i in seg_list if i != u' ']    seg_list = r' '.join(seg_list)    return seg_listimportStopword(filename='./stopwords1.txt')# 获取当前文件路径# __file__ 为当前文件, 在ide中运行此行会报错,可改为# d = path.dirname('.')d = path.dirname(__file__)text = open(path.join(d, 'data.txt'), encoding='utf-8').read()# 如果是中文text = processChinese(text)  # 中文不好分词,使用Jieba分词进行# 设置背景图片back_coloring = imread(path.join(d, "./image/nv.png"))wc = WordCloud(font_path='./font/叶立群几何体.ttf',  # 设置字体               background_color="white",  # 背景颜色               max_words=2000,  # 词云显示的最大词数               mask=back_coloring,  # 设置背景图片               # max_font_size=100, #字体最大值               random_state=42,               )# 生成词云, 可以用generate输入全部文本(中文不好分词),也可以我们计算好词频后使用generate_from_frequencies函数wc.generate(text)# wc.generate_from_frequencies(txt_freq)# txt_freq例子为[('词a', 100),('词b', 90),('词c', 80)]# 从背景图片生成颜色值image_colors = ImageColorGenerator(back_coloring)# 绘制词云plt.figure()# 以下代码显示图片plt.imshow(wc)plt.axis("off")plt.show()# 保存图片wc.to_file(path.join(d, "名称.png"))


stopwords1.txt 内容就是要过滤掉的不要的信息

nameorderageplacebirthdaystylesizeplacefansflowactiveprofessionblood_typeschool&nbsp公历bloodtypename

背景图使用如下的:(要使用边界分明的图片,不然容易生成方形的图片)




程序生成如下的图片 




如果对比收集到的数据,这个图是能说明一些问题的,比如我们的数据里有MM的地址、血型、职业、风格等等的一些信息,图片中放大显示的就是我们的数据里占比比较大的数据。


0 0