设计一个程序,读出“三国演义.txt”文件中的三国演义全文,将常见人名进行去重后生成词云,并列出词频最高的10-20个词,并形成词云(可以有不同的形状)。\r\n例:'玄德','刘备'
时间: 2024-02-01 16:16:54 浏览: 29
'关公','张飞','赵云','孙策','周瑜','诸葛亮','曹操','孙权','吕布','吕蒙','张辽','马超','黄忠','甘宁','袁绍','袁术','董卓','华佗'。
这是一个比较复杂的任务,需要涉及到文件读取、文本分析、数据处理等多个方面。不过我们可以通过几个简单的步骤来完成这个任务。
1. 读取文件
首先,我们需要读取“三国演义.txt”文件中的文本内容。可以使用Python中的open函数打开文件,再使用read方法读取文件内容。
```
with open('三国演义.txt', 'r', encoding='utf-8') as f:
content = f.read()
```
2. 文本分析
接下来,我们需要进行文本分析,把文本中的人名提取出来。可以使用jieba库进行分词,然后筛选出名词,并使用正则表达式匹配出人名。
```
import jieba
import re
text = ''.join(jieba.cut(content))
names = re.findall('[\u4e00-\u9fa5]{2,4}(?:·[\u4e00-\u9fa5]{2,4})*', text)
```
3. 数据处理
接下来,我们需要对人名数据进行处理,去重后统计词频。可以使用Python中的Counter类来实现。
```
from collections import Counter
name_counts = Counter(names)
```
4. 生成词云
最后,我们使用Python中的wordcloud库来生成词云。可以使用Image模块来读取不同形状的图片,生成不同形状的词云。
```
from wordcloud import WordCloud, ImageColorGenerator, STOPWORDS
from PIL import Image
import numpy as np
mask = np.array(Image.open('shape.png'))
wc = WordCloud(
font_path='simhei.ttf',
mask=mask,
background_color='white',
max_words=2000,
stopwords=STOPWORDS.add('说')
)
wc.generate_from_frequencies(name_counts)
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
wc.to_file('word_cloud.png')
```
以上就是一个完成的程序,可以读取“三国演义.txt”文件中的文本内容,提取出人名并进行词频统计,最后生成词云。