用wordcloud和jieba生成中文词云

本文介绍了如何结合Python的WordCloud库和jieba分词库,生成中文词云图。以《三国演义》中的四字成语为例,通过词云图展示了高频词汇,如“”,“”等。主要代码包括设置font_path防止中文乱码,以及将jieba分词结果转化为字符串输入WordCloud。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

def split_four_text
好的,我可以为您讲解如何使用Python、wordcloudjieba制作中文词云图。 首先,您需要安装以下wordcloudjieba matplotlib。您可以使用以下命令进行安装: ``` pip install wordcloud pip install jieba pip install matplotlib ``` 接着,您需要准备一段中文文本。您可以从网络上下载一些中文文章,或者自己写一些中文文本。 然后,您可以使用jieba中文文本进行分jieba提供了一个基于前缀典实现的中文器,可以将中文文本分成一个个语。下面是一个使用jieba进行中文的示例代码: ```python import jieba # 设置停用文件路径 jieba.analyse.set_stop_words("stopwords.txt") # 读取文本文件 with open("text.txt", "r", encoding="utf-8") as f: text = f.read() # 对文本进行分 words = jieba.cut(text) # 输出分结果 print(",".join(words)) ``` 在上面的代码中,我们使用了一个停用文件来过滤掉一些无意义的语。您可以自己准备一个停用文件,也可以使用别人已经准备好的停用文件。 接下来,您可以使用wordcloud生成图。wordcloud提供了一个WordCloud类,可以根据语频率生成图。下面是一个使用wordcloud生成图的示例代码: ```python import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt # 设置停用文件路径 jieba.analyse.set_stop_words("stopwords.txt") # 读取文本文件 with open("text.txt", "r", encoding="utf-8") as f: text = f.read() # 对文本进行分 words = jieba.cut(text) # 生成语频率字典 word_freq = {} for word in words: if word not in word_freq: word_freq[word] = 0 word_freq[word] += 1 # 生成图 wc = WordCloud(font_path="simhei.ttf", background_color="white") wc.generate_from_frequencies(word_freq) # 显示图 plt.imshow(wc, interpolation="bilinear") plt.axis("off") plt.show() ``` 在上面的代码中,我们使用了一个字体文件来设置图的字体。您可以自己选择一个中文字体文件,也可以使用别人已经准备好的字体文件。 最后,您可以使用matplotlib图显示出来。使用plt.imshow()函数可以显示图像,使用plt.axis("off")函数可以去掉坐标轴,使用plt.show()函数可以显示图像。 希望以上内容能够帮助到您制作中文词云图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值