词云 就像视频里说的高端又一般 有种华而不实的赶脚 外行人看来是件很酷的东西
其一:若干词案按照特定的图案组成 这究竟是如何做到的
其二:若词越大 则此词若越重要
等真正去实践生成词云 好像并没有想象中的那么困难 基本框架就三步
导入文本数据
使用wordcloud
导出图片
就好了 非常简单 其中一些小细节都在是这三步基本框架中补充 认真想想 其实是我们站在了巨人的肩膀上 wordcloud已经把最核心最重要封装好了 如:究竟是如何做到按特定的图案排列 我们只需要拿来主义即可 在此感谢开发者们
下面是视频的简单总结及补充 具体内容还是去看视频吧 不能辜负每一位原作者的汗水和心血
使用到的第三方包:
wordcloud
matplotlib
PIL
numpy
jieba
1.英文词云 直接采用默认配置即可
wc = WordCloud().generate(text) wc.to_file('wordcloud.png')
毕竟是歪果仁开发的语言 果然还是对英文特别友好
2.中文词云 需额外添加中文字体包
wc = WordCloud(font_path='Hiragino.ttf',width = 800,height= 600, mode = 'RGBA',background_color =None).generate(text)
3.中文词云 除了配置字体包 还需分词
英文天然空格分词属性 中文可就不好说了
text = ' '.join(jieba.cut(text)) wc = WordCloud(font_path = 'Hiragino.ttf', mode = 'RGBA',background_color = None).generate(text)
4.词云添加蒙版 (最酷炫的图案来了)
black_mask.png 为蒙版底片
mask = np.array(Image.open('black_mask.png')) wc = WordCloud(mask = mask,font_path = 'Hiragino.ttf', mode = 'RGBA',background_color = None).generate(text)
5.词云使用蒙版的颜色
image_colors = ImageColorGenerator(mask) wc.recolor(color_func = image_colors)
6.词云自定义文字颜色
这里使用HSL来自定义颜色 详情见文档
参考文档
def random_color(word,font_size,position,orientation,font_path,random_state): s = 'hsl(120 ,%d%%,%d%%)' % (random.randint(0, 100),random.randint(0, 100)) return s mask = np.array(Image.open('black_mask.png')) wc = WordCloud(mask = mask ,color_func = random_color, font_path = 'Hiragino.ttf',mode = 'RGBA', background_color = None).generate(text)
7.词云自定义关键词及权重
#可自定义freq字典freq ={} mask = np.array(Image.open('timg.jpg')) wc = WordCloud(font_path = 'Hiragino.ttf',mask = mask, mode = 'RGBA',background_color= None).generate_from_frequencies(freq)
generate() = process_text() + generate_from_frequencies()
之前用到的generate()其实就是process_text() 统计文本词频 和jieba的统计关键词 两者差不多 结果很相似和generate_from_frequencies()根据词频做图的结合体
8.词云使用停用词
有些没有实际含义 却普遍出现 如:你、我、他、如果等等
可根据实际效果 适当摘出 复制到txt中 用于停用词
# 获取名词# jieba.enable_parallel(100) #开启并行模式 win下不支持 很气text = ' '.join(x.word for x in psg.cut(text) if x.flag.startswith('n'))# jieba.disable_parallel() #关闭并行模式# 导入停用词stopwords = open('stopwords.txt').read().split('\n')# 导入蒙版mask = np.array(Image.open('1.jpg')) wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None, stopwords=stopwords).generate(text)
最后话不多说 Github
代码实例
作者:丨像我这样的人丨
链接:https://www.jianshu.com/p/5aa8f137b1cd
共同学习,写下你的评论
评论加载中...
作者其他优质文章