资讯专栏INFORMATION COLUMN

python使用jieba进行中文分词wordcloud制作词云

yvonne / 2971人阅读

摘要:准备工作抓取数据存到文档中,了解问题分词分的不太准确,比如机器学习会被切成机器和学习两个词,使用自定义词典,原本的想法是只切出自定义词典里的词,但实际上不行,所以首先根据分词结果提取出高频词并自行添加部分词作为词典,切词完毕只统计自定义词典

准备工作

抓取数据存到txt文档中,了解jieba

问题

jieba分词分的不太准确,比如机器学习会被切成机器和学习两个词,使用自定义词典,原本的想法是只切出自定义词典里的词,但实际上不行,所以首先根据jieba分词结果提取出高频词并自行添加部分词作为词典,切词完毕只统计自定义词典里出现过的词

wordcloud自身不支持中文词云,需要指定中文字体,并且现在大部分的博客提供的generate_from_frequencies方法的参数与现在的wordcloud的参数不同,现在这个方法接收的是dict类型

代码
# -*- coding: utf-8 -*-
import jieba
import os
import codecs
from scipy.misc import imread
import matplotlib as mpl 
import matplotlib.pyplot as plt 
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

class GetWords(object):
    def __init__(self, dict_name, file_list , dic_list):
        self.dict_name = dict_name
        self.file_list = file_list
        self.dic_list = dic_list
    #获取自定义词典
    def get_dic(self):  
        dic = open(self.dict_name, "r")
        while 1:
            line = dic.readline().decode("utf-8").strip()
            self.dic_list.append(line)
            if not line:
                break
            pass
            
    def get_word_to_cloud(self):
        for file in self.file_list:
            with codecs.open("../spider/" + file, "r",encoding="utf-8", errors="ignore") as string:
                string = string.read().upper()
                res = jieba.cut(string, HMM=False)
                reslist = list(res)
                wordDict = {}
                for i in reslist:
                    if i not in self.dic_list:
                        continue
                    if i in wordDict:
                        wordDict[i]=wordDict[i]+1
                    else:
                        wordDict[i] = 1

            coloring = imread("test.jpeg")

            wc = WordCloud(font_path="msyh.ttf",mask=coloring,
                    background_color="white", max_words=50,
                    max_font_size=40, random_state=42)

            wc.generate_from_frequencies(wordDict)

            wc.to_file("%s.png"%(file))

def set_dic():
    _curpath=os.path.normpath( os.path.join( os.getcwd(), os.path.dirname(__file__) ))
    settings_path = os.environ.get("dict.txt")
    if settings_path and os.path.exists(settings_path):
        jieba.set_dictionary(settings_path)
    elif os.path.exists(os.path.join(_curpath, "data/dict.txt.big")):
        jieba.set_dictionary("data/dict.txt.big")
    else:
        print "Using traditional dictionary!"
 
if __name__ == "__main__":
    set_dic()
    file_list = ["data_visualize.txt", "data_dev.txt", "data_mining.txt", "data_arc.txt", "data_analysis.txt"]
    dic_name = "dict.txt"
    dic_list = []
    getwords = GetWords(dic_name, file_list, dic_list)
    getwords.get_dic()
    getwords.get_word_to_cloud()
词云示例

此图为爬取拉勾网数据挖掘工程师岗位需要制作的词云

源码

github

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44384.html

相关文章

  • Python如何生成词云(详解)

    摘要:前言今天教大家用模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图效果图一效果图二根据效果图分析的还是比较准确的,小说中的主人公就是程理,所以出现次数最多。 前言 今天教大家用wrodcloud模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图: 效果图一: showImg(https://segmentfault.com/img/remote/1460000015...

    Juven 评论0 收藏0
  • Python wordcloud库学习小结

    摘要:库常规方法方法描述例子向对象中加载文本将词云输出为图像文件,或格式应用实例配置对象参数加载词云文本输出词云文件分隔以空格分隔单词统计单词出现次数并过滤字体根据统计配置字号布局颜色环境尺寸配置对象参数参数参数描述例子指定词云对象生成图片的宽度 wordcloud库常规方法 w = wordcloud.WordCloud() 方法 描述 例子 w.generate(txt) 向w...

    Jokcy 评论0 收藏0
  • Python pyecharts如何绘制云图呢?下面就给大家详解解答

      Python pyecharts作为常用的数据可视化软件,能够清晰的将海量的数据,去做一个拆分,要是更直观的去查看数据图表的话,就需要去制作云图了?那么,怎么制作云图呢?下面就给大家详细的做个解答。  词云图  什么是词云图,相信大家肯定不会感到陌生,一本书统计里面出现的词频,然后可视化展示,让读者快速的了解这个主题纲要,这就是词云的直接效果。  词云图系列模板  固定模式词云图  修改一些参...

    89542767 评论0 收藏0
  • python 生成18年写过的博客词云

    摘要:处理文件最终得到的字符串得到所有的文本之后,使用结巴分词,处理成单个的词语。 文章链接:https://mp.weixin.qq.com/s/NmJjTEADV6zKdT--2DXq9Q 回看18年,最有成就的就是有了自己的 博客网站,坚持记录,写文章,累计写了36篇了,从一开始的难以下手,到现在成为一种习惯,虽然每次写都会一字一句斟酌,但是每次看到产出,内心还是开心的,享受这样的过...

    xi4oh4o 评论0 收藏0
  • python爬虫实战一:分析豆瓣中最新电影的影评

    摘要:准备把豆瓣上对它的影评短评做一个分析。这样就得到了最新电影的信息了。例如战狼的短评网址为其中就是电影的,表示评论的第条评论。如下图所示好的,至此我们已经爬取了豆瓣最近播放电影的评论数据,接下来就要对数据进行清洗和词云显示了。 简介 刚接触python不久,做一个小项目来练练手。前几天看了《战狼2》,发现它在最新上映的电影里面是排行第一的,如下图所示。准备把豆瓣上对它的影评(短评)做...

    BearyChat 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<