python词云生成:利用wordcloud库,a)生成《红楼梦》中出现最多的15个人名的词云图
时间: 2023-08-16 22:09:11 浏览: 169
好的,下面是实现的代码,注释中有详细的说明:
```python
import jieba
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取红楼梦文本文件
with open('hongloumeng.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用jieba分词对文本进行切分
words = jieba.cut(text)
# 统计人名出现次数
counts = Counter()
for word in words:
# 如果是人名,则加入计数器
if word[0] == '贾' or word[0] == '史' or word[0] == '王' or word[0] == '薛':
counts[word] += 1
# 输出出现次数最多的15个人名
top15 = sorted(counts.items(), key=lambda x: x[1], reverse=True)[:15]
for name, count in top15:
print(name, count)
# 生成人名出现次数词云
wordcloud = WordCloud(font_path='msyh.ttc').generate_from_frequencies(counts)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()
```
在上面的代码中,我们使用了jieba库对文本进行了分词,然后遍历分词结果,统计红楼梦中出现的人名并计数。接着,我们输出了出现次数最多的15个人名,然后使用WordCloud库生成了这些人名出现次数的词云图。
注:在运行代码前需要提前安装jieba, collections, wordcloud, matplotlib等相关库。
阅读全文