python三国演义人名词云。 设计一个程序,读出“三国演义.txt”文件中的三国演义全文,将常见人名进行去重后生成词云,并列出词频最高的10-20个词,并形成词云(可以有不同的形状)。
时间: 2024-02-16 19:04:42 浏览: 144
基于Python实现的词云生成代码,从txt文件中读取词语,生成指定图片的词云图
好的,这是一个比较常见的NLP任务,我们可以按照以下步骤来完成:
1. 读取三国演义的文本文件。
2. 使用正则表达式或其他方法,提取文本中的人名。
3. 对人名进行去重和统计词频,并找出出现频率最高的10-20个人名。
4. 根据人名的词频,生成词云。
下面是一个Python程序,可以实现上述步骤:
```python
import jieba
import jieba.analyse
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import re
# 读取文本文件
with open('三国演义.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 提取人名
pattern = re.compile('[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*')
names = pattern.findall(text)
# 去重
names = list(set(names))
# 统计词频
freq = {}
for name in names:
freq[name] = text.count(name)
# 找出出现频率最高的10-20个人名
top_names = sorted(freq.items(), key=lambda x: x[1], reverse=True)[:20]
# 生成词云
mask = np.array(Image.open('cloud.png'))
wc = WordCloud(font_path='msyh.ttc', background_color='white', max_words=2000, mask=mask)
wc.generate_from_frequencies(freq)
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
```
其中,`cloud.png`是词云的形状图片,可以根据实际需求自行替换。`msyh.ttc`是字体文件,如果没有该字体文件,可以使用其他中文字体。
运行程序后,即可生成三国演义人名词云,并列出词频最高的20个人名。
阅读全文