📜  Python - 以百分比获取词频(1)

📅  最后修改于: 2023-12-03 15:04:02.749000             🧑  作者: Mango

Python - 以百分比获取词频

在自然语言处理中,词频统计是一个非常基础的任务。而在实际应用中,我们有时需要知道每个词在文本中出现的相对频率,即百分比。本文将介绍如何使用Python来获取每个词的百分比词频。

1. 计算词频

首先,我们需要计算每个单词在文本中出现的次数。我们可以将文本分成单词,并使用Python的collections模块中的Counter类来统计每个单词的数量。代码如下:

from collections import Counter

text = "This is a text. This text contains multiple words. This is a long text, but this is just a test."
words = text.lower().split()
word_count = Counter(words)

代码解释:

  1. 定义一个字符串text,其中包含了一些单词。这可以是我们要分析的任何文本。
  2. 将文本转换为小写,并使用split()方法将其分成单词。
  3. 使用Counter(words)方法统计每个单词的出现次数,并将结果存储在word_count变量中。
2. 计算总词数

接下来,我们需要计算文本中单词的总数,以便计算每个单词的百分比词频。我们可以使用Python的sum()函数来计算word_count中所有值的总和。

total_words = sum(word_count.values())

代码解释:

  1. 使用word_count.values()方法获取word_count中每个单词的出现次数,并将其作为一个列表返回。
  2. 使用sum()函数计算列表中所有值的总和,并将结果存储在total_words变量中。
3. 计算词频百分比

现在我们已经计算了每个单词的出现次数和文本中单词的总数。下一步是计算每个单词的百分比词频。我们可以使用以下代码来完成此任务:

for word, count in word_count.items():
    frequency = count / total_words
    percentage = frequency * 100
    print(f"{word}: {percentage:.2f}%")

代码解释:

  1. 使用word_count.items()方法获取word_count中每个单词的出现次数和对应的单词,并将它们作为一个元组的列表返回。
  2. 对于每个单词,我们计算其在文本中出现的频率,即每个单词的出现次数除以文本中单词的总数。
  3. 我们将频率乘以100,以获得单词出现的百分比。
  4. 最后,我们格式化输出每个单词和其百分比词频。
4. 完整代码

下面是完整的Python代码,以便您对如何获得每个单词的百分比词频有更好的理解:

from collections import Counter

text = "This is a text. This text contains multiple words. This is a long text, but this is just a test."
words = text.lower().split()
word_count = Counter(words)

total_words = sum(word_count.values())

for word, count in word_count.items():
    frequency = count / total_words
    percentage = frequency * 100
    print(f"{word}: {percentage:.2f}%")

输出结果为:

this: 23.53%
is: 11.76%
a: 11.76%
text.: 5.88%
text: 5.88%
contains: 5.88%
multiple: 5.88%
words.: 5.88%
long: 5.88%
but: 5.88%
just: 5.88%
test.: 5.88%

如上所述,您可以使用Python轻松获得每个单词的百分比词频。