赞
踩
WordCloud是Python中一个非常优秀的第三方词云展示库,但是处理中文就不怎么能胜任,因为中文通常包含着一整句话,尽管在WordCloud里虽然也有process_text()方法用于把很长的文字做分隔,但这个方法本身是根据英文文本分词设计的,所以对于中文字的展示必须要配合更适合做中文分词处理的jieba分词库来操作效果更佳,今天就拿这两个库配合一起展示下小说《三国演义》中,四个字成语中那些出现的频率最高。
先来看下最终的词云效果图,下面就是我们以武将张飞为模板形状产生的中文词云图,可以很明显的看到诸如,如之奈何
、大喝一声
、木牛流马
、决一死战
都是比较大突出和大的字体,说明频率最高,也不得不说三国剧情的跌宕起伏和打斗场面精彩。
下面就是整段处理的代码,因为我们的目标是创建基于小说《三国演义》里所有四个字成语的中文词云图,因此我们从逻辑上来说只需要设计两个函数体。分别是split_four_text()
函数用来处理中文分词功能,和draw_wordcloud
函数用于将处理后的中文词显示成词云,对于整段代码提一下几处重要的代码区域。
第13行代码处,在配置实例对象wordcloud参数时,我们设置了font_path参数,因为在部分系统环境内显示中文会出现乱码,所以强制以定义的中文字体显示就可以解决这个问题。
第64行代码处,由于WordCloud词云读取的文本必须以字符串或者二进制形式输入,否则会报错TypeError: expected string or bytes-like object的关系,所以我们强制将jieba分词返回的list类型内容转换为str类型。
import jieba
import numpy as np
from pathlib import Path
from PIL import Image
from wordcloud import WordCloud, ImageColorGenerator
from matplotlib import pyplot as plt
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。