一、前言:自然语言处理与经典文本的碰撞
《红楼梦》作为中国古典文学的巅峰之作,其文本蕴含着丰富的人物关系、情节脉络和文化内涵。随着自然语言处理(NLP)技术的发展,用编程手段挖掘经典文本的核心信息已成为文学研究与技术实践结合的热门方向。本文将以《红楼梦》为研究对象,基于 Python 实现从文本分卷、分词处理到 TF-IDF 关键词提取的全流程实战,带大家掌握 NLP 基础应用的核心逻辑,同时感受经典文本与现代技术结合的魅力。
本文所有代码基于 Python 3.9 实现,仅依赖 Python 标准库及 pandas、jieba、scikit-learn 三个常用库,代码具备高可复用性,可直接适配其他中文文本的处理分析。
二、实战准备:环境搭建与文件准备
2.1 数据文件准备
本次实战需准备三类文件:
- 原始文本:
红楼梦.txt(UTF-8 编码,包含完整文本内容); - 自定义词库:
红楼梦词库.txt(补充《红楼梦》专属词汇,如'林黛玉''大观园'等,提升分词准确性); - 停用词表:StopwordsCN.txt(包含中文通用停用词,如'的''了''之'等,过滤无意义词汇)。
将所有文件放在同一项目目录下,确保代码可直接读取。
三、核心步骤 1:文本分卷处理 —— 拆分《红楼梦》章节
《红楼梦》原始文本是整体格式,首先需按'卷第'的标题特征将文本拆分为独立的卷文件,方便后续分卷分析。
3.1 核心逻辑解析
文本分卷的核心是遍历原始文本,识别'卷第'关键词作为分卷标识,遇到新卷名时关闭上一卷文件、创建新卷文件,并将文本内容写入对应文件。同时需处理文件名非法字符、目录不存在等异常情况,保证代码健壮性。
3.2 完整代码与注释
# 导入核心库
import os
import re
import pandas as pd
# 创建分卷目录(避免目录不存在报错)
if not os.path.exists(r'分卷'):
os.makedirs(r'分卷')
# 清理文件名函数:解决特殊字符导致的文件创建失败问题
def clean_filename(filename):
filename = filename.replace('\u3000', '_').replace(' ', '_') # 替换全角/半角空格
filename = re.sub(r'[\\/:*?"<>|]', '', filename) # 移除操作系统非法字符
filename = re.sub('_+', '_', filename).strip('_') # 清理多余下划线
return filename
file = (, encoding=)
flag =
juan_file = (, , encoding=)
line file:
line:
juan_name = line.strip() +
juan_name = clean_filename(juan_name)
path = os.path.join(, juan_name)
()
flag == :
juan_file = (path, , encoding=)
flag =
:
juan_file.close()
juan_file = (path, , encoding=)
juan_file.write(line)
juan_file.close()
file.close()


