读取“三国演义.txt”文本中的内容,去除重复的词语和 标点符号,并列出词频最高的10-20个词语,并形成词云图显示出来
时间: 2024-02-17 10:04:21 浏览: 58
好的,需要先安装一些必要的库,如jieba、wordcloud和matplotlib等。以下是代码实现:
```python
import jieba
import re
from collections import Counter
from wordcloud import WordCloud
import matplotlib.pyplot as plt
# 读取文本内容
with open('三国演义.txt', 'r', encoding='utf-8') as f:
content = f.read()
# 去除标点符号和数字
content = re.sub('[\s+\.\!\/_,$%^*(+\"\']+|[+——!,。?、~@#¥%……&*():;【】《》“”‘’;:、|]+', '', content)
# 分词
words = jieba.lcut(content)
# 统计词频
word_counts = Counter(words)
# 去除停用词
stopwords = ['的', '了', '是', '在', '和', '有', '不', '这', '中', '为', '他', '上', '人', '到', '说', '地', '也', '要', '就', '出', '等', '能', '以', '会', '可', '着', '之', '而', '但', '与', '于', '其', '及', '从', '并', '自', '已', '一', '个']
for word in stopwords:
word_counts.pop(word, None)
# 获取词频最高的前20个词语
top_words = word_counts.most_common(20)
# 输出前20个词语和它们出现的次数
for word, count in top_words:
print(word, count)
# 生成词云图
wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', max_words=2000, max_font_size=100, width=800, height=800)
wordcloud.generate_from_frequencies(word_counts)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
```
在运行完上述代码后,会输出词频最高的前20个词语,并且还会生成一个词云图,展示这些词语的重要性。
阅读全文