词云简单生成

Posted Debroon

tags:

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

词云简单生成

 


英文词云图:最简单的词云图

当我们写一篇文案或者思考一个问题的时候,一般会把所有可能出现的关键词写出来,甚至能写到二三十个,当然,这些关键词很多并不关键,它们只是出现在了你的头脑中了。

“词云图”是一种管理我们思维方式的好方法,避免了我们在所有出现的关键词上浪费时间动心思,那样问题是没办法推进的。

绘制词云图,我们使用 wordcloud 模块的 WordCloud 函数。

# -*- coding: utf-8 -*-

from wordcloud import WordCloud    # 导入词云模块
import matplotlib.pyplot as plt

# 打开文本
text = open('constitution.txt').read()

# 生成对象
wc = WordCloud().generate(text)

# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()

# 保存到文件
wc.to_file('wordcloud.png')

constitution.txt 下载链接:https://download.csdn.net/download/qq_41739364/86339152

运行结果:

 


中文词云图:中文字体

# -*- coding: utf-8 -*-

from wordcloud import WordCloud
import matplotlib.pyplot as plt

# 打开文本
text = open('《西游记》.txt', encoding='utf-8').read()

# 生成对象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text) 
 # Hiragino.ttf 是中文字体,需要下载

# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()

# 保存到文件
wc.to_file('wordcloud.png')

《西游记》.txt下载链接:https://download.csdn.net/download/qq_41739364/86339157

中文字体 Hiragino.ttf 下载链接:https://download.csdn.net/download/qq_41739364/86339164

运行结果:

 


中文词云图:分词

中文分词,使用 jieba 模块的 cut(text) 函数。

# -*- coding: utf-8 -*-

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba   # 导入分词模块

# 打开文本
text = open('《西游记》.txt').read()

# 中文分词
text = ' '.join(jieba.cut(text))  # 格式:词 词 词,词和空格间隔

# 生成对象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)

# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()

# 保存到文件
wc.to_file('wordcloud.png')

《西游记》.txt下载链接:https://download.csdn.net/download/qq_41739364/86339157

中文字体 Hiragino.ttf 下载链接:https://download.csdn.net/download/qq_41739364/86339164

运行结果:

 


中文词云图:生成指定形状的词云

# -*- coding: utf-8 -*-

from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba

# 打开文本
text = open('《西游记》.txt').read()

# 中文分词
text = ' '.join(jieba.cut(text))

# 生成对象
mask = np.array(Image.open("black_mask.png"))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate(text)

# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()

# 保存到文件
wc.to_file('wordcloud.png')

《西游记》.txt下载链接:https://download.csdn.net/download/qq_41739364/86339157

中文字体 Hiragino.ttf 下载链接:https://download.csdn.net/download/qq_41739364/86339164

black_mask.png 下载链接:https://download.csdn.net/download/qq_41739364/86339282

运行结果:


 


中文词云图:生成指定颜色的词云

指定颜色,我们使用 ImageColorGenerator 函数。

# -*- coding: utf-8 -*-

from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba

# 打开文本
text = open('《西游记》.txt').read()

# 中文分词
text = ' '.join(jieba.cut(text))

# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate(text)

# 从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)

# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()

# 保存到文件
wc.to_file('wordcloud.png')

《西游记》.txt下载链接:https://download.csdn.net/download/qq_41739364/86339157

中文字体 Hiragino.ttf 下载链接:https://download.csdn.net/download/qq_41739364/86339164

color_mask.png 下载链接:https://download.csdn.net/download/qq_41739364/86339290

运行结果:

中文词云图:生成自定义颜色的词云

配色方案, 请搜索 HSL 配色方案。

# -*- coding: utf-8 -*-

from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import random
import jieba

# 打开文本
text = open('《西游记》.txt').read()

# 中文分词
text = ' '.join(jieba.cut(text))

# 颜色函数
def random_color(word, font_size, position, orientation, font_path, random_state):
	s = 'hsl(0, %d%%, %d%%)' % (random.randint(60, 80), random.randint(60, 80))
	print(s)
	return s

# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(color_func=random_color, mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate(text)

# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()

# 保存到文件
wc.to_file('wordcloud.png')

《西游记》.txt下载链接:https://download.csdn.net/download/qq_41739364/86339157

中文字体 Hiragino.ttf 下载链接:https://download.csdn.net/download/qq_41739364/86339164

color_mask.png 下载链接:https://download.csdn.net/download/qq_41739364/86339290

运行结果:

 


中文词云图:精细控制

如果希望精细控制词云中出现的词,我们用 generate_from_frequencies 函数。

# -*- coding: utf-8 -*-

from wordcloud import WordCloud, ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba.analyse

# 打开文本
text = open('《西游记》.txt').read()

# 提取关键词和权重
freq = jieba.analyse.extract_tags(text, topK=200, withWeight=True)
freq = i[0]: i[1] for i in freq

# 生成对象
mask = np.array(Image.open("color_mask.png"))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf', mode='RGBA', background_color=None).generate_from_frequencies(freq)

# 从图片中生成颜色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)

# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.show()

# 保存到文件
wc.to_file('wordcloud.png')

《西游记》.txt下载链接:https://download.csdn.net/download/qq_41739364/86339157

中文字体 Hiragino.ttf 下载链接:https://download.csdn.net/download/qq_41739364/86339164

color_mask.png 下载链接:https://download.csdn.net/download/qq_41739364/86339290

运行结果:

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

词云简单生成

词云简单生成

简单爬取《小丑》电影豆瓣短评生成词云

Python 生成中文词云

生成中英文词云

Python生成词云