在《西游记》全文中,统计不同频段的词汇分布情况:查询词汇频率在[0-100]、[100-1000]、[1000-5000]、[5000以上]等的分布情况。D:\xiyouji.txt 我需要完整的jupter代码。用codecs、nltk、Counter
时间: 2024-10-16 15:19:56 浏览: 17
为了完成这个任务,我们可以使用Python的`codecs`库来读取文本文件,`nltk`库进行自然语言处理,包括分词和停用词过滤,然后使用`collections.Counter`来计算单词频率。以下是一个简单的Jupyter Notebook代码示例:
```python
import os
import codecs
import string
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize
from collections import Counter
# 定义词汇频段范围
freq_bins = [[0, 100], [100, 1000], [1000, 5000], [5000, float('inf')]]
# 加载《西游记》文本
filename = "D:\\xiyouji.txt"
with codecs.open(filename, 'r', encoding='utf-8') as file:
text = file.read()
# 删除标点符号并转换为小写
text = text.translate(str.maketrans('', '', string.punctuation)).lower()
# 分词并移除停用词
stop_words = set(stopwords.words('chinese'))
tokens = word_tokenize(text)
filtered_tokens = [word for word in tokens if word not in stop_words]
# 计算每个频段的单词计数
bin_word_counts = []
for bin_range in freq_bins:
count_in_bin = Counter(filtered_tokens)[list(range(bin_range[0], bin_range[1]))]
bin_word_counts.append((bin_range, dict(count_in_bin)))
# 输出结果
for i, (bin, word_count) in enumerate(bin_word_counts):
print(f"频段{i+1}: {bin} - 词频统计:")
for word, freq in word_count.items():
print(f"{word}: {freq}")
# 相关问题--
阅读全文