python小说词频统计
时间: 2025-06-06 08:17:31 浏览: 23
### 使用Python实现小说文本的词频统计
要完成小说文本的词频统计,可以通过以下方法实现。以下是详细的说明以及代码示例。
#### 方法概述
为了进行词频统计,通常需要以下几个步骤:
1. **读取文本数据**:从文件或其他来源获取小说的内容。
2. **分词处理**:对于中文文本,需借助 `jieba` 库进行分词操作;英文文本可以直接按空格分割。
3. **过滤无意义词语**:去除停用词(如“的”、“是”等),并可以选择只保留特定词性的词汇。
4. **统计词频**:利用字典结构记录每个词及其出现次数。
5. **排序与输出**:按照词频降序排列,并保存或打印结果。
---
#### 实现代码示例
下面是一个完整的 Python 脚本,用于对中文小说《西游记》进行词频统计:
```python
import jieba.posseg as pseg # 导入结巴分词库
# 定义函数以执行词频统计
def calculate_word_frequency(input_file, output_file):
# 初始化变量
word_dict = {}
# 打开输入文件并读取内容
with open(input_file, 'r', encoding='utf-8') as file_in:
content = file_in.read()
# 使用 Jieba 进行分词和标注词性
words_with_flags = pseg.cut(content)
# 遍历分词结果,仅统计名词 (标记为'n')
for word, flag in words_with_flags:
if flag == 'n' and len(word) >= 2: # 只考虑长度大于等于2的名词
if word not in word_dict:
word_dict[word] = 1
else:
word_dict[word] += 1
# 将词频列表按值降序排序
sorted_words = sorted(word_dict.items(), key=lambda x: x[1], reverse=True)
# 写入输出文件
with open(output_file, 'w', encoding='utf-8') as file_out:
for term, freq in sorted_words:
file_out.write(f"{term}:{freq}\n")
# 设置输入和输出文件路径
input_filename = "西游记.txt"
output_filename = "西游记高频词统计.txt"
# 调用函数
calculate_word_frequency(input_filename, output_filename)
```
此脚本实现了基于 `jieba` 的中文分词功能,并针对名词进行了筛选[^2]。
---
#### 英文文本的词频统计
如果是英文小说,则无需使用复杂的分词工具,可直接通过字符串操作完成。以下是一份适用于英文文本的词频统计代码:
```python
from collections import Counter
import re
def english_word_frequency(file_path, result_path):
# 正则表达式匹配单词
pattern = r'\b[A-Za-z]+\b'
# 读取文件内容
with open(file_path, 'r', encoding='utf-8') as f:
text = f.read().lower() # 转换为小写以便统一比较
# 提取所有单词
words = re.findall(pattern, text)
# 计算词频
frequency = Counter(words).most_common()
# 输出到文件
with open(result_path, 'w', encoding='utf-8') as out_f:
for word, count in frequency:
out_f.write(f'{word}: {count}\n')
# 输入输出文件名
english_input = "example_english_novel.txt"
english_output = "english_word_frequency_result.txt"
# 调用函数
english_word_frequency(english_input, english_output)
```
该脚本采用正则表达式提取单词,并使用 `collections.Counter` 来简化词频统计过程[^1]。
---
#### 注意事项
1. 如果涉及大量数据,建议优化内存管理方式,例如逐行读取大文件而不是一次性加载全部内容。
2. 停用词表可以根据具体需求自定义,从而提高统计结果的相关性和准确性。
3. 对于复杂场景下的自然语言处理任务,还可以引入更高级的技术,比如 TF-IDF 或者主题建模算法。
---
阅读全文
相关推荐














