用python实现:输入一片英语文章,统计其中每个单词的词频,并以图表形式显示最常出现的20个单词及其词频
时间: 2023-08-22 11:04:25 浏览: 118
Python实现统计英文文章词频的方法分析
好的,我可以帮你实现这个功能。需要用到Python中的一些库来完成这个任务,分别是`matplotlib`和`collections`。
首先,需要安装这两个库。可以在命令行中输入以下命令来安装:
```
pip install matplotlib collections
```
安装完成后,可以使用以下代码实现统计单词词频并以图表形式显示:
```python
import matplotlib.pyplot as plt
import collections
def word_count(text):
# 将文章中的所有单词转换为小写,并分割出每个单词
words = text.lower().split()
# 使用collections库中的Counter函数统计每个单词出现的次数
counter = collections.Counter(words)
# 返回词频统计结果
return counter
def plot_word_freq(counter, num=20):
# 获取词频最高的num个单词及其词频
top_words = counter.most_common(num)
# 将单词和词频分别存储到两个列表中
words = [word[0] for word in top_words]
freqs = [word[1] for word in top_words]
# 使用matplotlib库绘制柱状图
plt.bar(words, freqs)
plt.xticks(rotation=90)
plt.xlabel('Words')
plt.ylabel('Frequency')
plt.title('Top {} Words in Text'.format(num))
plt.show()
if __name__ == '__main__':
# 读取文章内容
with open('article.txt', 'r', encoding='utf-8') as f:
text = f.read()
# 统计单词词频
counter = word_count(text)
# 绘制词频柱状图
plot_word_freq(counter)
```
在这个代码中,`word_count`函数用于统计每个单词出现的次数,返回一个`collections.Counter`对象;`plot_word_freq`函数用于绘制词频柱状图,接受一个`collections.Counter`对象和要显示的单词数量作为参数。
在`if __name__ == '__main__':`语句块中,首先读取文章内容,并调用`word_count`函数统计单词词频,然后调用`plot_word_freq`函数绘制词频柱状图。
你只需要将你的英语文章保存为`article.txt`文件,然后运行这个Python文件即可得到最常出现的20个单词及其词频的柱状图。
阅读全文