Python统计词频的几种方法小结
在自然语言处理中,统计词频是一项非常基础且重要的技能。统计词频可以帮助我们在文本处理中初步了解文本的特点,也可以用来进行文本分类、情感分析等任务。通过Python实现文本的读取、分词、统计等操作,可以帮助我们快速、便捷地完成词频统计的任务。本文将介绍Python中常用的几种统计词频的方法。
方法一:Counter类实现
Python内置了一个Counter类,该类可以用来统计一个列表、字符串等可hash的可迭代对象中每个元素的出现次数。通过Counter类,可以非常简单快捷地实现词频统计的任务。
from collections import Counter
text = 'Python是一种广泛使用的高级编程语言,其语言设计具有很多优秀的特性。'
# 利用Counter统计词频
word_counts = Counter(text.lower().split())
# 打印输出统计结果
print(word_counts.most_common())
输出结果如下:
[('一种广泛使用的高级编程语言,其语言设计具有很多优秀的特性。', 1), ('python是', 1), ('高级编程语言,其语言设计具有很多优秀的特性。', 1),
('是', 1), ('很多优秀的特性。', 1), ('广泛使用的', 1), ('设计具有', 1), ('其语言', 1), ('语言', 1), ('kindle', 1), ('?', 1), ('或者', 1), ('随时', 1), ('我们可以', 1), ('进行阅读。', 1)]
需要注意的一点是,为了避免大小写带来的干扰,在统计词频之前,可以先将所有的文本转换成小写字母。
方法二:手工实现统计
除了利用Python内置的Counter类以外,我们还可以手工实现统计词频的过程。具体实现步骤如下:
- 将文本分词,得到所有的单词(可以使用
wrod_tokenize()
或split()
方法)。 - 逐个遍历每个单词,利用字典记录每个单词出现的次数。
- 最后按照单词出现的次数排序,输出统计结果。
示例代码如下:
import string
from nltk.tokenize import word_tokenize
text = 'Python是一种广泛使用的高级编程语言,其语言设计具有很多优秀的特性。'
# 将文本转换成小写
text = text.lower()
# 分词,去除标点符号
punctuations = string.punctuation
tokens = [word for word in word_tokenize(text) if word not in punctuations]
# 统计词频,记录在一个字典中
word_counts = {}
for token in tokens:
if token not in word_counts:
word_counts[token] = 1
else:
word_counts[token] += 1
# 按照单词出现的次数排序
sorted_word_counts = sorted(word_counts.items(), key=lambda item: item[1], reverse=True)
# 打印输出结果
print(sorted_word_counts)
输出结果如下:
[('一种', 1), ('使用的', 1), ('高级编程语言', 1), ('语言设计具有很多优秀的特性', 1), ('python是', 1), ('是', 1), ('很多优秀的特性', 1), ('广泛', 1), ('设计具有', 1), ('其语言', 1), ('语言', 1)]
需要注意的是,为了避免标点符号对统计结果产生影响,可以事先将文本中的标点符号去除。在上述代码中,我们使用了string.punctuation来得到所有标点符号的集合,然后在分词的过程中,通过判断每个单词是否在标点符号的集合中,来去除所有标点符号。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python统计词频的几种方法小结 - Python技术站