环境:Ubuntu+python3.6+jupyter notebook
教材:高端又一般的词云
词云目的是为了将权重占比高的词语重点显示,从而突出文本内容。
代码如下:将西游记的内容勾画出词云
!pip install wordcloud jieba
# -*- coding: utf-8 -*-
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
text = open('xyj.txt').read()
text = ' '.join(jieba.cut(text))
print(text[:100])
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()
函数解析
WordCloud:接收文本 并 将文本内容转化为词云对象 (但是注意 因为主要是面向英语 英语的词是用空格分开的 所以如果对中文使用的话 必须先用空格将一段话拆成词语)
比如:“I am your father” 而中文是"我是你爸爸" 这一句话都是词语
text = ’ '.join(jieba.cut(text)) 会将"我是你爸爸" 改为 “我 是 你 爸爸” 这才是中文词语
错误问题与解答
词云(wordcloud)报错:ValueError: We need at least 1 word to plot a word cloud, got 0.
解决办法:文件格式改为utf-8保存即可
OSError: unknown file format
解决办法:我是Ubuntu的环境映射到windows的,所以先把ttf文件放到ubuntu下,不要直接拉到Jupyter中