词云wordcloud

Posted nick560

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了词云wordcloud相关的知识,希望对你有一定的参考价值。

pip install wordcloud 
没有报错,如果有错误可以从http://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud下载whl文件直接安装。 

# -*- coding: utf-8 -*-
__author__ = leilu
#wordcloud生成中文词云

from wordcloud import WordCloud
import codecs
import jieba
#import jieba.analyse as analyse
from scipy.misc import imread
import os
from os import path
import matplotlib.pyplot as plt
from PIL import Image, ImageDraw, ImageFont


# 绘制词云
def draw_wordcloud():
    #读入一个txt文件
    comment_text = open(F:\program\MyProjects\clustering\\fenci1.0\wordseg_result.txt,r).read()
    #结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云
    cut_text = " ".join(jieba.cut(comment_text))
    d = path.dirname(__file__) # 当前文件文件夹所在目录
    color_mask = imread("Anne_Hathaway.png") # 读取背景图片
    cloud = WordCloud(
        #设置字体,不指定就会出现乱码
        font_path="HYQiHei-25J.ttf",
        #font_path=path.join(d,‘simsun.ttc‘),
        #设置背景色
        background_color=white,
        #词云形状
        mask=color_mask,
        #允许最大词汇
        max_words=2000,
        #最大号字体
        max_font_size=40
    )
    word_cloud = cloud.generate(cut_text) # 产生词云
    word_cloud.to_file("pjl_cloud4.jpg") #保存图片
    #  显示词云图片
    plt.imshow(word_cloud)
    plt.axis(off)
    plt.show()



if __name__ == __main__:

    draw_wordcloud()

用法比较简单,注释很详细。有个坑人的地方在于font_path设置,尝试了一下几种形式均报错IO error: cannot open resource

font = ImageFont.truetype("arial.ttf", 15),
FONT_PATH = os.environ.get("FONT_PATH", "/Library/Fonts/Times New Roman.ttf"),
font_path="汉仪旗黑25简.ttf",
  • 1
  • 2
  • 3
  • 4

尝试了下述形式报错TypeError: init() got an unexpected keyword argument ‘FONT_PATH’

FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__), "simhei.ttf"))
  • 1

所以最后只有代码里的那两种形式可用,其中HYQiHei-25J.ttf文件是放在代码目录下的,但同样放在代码目录下的汉仪旗黑25简.ttf就找不到,应该是不支持中文名字吧。

 

技术分享图片
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()
View Code

1~3 行分别导入了画图的库,词云生成库和jieba的分词库;

4 行是读取本地的文件

5~6 行使用jieba进行分词,并对分词的结果以空格隔开;

7行对分词后的文本生成词云;

8~10行用pyplot展示词云图。

 


以上是关于词云wordcloud的主要内容,如果未能解决你的问题,请参考以下文章

QQ聊天记录生成词云--WordCloud

WordCloud词云(超详细)

用Python和WordCloud绘制词云(内附让字体清晰的秘笈)

数据挖掘 | 可视化 WordCloud 词云(附详细代码案例)

朱自清《春》的词云

python做词云 (WordCloud)