哈姆雷特英文词频统计 Python
简介
在自然语言处理(NLP)领域,词频统计是一个基本且重要的任务。词频统计可以帮助我们了解文本数据中不同词语的使用频率,进而对文本进行分类、情感分析等。本文将介绍如何使用 Python 进行哈姆雷特英文词频统计,并展示词频统计结果的可视化。
准备工作
在开始之前,我们需要安装以下 Python 库:
- NLTK(自然语言处理工具包)
- Matplotlib(绘图库)
可以使用以下命令来安装这些库:
!pip install nltk
!pip install matplotlib
我们还需要下载 NLTK 的数据集,其中包含了一些示例文本数据。打开 Python 解释器,输入以下命令:
import nltk
nltk.download('gutenberg')
数据导入和处理
在进行词频统计之前,我们首先要载入哈姆雷特的文本数据并进行处理。我们将使用 NLTK 提供的 Gutenberg 语料库中的《哈姆雷特》作为示例。
from nltk.corpus import gutenberg
from nltk.tokenize import word_tokenize
# 载入《哈姆雷特》文本数据
hamlet = gutenberg.raw('shakespeare-hamlet.txt')
# 分词
tokens = word_tokenize(hamlet)
在代码中,我们使用 gutenberg.raw()
函数来获取《哈姆雷特》的原始文本数据,并使用 word_tokenize()
函数将文本数据分词。
词频统计
接下来,我们将使用 Python 字典来统计文本中每个单词的出现次数,并按照次数从高到低排序。
word_freq = {}
# 统计词频
for word in tokens:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
# 按照词频从高到低排序
sorted_word_freq = sorted(word_freq.items(), key=lambda x: x[1], reverse=True)
在代码中,我们使用了一个空字典 word_freq
来存储每个单词的出现次数。对于每个单词,我们首先检查它是否已经在字典中,如果在则将其计数加一,否则将其添加到字典中并设置计数为一。然后,我们使用 sorted()
函数将字典按照值进行排序,并保存在 sorted_word_freq
中。
可视化结果
为了更直观地展示词频统计结果,我们可以使用 Matplotlib 库来绘制词频柱状图和词频饼状图。
词频柱状图
import matplotlib.pyplot as plt
# 获取前十个单词及其词频
top10_words = sorted_word_freq[:10]
words = [w[0] for w in top10_words]
freqs = [w[1] for w in top10_words]
# 绘制柱状图
plt.bar(words, freqs)
plt.xlabel('Words')
plt.ylabel('Frequency')
plt.title('Top 10 Words Frequency in Hamlet')
plt.show()
在代码中,我们首先获取排序后的词频统计结果中的前十个单词及其词频,并将它们分别存储在 words
和 freqs
列表中。然后,我们使用 plt.bar()
函数绘制柱状图,并使用 plt.xlabel()
、plt.ylabel()
和 plt.title()
函数设置标签和标题。最后,使用 plt.show()
函数显示图形。
词频饼状图
# 获取其他单词的词频
other_freq = sum([w[1] for w in sorted_word_freq[10:]])
# 构造饼状图数据
labels = ['Top 10 Words', 'Other Words']
sizes = [sum(freqs), other_freq]
# 绘制饼状图
plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Words Frequency in Hamlet')
plt.show()
在代码中,我们首先计算其他单词的总词频,并将其存储