美文网首页ITS·黑客
【python】小实验-10行词云

【python】小实验-10行词云

作者: 某米狼 | 来源:发表于2017-04-23 23:58 被阅读77次

    效果《乡土中国》:

    环境:

    pip3 install wordcloud
    pip3 install jieba
    

    代码

    import matplotlib.pyplot as plt
    from wordcloud import WordCloud
    import jieba
     
    text_from_file_with_apath = open('/Users/hecom/23tips.txt').read()
     
    wordlist_after_jieba = jieba.cut(text_from_file_with_apath, cut_all = True)
    wl_space_split = " ".join(wordlist_after_jieba)
     
    my_wordcloud = WordCloud().generate(wl_space_split)
     
    plt.imshow(my_wordcloud)
    plt.axis("off")
    plt.show()
    

    报错:

    >>> text_from_file_with_apath = open('/Users/Lazyant/Desktop/a.txt').read()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/local/Cellar/python3/3.6.1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/codecs.py", line 321, in decode
        (result, consumed) = self._buffer_decode(data, self.errors, final)
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa1 in position 2: invalid start byte
    

    解决:
    在源码wordcloud.py中找到以下代码,
    1 修改字体并替换文件夹字体,支持中文即可。
    2 修改txt的存储编码为utf-8。这个不能忘

    FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__), "DroidSansMono.ttf"))
    

    读源码
    我偷懒直接摘录了笔记

    生产词云的原理其实并不复杂,大体分成5步:

    1. 对文本数据进行分词,也是众多NLP文本处理的第一步,对于wordcloud中的process_text()方法,主要是停词的处理
    2. 计算每个词在文本中出现的频率,生成一个哈希表。词频计算相当于各种分布式计算平台的第一案例wordcount, 和各种语言的hello world 程序具有相同的地位了,呵呵。
    3. 根据词频的数值按比例生成一个图片的布局,类IntegralOccupancyMap 是该词云的算法所在,是词云的数据可视化方式的核心。
    4. 将词按对应的词频在词云布局图上生成图片,核心方法是generate_from_frequencies,不论是generate()还是generate_from_text()都最终到generate_from_frequencies
    5. 完成词云上各词的着色,默认是随机着色

    相关文章

      网友评论

        本文标题:【python】小实验-10行词云

        本文链接:https://www.haomeiwen.com/subject/geluzttx.html