安装:pip install wordcloud
对于英文,wordcloud默认以空格和标点为分隔符对目标文本进行分词处理。
对于中文,分词处理需要用户自己来完成。
一般先将文本分词处理然后用空格拼接,再调用wordcloud库函数。
处理中文时还需要指定中文字体,例如使用微软雅黑字体(msyh.ttc)
作为显示效果,需要将字体文件与代码存放到相同目录下或者
在字体文件名前添加完整路径。
wordcloud可以生成任何形状的词云,为了获得所需要的形状,
需要提供模板mask,模板mask的背景是白色。
需要调用两行代码:
from scipy.misc import imread
mask = imread('bryant.jpg')
它将图片转为ndarray类型
其中scipy库作为wordcloud的依赖库会被自动安装。
代码举例:红楼梦词云
import jieba
from wordcloud import WordCloud
from scipy.misc import imread
mask = imread('bryant.jpg')
excludes = {"什么","一个"}
excludes = {"qut"}
f = open("红楼梦.txt", "r", encoding='utf-8')
txt = f.read()
f.close()
words = jieba.lcut(txt)
counts = {}
for word in words:
if len(word) == 1: #排除单个字符的分词结果
continue
else:
counts[word] = counts.get(word,0) + 1
for word in excludes:
del(counts[word])
items = list(counts.items())
items.sort(key=lambda x:x[1], reverse=True)
for i in range(30):
word, count = items[i]
print ("{0:{2}<10}出场次数:{1:{2}<5}".format(word, count,(chr(12288))))
##############
newtxt = "".join(words)
wordcloud = WordCloud(background_color="white",\
width=800,
height=600,
font_path="msyh.ttf",
max_words=200,
max_font_size=80,
mask = mask,
stopwords=excludes,
).generate(newtxt)
wordcloud.to_file("红楼梦词云.png")
from PIL import Image
img = Image.open('红楼梦词云.png')
img.show()
控制台输出:
Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
PS C:\Users\chenxuqi\Desktop\新建文件夹\英文文本词频统计\中文分词> & 'D:\Python\Python37\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2020.10.332292344\pythonFiles\lib\python\debugpy\launcher' '63604' '--' 'c:\Users\chenxuqi\Desktop\新建文件夹\英文文本词
频统计\中文分词\红楼梦词云.py'
c:\Users\chenxuqi\Desktop\新建文件夹\英文文本词频统计\中文分词\红楼梦词云.py:4: DeprecationWarning: `imread` is deprecated!
`imread` is deprecated in SciPy 1.0.0, and will be removed in 1.2.0.
Use ``imageio.imread`` instead.
mask = imread('bryant.jpg')
Building prefix dict from the default dictionary ...
Loading model from cache C:\Users\chenxuqi\AppData\Local\Temp\jieba.cache
Loading model cost 0.780 seconds.
Prefix dict has been built successfully.
宝玉 出场次数:3556
什么 出场次数:1536
一个 出场次数:1413
贾母 出场次数:1200
我们 出场次数:1187
那里 出场次数:1139
凤姐 出场次数:1088
如今 出场次数:977
你们 出场次数:976
王夫人 出场次数:958
老太太 出场次数:948
说道 出场次数:928
知道 出场次数:923
这里 出场次数:921
起来 出场次数:919
姑娘 出场次数:911
出来 出场次数:898
他们 出场次数:874
众人 出场次数:850
奶奶 出场次数:844
自己 出场次数:799
太太 出场次数:790
一面 出场次数:779
两个 出场次数:769
只见 出场次数:761
没有 出场次数:756
怎么 出场次数:725
不是 出场次数:709
不知 出场次数:671
贾琏 出场次数:664
PS C:\Users\chenxuqi\Desktop\新建文件夹\英文文本词频统计\中文分词>
展示效果: