用Python读红楼梦之——二、词云美化


咱们书接上回,讲到我们使用Python把红楼梦中的核心词汇给绘画出来了,但是,红楼梦这么唯美的书,给我们乌漆麻黑的搞了一张词云,宝宝们肯定接受不了。


我们先来找照片,这张照片不错,不过还是要处理一下,把背景处理称为白色,这个时候,PS工具可以简单地达到这个效果。


接着,我们就要来写程序了,老规矩,我们先来导入包:

from scipy.misc import imread
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator

把图片读取进去,然后重新设置一下WordCloud对象,设置mask为我们的图片。
bimg = imread("D:\\贾宝玉.png")

wordcloud = WordCloud(
background_color="white", 
mask=bimg, font_path='D:\\simhei.ttf'
)

接着,我们就可以美美地绘制词云了。
wordcloud = wordcloud.fit_words(segStat.head(1000).itertuples(index=False))

bimgColors = ImageColorGenerator(bimg)

plt.axis("off")
plt.imshow(wordcloud.recolor(color_func=bimgColors))
plt.show()


长腿欧巴虽然好,但是画起来,很明显我们的词汇分成两大部分了,这样子会分散我们的注意力,因此,我们使用人物作为背景绘制词云的时候,最好只是使用上半身,使用头像就更好了。因此,长腿欧巴拜拜。


bimg = imread("D:\\贾宝玉2.png")

wordcloud = WordCloud(
background_color="white", 
mask=bimg, font_path='D:\\simhei.ttf'
)

wordcloud = wordcloud.fit_words(segStat.head(1000).itertuples(index=False))

bimgColors = ImageColorGenerator(bimg)

plt.axis("off")
plt.imshow(wordcloud.recolor(color_func=bimgColors))
plt.show()


这样子画出来的词云,是不是就唯美了很多了呢?希望你们喜欢,欲知后事如何,欢迎微博关注@大数据分析实战,我们下回再见。
为了创建《红楼梦》人物出场次数词云,我们首先需要准备相关的文本数据,通常这是一部文学作品的手抄本、电子版或者是已有的文本分析数据集。然后我们可以利用Python中的`jieba`库进行分词处理,`wordcloud`库来生成词云图,以及`matplotlib`或`seaborn`进行美化。 以下是简化的步骤: 1. **获取和整理数据**:下载《红楼梦》文本数据,如果是以电子形式存在,可以直接取;如果没有,可以从网上找开源版本或者手动输入。 ```python import requests from bs4 import BeautifulSoup # 假设我们有一个在线的PDF转文本接口 url = "https://example.com/hongloumeng.txt" response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') text = soup.get_text() ``` 2. **分词**: ```python import jieba tokens = jieba.lcut(text) # 对文本进行分词 ``` 3. **统计词频**: ```python from collections import Counter word_count = Counter(tokens) ``` 4. **生成词云**: ```python from wordcloud import WordCloud import matplotlib.pyplot as plt def create_word_cloud(word_counts): wc = WordCloud(font_path='simhei.ttf', background_color='white', width=800, height=600).generate_from_frequencies(word_counts) plt.imshow(wc, interpolation='bilinear') plt.axis('off') plt.show() create_word_cloud(word_count) ``` 5. **人物识别**:由于《红楼梦》人物众多且名字可能有特定格式(如贾宝玉、林黛玉等),你可能需要一个预先定义的人物名单和对应的关键词,以便从词云中挑选出主要人物。 相关问题: 1. 如何准确地识别《红楼梦》的人物并计算他们的词频? 2. 如何选择合适的字体文件支持中文显示? 3. 如何处理文本预处理过程中的停用词和标点符号?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值