当前位置:   article > 正文

用wordcloud和jieba生成中文词云_expected string or bytes-like object词云图

expected string or bytes-like object词云图

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

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/348421
推荐阅读
相关标签
  

闽ICP备14008679号