📅  最后修改于: 2023-12-03 15:04:02.749000             🧑  作者: Mango
在自然语言处理中,词频统计是一个非常基础的任务。而在实际应用中,我们有时需要知道每个词在文本中出现的相对频率,即百分比。本文将介绍如何使用Python来获取每个词的百分比词频。
首先,我们需要计算每个单词在文本中出现的次数。我们可以将文本分成单词,并使用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)
代码解释:
text
,其中包含了一些单词。这可以是我们要分析的任何文本。split()
方法将其分成单词。Counter(words)
方法统计每个单词的出现次数,并将结果存储在word_count
变量中。接下来,我们需要计算文本中单词的总数,以便计算每个单词的百分比词频。我们可以使用Python的sum()
函数来计算word_count
中所有值的总和。
total_words = sum(word_count.values())
代码解释:
word_count.values()
方法获取word_count
中每个单词的出现次数,并将其作为一个列表返回。sum()
函数计算列表中所有值的总和,并将结果存储在total_words
变量中。现在我们已经计算了每个单词的出现次数和文本中单词的总数。下一步是计算每个单词的百分比词频。我们可以使用以下代码来完成此任务:
for word, count in word_count.items():
frequency = count / total_words
percentage = frequency * 100
print(f"{word}: {percentage:.2f}%")
代码解释:
word_count.items()
方法获取word_count
中每个单词的出现次数和对应的单词,并将它们作为一个元组的列表返回。下面是完整的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轻松获得每个单词的百分比词频。