编写一篇python代码。功能为对一篇单词数量不少于20000的英文文档进行英文词频统计,去除无意义的词频数据,分别统计出单词字母数量最多的前10个单 词,及单词出现次数最多的前30个单词,用出现次数最多的前30个单词制作一长为800,高为 600,背景色为白色,最大字体尺寸为 200 ,最小字体尺寸为20的词云
时间: 2023-05-29 15:03:29 浏览: 118
以下是一份可能的Python代码,使用了nltk库进行英文分词和停用词去除,并使用wordcloud库生成词云图。
```python
import nltk
from nltk.tokenize import word_tokenize
from nltk.corpus import stopwords
from collections import Counter
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 读取文本文件
with open('text.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 分词
tokens = word_tokenize(text.lower())
# 去除停用词
stop_words = set(stopwords.words('english'))
words = [word for word in tokens if word.isalpha() and word not in stop_words]
# 统计单词出现次数
word_counts = Counter(words)
# 获取单词字母数量最多的前10个单词
longest_words = sorted(word_counts.keys(), key=lambda w: len(w), reverse=True)[:10]
# 获取单词出现次数最多的前30个单词
most_common_words = word_counts.most_common(30)
# 输出结果
print('Longest words:')
for word in longest_words:
print(word, word_counts[word])
print('\nMost common words:')
for word, count in most_common_words:
print(word, count)
# 生成词云图
wordcloud = WordCloud(width=800, height=600, background_color='white', max_font_size=200, min_font_size=20)
wordcloud.generate_from_frequencies(word_counts)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
```
请注意,这份代码假设文本文件名为text.txt,并以UTF-8编码保存。您可以根据需要更改文本文件名和编码。
阅读全文