在Python中进行词频统计是一项基础的文本分析任务,通常涉及以下步骤:
- 文本预处理:包括去除标点符号、转换为小写、去除停用词等。
- 分词:将文本分割成单词或词汇。
- 统计词频:对分词后的结果进行计数。
以下是一个简单的Python脚本,使用collections
模块中的Counter
类来统计词频:
import re
from collections import Counter
# 示例文本
text = "This is a sample sentence. This sentence is really just a sample."
# 文本预处理:去除标点符号并转换为小写
cleaned_text = re.sub(r'[^\w\s]', '', text).lower()
# 分词
words = cleaned_text.split()
# 统计词频
word_counts = Counter(words)
# 输出词频统计结果
print(word_counts)
# 如果需要按照词频排序
most_common_words = word_counts.most_common()
print(most_common_words)
在这个脚本中,我们首先使用正则表达式re.sub(r'[^\w\s]', '', text)
来移除文本中的标点符号,然后使用lower()
方法将所有文本转换为小写,以保证词频统计时不区分大小写。
split()
方法用于将文本分割成单词列表,然后我们使用Counter
来统计每个单词出现的次数。
Counter.most_common()
方法可以返回一个包含单词及其对应频率的列表,按照频率从高到低排序。
如果你需要更复杂的文本处理,比如去除停用词(stop words),可以使用nltk
库中的stopwords
集合:
import nltk
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
nltk.download('punkt')
nltk.download('stopwords')
# 示例文本
text = "This is a sample sentence. This sentence is really just a sample."
# 文本预处理:去除标点符号、转换为小写,并分词
tokens = word_tokenize(text)
cleaned_tokens = [word.lower() for word in tokens if word.isalpha()]
# 去除停用词
stop_words = set(stopwords.words('english'))
filtered_tokens = [word for word in cleaned_tokens if word not in stop_words]
# 统计词频
word_counts = Counter(filtered_tokens)
# 输出词频统计结果
print(word_counts)
print(word_counts.most_common())
在这个例子中,我们首先使用nltk
库的word_tokenize
函数进行分词,然后去除停用词,并再次使用Counter
进行词频统计。使用nltk.download('punkt')
和nltk.download('stopwords')
确保我们已经下载了所需的分词和停用词数据集。