利用jieba、wordcloud、matplotlib三个库做出词云
基本步骤
- 1、将目标文本分词
- 2、创建词云对象
- 3、生成图片
解释
- WordCloud是可以分词的,但是对中文不友好,所以需要使用jieba库分词
分词教程 - 词云对象需要指定字体的路径,默认字体无法显示中文文本
WordCloud参数 | 说明 |
---|---|
width | 词云图片的宽度 |
height | 词云图片的高度 |
min_font_size | 最小字号,默认是4号 |
max_font_size | 最大字号 |
font_step | 字体步长,如果步长大于1,会加快运算但是可能导致结果出现较大的误差 |
font_path | 字体路径 |
max_words | 最大单词数量,默认200个 |
stop_words | 忽略的单词列表 |
background_color | 词云图片的背景色 |
mask | 指定词云形状,图片的白色部分不显示词语,其余颜色将会显示词语 |
最简单的词云
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
text = '从语体的角度看,立法语体相对独立,法律文本的词语特征、句子特征和篇章特征都体现了这种相对独立性。'
cut_text = '|'.join(jieba.cut(text, cut_all=False))
wordcloud = WordCloud(
font_path="C:/Windows/Fonts/simfang.ttf",
background_color="white",
width=1000,
height=880,
).generate(cut_text)
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
拓展
如果生成特殊图形的词云(默认是方形),则加以下代码即可,注意图片的白色不显示文字
import wordcloud
import numpy as np
import matplotlib.pyplot as plt
import PIL
import jieba
content=open("content.txt","r").read() #读取文本文件
cut_list=jieba.cut(content) #分词
target_content=" ".join(cut_list) #将列表转为字符串,并以空格隔开
image = PIL.Image.open(r'pic.png') #加载图片
MASK = np.array(image) #将图片转化为数组
#设置词云对象
WC = wordcloud.WordCloud(
font_path = r'C:\Windows\Fonts\msyh.ttc', #微软雅黑字体路径 C:\Windows\Fonts\msyh.ttc
max_words=2000,
mask = MASK,
height= 1000,
width=1000,
background_color='white',
repeat=False,
mode='RGBA'
)
#生成词云图片
wc_image = WC.generate(target_content)
plt.imshow(wc_image)
plt.axis('off')
plt.show()