设计一个程序,读出“三国演义.txt”文件中的三国演义全文,将常见人名进行去重后生成词云,并列出词频最高的10-20个词,并形成词云(可以有不同的形状)。并编写代码
时间: 2024-02-16 17:03:08 浏览: 165
为了实现该程序,需要使用以下步骤:
1. 读取“三国演义.txt”文件中的内容,并将其存储在一个字符串中。
2. 对字符串进行分词,提取出常见的人名,并进行去重。
3. 统计每个人名在文本中出现的次数。
4. 根据词频,选出出现次数最高的10-20个人名。
5. 根据这些人名,生成词云并输出。
以下是一个使用Python实现该程序的示例代码:
```python
import jieba
from collections import Counter
from wordcloud import WordCloud, ImageColorGenerator
import numpy as np
from PIL import Image
# 读取文件
with open('三国演义.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词
words = jieba.lcut(text)
names = []
for i in range(len(words)-1):
if words[i] == '关公' or words[i] == '刘备' or words[i] == '张飞':
# 将“关公”、“刘备”、“张飞”作为常见人名
names.append(words[i] + words[i+1])
# 去重
names = list(set(names))
# 统计词频
counter = Counter(names)
# 选出出现次数最高的10-20个人名
top_names = counter.most_common(20)
# 生成词云
mask = np.array(Image.open('cloud.jpg')) # 以cloud.jpg为形状
wc = WordCloud(background_color='white', mask=mask, font_path='msyh.ttc')
wc.generate_from_frequencies(dict(top_names)) # 使用字典生成词云
# 输出词云
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
wc.to_file('wordcloud.png')
```
注:上述代码中使用了jieba、collections、wordcloud、numpy和PIL等库,需要先安装这些库才能运行。另外,“三国演义.txt”文件和“cloud.jpg”文件需要自行准备。
阅读全文