python版本3.9已安装jieba库和wordcloud库
时间: 2023-09-22 10:08:15 浏览: 202
好的,以下是代码实现,您可以根据需要进行修改和优化,生成人物统计词云效果:
```python
import jieba
import wordcloud
import numpy as np
from PIL import Image
# 读取文本
with open('shuihuzhuan.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 添加自定义词典
jieba.load_userdict('characters.txt')
# 分词
words = jieba.cut(text)
# 统计人物词频
characters = {}
for w in words:
if len(w) > 1:
if w in characters:
characters[w] += 1
else:
characters[w] = 1
# 选择展示的人物
last_digit = int(input("请输入学号最后一位数:"))
selected_characters = sorted(characters.items(), key=lambda x: x[1], reverse=True)[:5]
selected_characters = [c[0] for c in selected_characters if int(c[0][-1]) == last_digit]
# 生成词云
mask = np.array(Image.open('mask.png'))
wc = wordcloud.WordCloud(
font_path='simhei.ttf',
background_color='white',
mask=mask,
max_words=2000,
max_font_size=150,
random_state=42
)
wc.generate_from_frequencies(characters)
wc.to_file('wordcloud.png')
# 绘制人物统计词云
selected_words = {c: characters[c] for c in selected_characters}
wc_selected = wordcloud.WordCloud(
font_path='simhei.ttf',
background_color='white',
max_words=2000,
max_font_size=150,
random_state=42
)
wc_selected.generate_from_frequencies(selected_words)
wc_selected.to_file('wordcloud_selected.png')
```
需要注意的是,代码中使用了两个外部文件,分别是自定义的人物词典文件 `characters.txt` 和掩码图片文件 `mask.png`。您需要根据实际情况进行修改并放在相应的位置。
在运行程序时,程序会要求您输入学号最后一位数,根据输入的数字生成对应的人物统计词云。生成的词云图片会保存在当前目录下的 `wordcloud.png` 和 `wordcloud_selected.png` 文件中。
阅读全文