词云--《红楼梦》--jieba库--wordcloud库

《红楼梦》
1.人物出场统计
在这里插入图片描述

import jieba
f=open('F:/2级python/test/T10/sucai/红楼梦.txt','r',encoding='utf-8')
txt=f.read()
f.close()
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:
        continue
    else:
        counts[word]=counts.get(word,0)+1
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(15):
    word,count=items[i]
    print('{0:<10}{1:>5}'.format(word,count))

运行结果:

宝玉 3748
什么 1613
一个 1451
贾母 1228
我们 1220
那里 1174
凤姐 1100
王夫人 1011
你们 1009
如今 999
说道 973
知道 967
老太太 966
起来 949
姑娘 941

从结果可以看出并不是都是人物名称,对此,需对代码进行加工:
2. 加工:
引入排除词库excludes
代码:

import jieba 
f=open('F:/2级python/test/T10/sucai/红楼梦.txt','r',encoding='utf-8')
txt=f.read()
f.close()
words=jieba.lcut(txt)
counts={}
for word in words:
    if len(word)==1:
        continue
    else:
        counts[word]=counts.get(word,0)+1
        
excludes = {"什么","一个","我们","那里","你们","如今", \
            "说道","知道","老太太","起来","姑娘","这里", \
            "出来","他们","众人","自己","一面","太太", \
            "只见","怎么","奶奶","两个","没有","不是", \
            "不知","这个","听见"}
for word in excludes:
    del(counts[word])
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
for i in range(5):
    word,count=items[i]
    print('{0:<10}{1:>5}'.format(word,count))

运行结果:
宝玉 3748
贾母 1228
凤姐 1100
王夫人 1011
贾琏 670

总结:
可以看出:宝玉出现次数最多,贾母,凤姐,王夫人等出现次数也不少,频率也差不多 从排除词库可看出:作者喜欢用“我们”,“你们”,“姑娘”,“奶奶”等。因此,如果只通过人物名称来判断出场次数似乎不太好。本文将不在此完善该问题。
3.
在这里插入图片描述

#3人物出场词云
import jieba
from wordcloud import WordCloud
#读文本文件
f=open('F:/2级python/test/T10/sucai/红楼梦.txt','r',encoding='utf-8') 
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=' '.join(words)
excludes = {"什么","一个","我们","那里","你们","如今", \
            "说道","知道","老太太","起来","姑娘","这里", \
            "出来","他们","众人","自己","一面","太太", \
            "只见","怎么","奶奶","两个","没有","不是", \
            "不知","这个","听见"}
wc=WordCloud(background_color='white',font_path='msyh.ttc',height=600,width=800,\
                    max_words=200,max_font_size=80,stopwords=excludes)
wordcloud=wc.generate(newtxt)
wordcloud.to_file('F:/2级python/test/T10/tmp/红楼梦基本词云.png')

运行结果:

在这里插入图片描述
在这里插入图片描述

import jieba
from wordcloud import WordCloud
#读文本文件
f=open('F:/2级python/test/T10/sucai/红楼梦.txt','r',encoding='utf-8') 
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=' '.join(words)
excludes = {"什么","一个","我们","那里","你们","如今", \
            "说道","知道","老太太","起来","姑娘","这里", \
            "出来","他们","众人","自己","一面","太太", \
            "只见","怎么","奶奶","两个","没有","不是", \
            "不知","这个","听见"}
wc=WordCloud(background_color='white',font_path='msyh.ttc',height=400,width=200,\
                    max_words=5,max_font_size=80,stopwords=excludes)
wordcloud=wc.generate(newtxt)
wordcloud.to_file('F:/2级python/test/T10/tmp/红楼梦基本词云.png')

在这里插入图片描述
在这里插入图片描述

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
以下是使用Python实现生成《红楼梦词云的代码: ```python import jieba from wordcloud import WordCloud import matplotlib.pyplot as plt from PIL import Image import numpy as np # 读取文本 with open('hongloumeng.txt', 'r', encoding='utf-8') as f: text = f.read() # 使用jieba进行分 words = jieba.cut(text) # 过滤掉无意义的汇 stopwords = {'的', '了', '是', '和', '就', '都', '而', '及', '与', '也', '在', '之', '以', '从', '这', '将', '中', '更', '有', '或', '说', '到', '被', '他', '她', '它', '我', '你', '是', '吧', '啊', '哦', '呀', '嗯', '嘻', '哈', '呢', '嘛', '咦', '哇', '唉', '咳', '喔', '呦', '噢', '嗬', '咚', '咕', '咔', '嗝', '嘘', '吁', '兮', '且', '如', '乃', '之', '故', '可', '已', '知', '因', '些', '请', '只', '但', '又', '何', '不', '此', '其', '因为', '所以', '虽然', '但是', '然而', '因此', '而且'} filtered_words = [word for word in words if word not in stopwords] # 拼接成字符串 text = ' '.join(filtered_words) # 读取图片 image = Image.open('hongloumeng.png') mask = np.array(image) # 生成词云 wordcloud = WordCloud(font_path='msyh.ttc', mask=mask, background_color='white').generate(text) # 显示词云 plt.imshow(wordcloud, interpolation='bilinear') plt.axis("off") plt.show() # 保存词云 wordcloud.to_file('hongloumeng_wordcloud.png') ``` 需要注意的是,以上代码中使用的文本文件 `hongloumeng.txt` 和图片文件 `hongloumeng.png` 需要根据实际情况进行修改。此外,还需要安装 `jieba` 和 `wordcloud`

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值