python 一个程序,读出“三国演义.txt”文件中的三国演义全文,将常见人名进行去重后生成词云,并列出词频最高的10-20个词,并形成词云(可以有不同的形状)。
时间: 2023-08-07 09:04:16 浏览: 194
以下是一个Python程序,它将读取“三国演义.txt”文件中的全文并使用jieba分词库进行分词和去重处理。然后,程序将使用wordcloud库生成词云,并使用matplotlib库显示结果。
```python
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取文件
with open('三国演义.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词
words = jieba.lcut(text)
# 去除停用词和单个字
stopwords = [',', '。', '、', ':', ';', '!', '?', '《', '》', '(', ')', '【', '】', '一', '了', '的', '在', '是', '和', '有', '人', '他', '他们', '你', '我们', '这', '那', '但']
words = [word for word in words if word not in stopwords and len(word) > 1]
# 去重
unique_words = list(set(words))
# 计算词频
word_freq = {}
for word in unique_words:
word_freq[word] = words.count(word)
# 排序
sorted_words = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)
# 输出词频最高的10-20个词
for word, freq in sorted_words[10:20]:
print(word, freq)
# 生成词云
wordcloud = WordCloud(font_path='simhei.ttf', background_color='white', width=800, height=600, max_words=200, mask=plt.imread('mask.png'))
wordcloud.generate_from_frequencies(word_freq)
# 显示词云
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
```
注意:在运行此程序之前,您需要安装jieba,wordcloud和matplotlib库,并将“三国演义.txt”文件和一个词云形状图像文件(例如“mask.png”)放在相同的目录下。您还可以更改程序中使用的停止词列表和其他参数以调整词云生成器的行为。
阅读全文