python红楼梦人物词频统计_用Python绘制红楼梦词云图,竟然发现了这个!

本文介绍了如何使用Python对《红楼梦》进行词频统计并绘制词云图。通过jieba分词、去除停用词,发现贾宝玉、贾母等角色的词频,揭示了贾母在故事中的重要地位。最终,利用WordCloud展示词云结果,提供了一种直观的数据分析方式。

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

原标题:用Python绘制红楼梦词云图,竟然发现了这个!

Python在数据分析中越来越受欢迎,已经达到了统计学家对R的喜爱程度,Python的拥护者们当然不会落后于R,开发了一个个好玩的数据分析工具,下面我们来看看如何使用Python,来读红楼梦,绘制小说中的词云。

首先当然要导入我们需要用到的包,下面import进来的包,都是我们将在接下来的程序中使用到的包,如果大家还没有安装它们,那么尽快安装它们吧。

import jieba

import numpy

import codecs

import pandas

import matplotlib.pyplot as plt

from wordcloud import WordCloud

接着,要分析词频,就要读取我们的《红楼梦》的文本数据,读取文本,我建议使用codecs包,它可以先通过设置文件的编码,对文件进行读入,这样子就不用边读遍转码了,非常实用。

file = codecs.open("D:\\红楼梦.txt", 'r', 'utf-8')

content = file.read()

file.close()

然后,我们就来分词了,中文分词,当然要用大名鼎鼎的jieba包,下面就是分词的方法。

这里我们需要注意两点:

1、为了提高分词的准确度,我们最好寻找我们分词的词库,这里我下载到了红楼梦的分词库,加载如jieba中,然后再进行分词。

2、对于小说中,一个字的词,基本上算是无用的词,或者说是标点符号,因此这里我直接抛弃了。

jieba.load_userdict('D:\\红楼梦词库.txt');

segments = []

segs = jieba.cut(content)

for seg in segs:

if len(seg)>1:

segme

可以利用Python中的文本处理库NLTK和词云库WordCloud来完成这个任务。首先,你需要先安装NLTK和WordCloud库。你可以使用以下命令来安装它们: ``` pip install nltk pip install wordcloud ``` 接下来,你需要下载红楼梦的文本数据。你可以在网上找到红楼梦的文本文件,将其保存为一个文本文件(比如,red_chamber.txt)。 下面是一个示例代码,用于统计红楼梦人物出场次数并绘制词云图: ```python import nltk from nltk.corpus import stopwords from nltk.tokenize import word_tokenize from wordcloud import WordCloud import matplotlib.pyplot as plt # 读取文本文件 with open('red_chamber.txt', 'r', encoding='utf-8') as file: text = file.read() # 设置停用词 stop_words = set(stopwords.words('chinese')) # 分词 tokens = word_tokenize(text) # 去除停用词和标点符号 filtered_tokens = [word for word in tokens if word.isalpha() and word not in stop_words] # 统计人物出场次数 character_counts = nltk.FreqDist(filtered_tokens) # 获取前20名人物 top_characters = character_counts.most_common(20) # 输出前20名人物及其出场次数 for character, count in top_characters: print(character, count) # 绘制词云图 wordcloud = WordCloud(width=800, height=400, background_color='white').generate_from_frequencies(character_counts) plt.figure(figsize=(10, 5)) plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show() ``` 以上代码会输出红楼梦中前20名人物及其出场次数,并绘制一个词云图显示人物出场频率。你可以根据需要调整词云图的大小、颜色等参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值