利用wordcloud库,对《War and Peace》进行英文词语分析,统计小说中 出现最多的20个单词 (单词长度-4), 然后以词云图片的方式输出。
时间: 2024-02-15 15:04:27 浏览: 104
好的,以下是实现的代码:
```python
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
# 读取文本文件
with open('war_and_peace.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 使用jieba分词
words = jieba.lcut(text)
# 统计单词出现次数
word_counts = {}
for word in words:
if len(word) > 4: # 过滤掉长度小于等于4的单词
word_counts[word] = word_counts.get(word, 0) + 1
# 按出现次数降序排序,获取前20个单词
top_words = sorted(word_counts.items(), key=lambda x: x[1], reverse=True)[:20]
# 生成词云图
mask = np.array(Image.open('mask.png')) # 读取蒙版图片
wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', mask=mask)
wordcloud.generate_from_frequencies(dict(top_words)) # 根据单词频率生成词云图
# 显示词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
其中,需要准备的文件包括:
- `war_and_peace.txt`:《战争与和平》英文版的文本文件。
- `msyh.ttc`:微软雅黑字体文件(或者使用其他中文字体文件)。
- `mask.png`:蒙版图片,用于指定词云图的形状。
执行以上代码后,程序会自动生成词云图并显示出来。如果需要保存词云图,可以使用`wordcloud.to_file(filename)`方法,例如:
```python
wordcloud.to_file('wordcloud.png')
```
这样就会将词云图保存为`wordcloud.png`文件。
阅读全文