哈姆雷特英文词频统计 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()

在代码中,我们首先获取排序后的词频统计结果中的前十个单词及其词频,并将它们分别存储在 wordsfreqs 列表中。然后,我们使用 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()

在代码中,我们首先计算其他单词的总词频,并将其存储