当前位置: 首页 > news >正文

机器学习实战篇--TF-IDF实战--名著红楼梦的文本数据处理

目录

《红楼梦》文本分析实战:从分卷处理到关键词提取

一、项目背景引入

1. 项目背景

2. 数据集说明

3. 整体需求分析

二、数据分析:《红楼梦》文本分卷处理

1. 需求分析

2. 完整代码实现(带注释)

3. 代码分步解析

3.1 初始化参数

3.2 逐行处理文本(核心逻辑)

3.3 广告与空白行过滤

3.4 分卷文件创建与管理

3.5 内容写入与资源清理

4. 代码总结

三、关键词提取:基于分词的文本预处理

1. 需求分析

2. 完整代码实现(带注释)

3. 代码分步解析

3.1 收集分卷文件路径与内容

3.2 用DataFrame结构化管理数据

3.3 加载自定义资源提升分词效果

3.4 分词处理与停用词过滤

4. 代码总结

四、TF-IDF模拟:提取各卷核心关键词

1. 需求分析

2. 完整代码实现(带注释)

3. 代码分步解析

3.1 读取分词后的文本数据

3.2 计算TF-IDF矩阵

3.3 构建TF-IDF数据框

3.4 定义与应用关键词提取函数

3.5 打印结果

4. 代码总结

五、泛用性:代码的扩展与适配场景

1. 核心逻辑与可修改点

2. 典型应用场景

2.1 其他古典文学分析(如《三国演义》)

2.2 学术论文结构化解析

2.3 企业客服记录分析

3. 总结


《红楼梦》文本分析实战:从分卷处理到关键词提取

一、项目背景引入

1. 项目背景

在数字人文与文本挖掘技术快速发展的背景下,古典文学作品的自动化分析成为研究新趋势。《红楼梦》作为中国古典小说的巅峰之作,以其复杂的人物关系、细腻的情节描写和深厚的文化内涵,一直是文学研究的核心对象。但传统的人工分析方式存在效率低、主观性强、难以量化等问题,亟需通过技术手段实现结构化、自动化的文本解析。

本项目旨在通过编程工具对《红楼梦》全文进行系统化处理,从原始文本中提取有价值的信息(如分卷结构、核心关键词等),为文学研究者提供数据支持,帮助快速定位关键内容、梳理情节脉络、分析主题变化,实现"技术辅助文学研究"的目标。

2. 数据集说明

红楼梦.txt:

本项目使用的核心数据为《红楼梦》全文文本文件(红楼梦.txt),包含小说完整内容(91万个字符)。由于文本来源为网络公开资源,存在以下特点:

  • 包含天然分卷标记:文本中以"卷 第 X"(如"上卷 第一回""上卷 第二回""下卷 第二十回")作为分卷分隔符,可直接作为结构化处理的依据;

  • 存在冗余信息:夹杂"手机电子书·大学生小说网"等转载平台的广告内容,需预处理去除;

  • 格式特征:保留了原文的换行、空格等排版格式,处理时需兼顾内容提取与格式保留。

3. 整体需求分析

为实现"结构化解析《红楼梦》文本并提取核心信息"的目标,项目需完成以下核心任务:

  1. 文本清洗与分卷:过滤冗余广告内容,根据"卷 第 X"标记自动拆分全文为独立分卷文件,保留原文格式;

  2. 分词与预处理:对分卷文本进行精准分词,过滤无意义词汇(如"的""了"),加载专属词库识别小说中的人名、地名等专有名词;

  3. 关键词提取:通过TF-IDF算法量化词语在各卷中的重要性,提取每卷的核心关键词,反映各卷主题特征;

  4. 工具通用性:确保代码可扩展,通过简单修改适配其他文本(如其他古典小说、学术论文、企业文档等)的分析场景。

二、数据分析:《红楼梦》文本分卷处理

1. 需求分析

分卷处理是文本结构化的基础步骤,核心需求包括:

  • 广告过滤:精准识别并去除包含"手机电子书·大学生小说网"的广告行,同时处理广告后的空白行(避免冗余空行进入分卷文件);

  • 自动分卷:根据文本中"卷 第 X"的标记,自动创建独立分卷文件(如"01_卷 第一.txt"),文件名需包含分卷编号和标记,便于识别;

  • 格式保留:写入分卷文件时保留原文的换行、空格等格式,维持文本原貌;

  • 资源安全:确保文件操作过程中,前一卷文件在新卷创建前正确关闭,避免文件句柄泄露。

2. 完整代码实现(带注释)

import os  # 用于文件路径处理和操作系统交互# 1. 初始化参数
file = open('红楼梦.txt', encoding='utf-8')  # 打开源文件,指定utf-8编码避免乱码
flag = 0  # 标记是否已创建过分卷文件(0=未创建,1=已创建)
juan_file = None  # 存储当前打开的分卷文件对象,初始化为None
i = 1  # 分卷编号,从1开始计数
skip_blank_lines = False  # 标记是否跳过空白行(处理广告后的空行)# 2. 逐行处理文本
for line in file:stripped_line = line.strip()  # 去除行首尾空白,用于判断标记和广告# 2.1 处理广告后的空白行if skip_blank_lines:if stripped_line == '':  # 若为空白行,直接跳过continueelse:  # 若遇到非空白行,关闭跳过模式skip_blank_lines = False# 2.2 过滤广告行if '手机电子书·大学生小说网' in stripped_line:skip_blank_lines = True  # 开启跳过空白行模式,处理广告后的空白行continue  # 跳过当前广告行# 2.3 识别分卷标记并创建新文件if '卷 第' in stripped_line:# 生成分卷文件名(格式:两位编号_卷标记.txt)juan_name = f"{i:02d}_{stripped_line}.txt"i += 1  # 编号自增# 构建分卷文件路径(保存在"分卷"文件夹下)path = os.path.join('分卷', juan_name)print(f"创建分卷文件:{path}")  # 打印路径,便于查看进度# 关闭上一个分卷文件(若已创建)if flag == 1 and juan_file is not None:juan_file.close()# 创建并打开当前分卷文件(写入模式)juan_file = open(path, 'w', encoding='utf-8')flag = 1  # 更新标记为"已创建"continue  # 跳过分卷标记行(不写入文件)# 2.4 写入内容到当前分卷文件if juan_file is not None:juan_file.write(line)  # 写入原始行(保留格式)# 3. 清理资源:关闭所有文件
if juan_file is not None:juan_file.close()  # 关闭最后一个分卷文件
file.close()  # 关闭源文件

3. 代码分步解析

3.1 初始化参数
import os  # 用于文件路径处理和操作系统交互
file = open('红楼梦.txt', encoding='utf-8')  # 打开源文件,指定utf-8编码避免乱码
flag = 0  # 标记是否已创建过分卷文件(0=未创建,1=已创建)
juan_file = None  # 存储当前打开的分卷文件对象,初始化为None
i = 1  # 分卷编号,从1开始计数
skip_blank_lines = False  # 标记是否跳过空白行(处理广告后的空行)
  • os模块:处理跨平台路径拼接,确保在Windows/macOS/Linux下均能正常生成文件路径;

  • flagjuan_file:用于跟踪当前分卷文件状态,确保新卷创建前关闭旧卷;

  • skip_blank_lines:专门处理广告后的空白行,避免冗余空行写入分卷文件。

3.2 逐行处理文本(核心逻辑)
for line in file:stripped_line = line.strip()  # 去除行首尾空白,用于判断标记和广告

遍历源文件每一行,通过strip()处理后的数据用于判断是否为广告行或分卷标记行,原始line用于保留格式写入分卷文件。

3.3 广告与空白行过滤
# 处理广告后的空白行
if skip_blank_lines:if stripped_line == '':  # 若为空白行,直接跳过continueelse:  # 若遇到非空白行,关闭跳过模式skip_blank_lines = False# 过滤广告行
if '手机电子书·大学生小说网' in stripped_line:skip_blank_lines = True  # 开启跳过空白行模式,处理广告后的空白行continue  # 跳过当前广告行
  • 当检测到广告行时,开启skip_blank_lines模式,后续空白行将被连续跳过;

  • 直到遇到非空白行时,关闭跳过模式,恢复正常写入,确保广告及冗余空行被彻底过滤。

3.4 分卷文件创建与管理
if '卷 第' in stripped_line:# 生成分卷文件名(格式:两位编号_卷标记.txt)juan_name = f"{i:02d}_{stripped_line}.txt"i += 1  # 编号自增# 构建分卷文件路径(保存在"分卷"文件夹下)path = os.path.join('分卷', juan_name)print(f"创建分卷文件:{path}")  # 打印路径,便于查看进度# 关闭上一个分卷文件(若已创建)if flag == 1 and juan_file is not None:juan_file.close()# 创建并打开当前分卷文件(写入模式)juan_file = open(path, 'w', encoding='utf-8')flag = 1  # 更新标记为"已创建"continue  # 跳过分卷标记行(不写入文件)
  • 文件名采用"两位编号+卷标记"格式(如"01_卷 第一.txt"),确保分卷按顺序排列;

  • 通过os.path.join创建路径,自动适配不同系统的路径分隔符(如Windows的\`和macOS的/`);

  • 每次创建新卷前关闭旧卷,避免文件资源泄露。

3.5 内容写入与资源清理
# 写入内容到当前分卷文件
if juan_file is not None:juan_file.write(line)  # 写入原始行(保留格式)# 清理资源:关闭所有文件
if juan_file is not None:juan_file.close()  # 关闭最后一个分卷文件
file.close()  # 关闭源文件
  • 用原始line写入内容,保留原文的换行、空格等格式;

  • 处理结束后强制关闭所有文件,确保资源释放。

4. 代码总结

本部分代码通过"广告过滤→分卷识别→文件管理→内容写入"的流程,实现了《红楼梦》文本的自动化分卷处理,既保证了内容的准确性(过滤冗余),又保留了文本原貌(格式保留),为后续的关键词提取奠定了结构化数据基础。

详细流程总结概括:

                 1.遇到包含 "手机电子书・大学生小说网" 的广告行,跳过该行并忽略后续的空白行

                 2. 遇到包含 "卷 第" 的分卷标记行,创建新的分卷文件(关闭上一个分卷文件)

                 3.其他内容行则写入当前打开的分卷文件

  1. 打开《红楼梦》源文件
  2. 逐行读取并处理内容:
  3. 处理完成后,关闭所有打开的文件

代码的特点和作用:

  • 自动分卷:根据文本中的 "卷 第 X" 标记自动创建多个分卷文件
  • 广告过滤:去除包含特定广告内容的行及其后的空白行
  • 格式保留:写入文件时使用原始行内容,保留了原文的格式和换行
  • 路径处理:使用 os.path.join 处理路径,确保在不同操作系统上都能正常工作
  • 安全处理:确保所有打开的文件最终都会被关闭,避免资源泄露

三、关键词提取:基于分词的文本预处理

1. 需求分析

分词是文本从"原始字符串"到"结构化词语"的关键转换步骤,核心需求包括:

  • 数据收集:批量读取"分卷"文件夹下的所有分卷文件,获取文件路径与内容,便于关联分析;

  • 精准分词:针对《红楼梦》中的专有名词(如人名"贾宝玉"、地名"大观园"),通过加载专属词库提升分词准确性;

  • 噪音过滤:去除无实际意义的停用词(如"的""了""在")和空字符串,减少分析干扰;

  • 结果保存:将每卷的分词结果按顺序保存,保持分卷与分词结果的对应关系,为后续TF-IDF分析提供输入。

2. 完整代码实现(带注释)

import pandas as pd  # 用于数据结构化管理
import os  # 用于遍历文件夹和文件路径处理
import jieba  # 中文分词工具# 1. 收集分卷文件路径与内容
filePaths = []  # 存储分卷文件路径
fileContents = []  # 存储分卷文件内容# 遍历"分卷"文件夹下的所有文件
for root, dirs, files in os.walk(r"分卷"):for name in files:# 拼接完整文件路径filePath = os.path.join(root, name)filePaths.append(filePath)# 读取文件内容with open(filePath, 'r', encoding='utf-8') as f:  # 用with语句自动管理文件关闭fileContent = f.read()fileContents.append(fileContent)# 2. 用DataFrame结构化管理数据(路径+内容)
corpos = pd.DataFrame({'filePath': filePaths,'fileContent': fileContents
})# 3. 加载自定义资源提升分词效果
jieba.load_userdict("红楼梦词库.txt")  # 加载专属词库(含人名、地名等)# 读取停用词表(过滤无意义词汇)
stopwords = pd.read_csv("stopwordsCN.txt",encoding='utf8',engine='python',index_col=False
)
stopwords_list = stopwords['stopword'].tolist()  # 转换为列表便于查询# 4. 分词处理与停用词过滤
with open('分词后汇总.txt', 'w', encoding='utf-8') as file_to_jieba:# 遍历每一卷内容for index, row in corpos.iterrows():juan_ci = ''  # 存储当前卷的分词结果fileContent = row['fileContent']  # 获取当前卷文本# 分词(精确模式)segs = jieba.cut(fileContent, cut_all=False)# 过滤停用词和空字符串for seg in segs:if seg not in stopwords_list and len(seg.strip()) > 0:juan_ci += seg + ' '  # 用空格分隔词语# 写入当前卷的分词结果(每行对应一卷)file_to_jieba.write(juan_ci + '\n')

3. 代码分步解析

3.1 收集分卷文件路径与内容
filePaths = []  # 存储分卷文件路径
fileContents = []  # 存储分卷文件内容# 遍历"分卷"文件夹下的所有文件
for root, dirs, files in os.walk(r"分卷"):for name in files:# 拼接完整文件路径filePath = os.path.join(root, name)filePaths.append(filePath)# 读取文件内容with open(filePath, 'r', encoding='utf-8') as f:  # 用with语句自动管理文件关闭fileContent = f.read()fileContents.append(fileContent)
  • os.walk:递归遍历"分卷"文件夹,获取所有分卷文件的路径;

  • with语句:自动处理文件关闭,避免手动关闭遗漏导致的资源泄露;

  • 最终filePathsfileContents一一对应,确保后续可通过路径追溯原始文件。

3.2 用DataFrame结构化管理数据
corpos = pd.DataFrame({'filePath': filePaths,'fileContent': fileContents
})

通过pandas.DataFrame将分散的"文件路径"和"内容"关联为表格数据,便于按行(分卷)批量处理,支持索引、筛选等操作(如后续需单独处理某几卷时更便捷)。

3.3 加载自定义资源提升分词效果
jieba.load_userdict("红楼梦词库.txt")  # 加载专属词库(含人名、地名等)# 读取停用词表(过滤无意义词汇)
stopwords = pd.read_csv("stopwordsCN.txt",encoding='utf8',engine='python',index_col=False
)
stopwords_list = stopwords['stopword'].tolist()  # 转换为列表便于查询
  • 专属词库:红楼梦词库.txt包含小说中高频出现的专有名词(如"林黛玉""怡红院"),避免被jieba误拆(如"林黛玉"不拆分为"林""黛玉");

  • 停用词表:stopwordsCN.txt包含中文中无实际意义的虚词(如"的""了"),转换为列表后可通过in快速判断是否为停用词,提升过滤效率。

3.4 分词处理与停用词过滤
with open('分词后汇总.txt', 'w', encoding='utf-8') as file_to_jieba:# 遍历每一卷内容for index, row in corpos.iterrows():juan_ci = ''  # 存储当前卷的分词结果fileContent = row['fileContent']  # 获取当前卷文本# 分词(精确模式)segs = jieba.cut(fileContent, cut_all=False)# 过滤停用词和空字符串for seg in segs:if seg not in stopwords_list and len(seg.strip()) > 0:juan_ci += seg + ' '  # 用空格分隔词语# 写入当前卷的分词结果(每行对应一卷)file_to_jieba.write(juan_ci + '\n')
  • jieba.cut:采用精确模式(cut_all=False)对文本分词,平衡分词精度与效率;

  • 过滤逻辑:仅保留"非停用词"且"非空字符串"的词语,确保结果无噪音;

  • 结果保存:按分卷顺序写入分词后汇总.txt,每行对应一卷的分词结果,为后续TF-IDF分析提供标准化输入。

4. 代码总结

本部分代码通过"数据收集→结构化管理→分词优化→过滤保存"的流程,将分卷文本转换为干净的词语集合,既解决了中文分词的专有名词识别问题,又去除了无意义词汇,为后续的关键词提取(如TF-IDF)提供了高质量的输入数据。

代码详细流程总结:

  1. 收集数据:遍历 "分卷" 文件夹下的所有文件,获取它们的路径和内容
  2. 组织数据:用 DataFrame 将文件路径和内容关联起来,便于管理
  3. 准备工具:加载专业词库提升分词准确性,加载停用词表用于过滤无意义词汇
  4. 处理数据:对每一卷内容进行分词,过滤掉停用词和空字符串
  5. 保存结果:将处理后的分词结果写入 "分词后汇总.txt" 文件

代码的关键作用:

  • 将原始文本转换为结构化的词语集合,为后续的文本分析(如词频统计、情感分析等)做准备
  • 通过专业词库提高《红楼梦》这类特定文本的分词准确性
  • 过滤停用词减少噪音,让分析更聚焦于有实际意义的词汇
  • 保持卷与卷之间的结构,便于后续按卷进行对比分析

四、TF-IDF模拟:提取各卷核心关键词

1. 需求分析

关键词提取是文本主题分析的核心步骤,针对《红楼梦》分卷文本,需求包括:

  • 量化词语重要性:通过TF-IDF算法综合考虑"词在当前卷的出现频率(TF)"和"词在所有卷的出现频率(IDF)",评估词语对单卷的代表性;

  • 提取核心关键词:为每卷筛选TF-IDF值最高的前N个词语(如前10),反映该卷的主题特色(如某卷高频出现"葬花""黛玉",则可能围绕黛玉葬花情节);

  • 结果可视化:以清晰的格式输出各卷关键词及其TF-IDF值,便于直观对比不同卷的主题差异。

2. 完整代码实现(带注释)

import pandas as pd  # 用于数据结构化展示
from sklearn.feature_extraction.text import TfidfVectorizer  # TF-IDF工具# 1. 读取分词后的文本数据(输入:每行为一卷的分词结果)
with open('分词后汇总.txt', 'r', encoding='utf-8') as infile:corpus = infile.readlines()  # corpus为列表,每个元素对应一卷的分词文本# 2. 初始化TF-IDF向量器并计算矩阵
vectorizer = TfidfVectorizer()  # 初始化向量器(默认参数:过滤停用词、按词频加权)
tfidf_matrix = vectorizer.fit_transform(corpus)  # 拟合语料并转换为TF-IDF矩阵# 获取词汇表(所有不重复词语)
wordlist = vectorizer.get_feature_names_out()  # 较新版本sklearn推荐使用该方法# 3. 构建TF-IDF数据框(词语为行,分卷为列)
tfidf_df = pd.DataFrame(tfidf_matrix.T.todense(),  # 矩阵转置(行=词语,列=分卷)并转为稠密矩阵index=wordlist  # 行索引设为词语
)# 4. 定义提取单卷Top N关键词的函数
def get_top_keywords(col, top_n=10):"""提取某一卷(列)中TF-IDF值最高的前N个词语"""non_zero_words = col[col > 0]  # 筛选在该卷中出现过的词语(TF-IDF>0)return non_zero_words.nlargest(top_n).items()  # 按值降序取前N个# 5. 提取所有卷的关键词并打印结果
top_keywords_result = tfidf_df.apply(lambda col: get_top_keywords(col, top_n=10),  # 应用函数,每卷取前10关键词axis=0  # 按列(分卷)应用
)# 遍历结果并打印(分卷编号从1开始)
for doc_idx, top_items in enumerate(top_keywords_result, start=1):print(f"第{doc_idx}卷的核心关键词:{list(top_items)[:10]}")

3. 代码分步解析

3.1 读取分词后的文本数据
with open('分词后汇总.txt', 'r', encoding='utf-8') as infile:corpus = infile.readlines()  # corpus为列表,每个元素对应一卷的分词文本
  • corpus(语料库)是列表类型,每个元素为一卷的分词结果(词语用空格分隔),与分卷顺序严格对应;

  • with语句读取文件,确保资源安全释放。

3.2 计算TF-IDF矩阵
vectorizer = TfidfVectorizer()  # 初始化向量器(默认参数:过滤停用词、按词频加权)
tfidf_matrix = vectorizer.fit_transform(corpus)  # 拟合语料并转换为TF-IDF矩阵# 获取词汇表(所有不重复词语)
wordlist = vectorizer.get_feature_names_out()  # 较新版本sklearn推荐使用该方法
  • TfidfVectorizer:自动完成"词汇表构建→词频统计→IDF计算→TF-IDF值转换"的全流程;

  • tfidf_matrix:形状为(分卷数,词汇数)的稀疏矩阵,每个元素[i,j]表示"第i卷中第j个词的TF-IDF值";

  • wordlist:包含所有不重复词语的列表,顺序与矩阵列索引对应,用于后续结果标注。

3.3 构建TF-IDF数据框
tfidf_df = pd.DataFrame(tfidf_matrix.T.todense(),  # 矩阵转置(行=词语,列=分卷)并转为稠密矩阵index=wordlist  # 行索引设为词语
)
  • 矩阵转置后,数据框形状为(词汇数,分卷数),行索引为词语,列索引为分卷编号,便于按"词语→分卷"查看TF-IDF值;

  • todense():将稀疏矩阵转为稠密矩阵(适合小数据量),方便后续按列筛选。

3.4 定义与应用关键词提取函数
def get_top_keywords(col, top_n=10):"""提取某一卷(列)中TF-IDF值最高的前N个词语"""non_zero_words = col[col > 0]  # 筛选在该卷中出现过的词语(TF-IDF>0)return non_zero_words.nlargest(top_n).items()  # 按值降序取前N个# 提取所有卷的关键词
top_keywords_result = tfidf_df.apply(lambda col: get_top_keywords(col, top_n=10),  # 应用函数,每卷取前10关键词axis=0  # 按列(分卷)应用
)
  • get_top_keywords函数:仅关注在当前卷中出现过的词语(col>0),按TF-IDF值降序取前10,确保结果有实际意义;

  • apply方法:批量应用函数到每一列(分卷),高效获取所有卷的关键词。

3.5 打印结果
for doc_idx, top_items in enumerate(top_keywords_result, start=1):print(f"第{doc_idx}卷的核心关键词:{list(top_items)[:10]}")
  • 以"第X卷的核心关键词:[(词1, 值1), (词2, 值2), ...]"的格式输出,直观展示各卷主题;

  • enumerate(..., start=1)确保分卷编号从1开始,与实际分卷顺序一致。

4. 代码总结

本部分代码通过TF-IDF算法量化了词语对各卷的重要性,成功提取出每卷的核心关键词。这些关键词不仅能反映单卷的主题(如涉及"葬花"的卷以"黛玉""葬花"为核心),还能通过卷间对比分析情节发展(如某人物关键词从高频到低频的变化可能暗示角色淡出),为《红楼梦》的主题研究提供了量化依据。

代码详细流程总结:

  1. 数据输入:读取分词后的文本,构建语料库
  2. 特征提取:使用 TF-IDF 算法将文本转换为数值特征矩阵
  3. 数据整理:将 TF-IDF 矩阵转换为 DataFrame,方便按词语和文档查看
  4. 关键词提取:定义函数并应用到每个文档,提取 TF-IDF 值最高的前 10 个词
  5. 结果输出:按卷打印核心关键词及其 TF-IDF 值

关键概念解释:

  • TF-IDF 值:综合考虑词语在当前文档中的出现频率(TF)和在所有文档中的出现频率(IDF),值越高表示该词在当前文档中越重要、越有代表性
  • 核心关键词:TF-IDF 值高的词语,通常是该卷中出现较频繁且在其他卷中出现较少的特色词汇,能反映该卷的主要内容

五、泛用性:代码的扩展与适配场景

1. 核心逻辑与可修改点

项目整体流程可概括为:

​原始文本收集→分卷/分块处理→分词与过滤→TF-IDF关键词提取→结果输出​

核心可修改点(适配不同场景):

  • 文本来源:修改输入路径(如从"红楼梦.txt"改为"会议纪要文件夹");

  • 分块规则:调整分块标记(如从"卷 第 X"改为"章节X""日期X");

  • 分词资源:替换专属词库(如"红楼梦词库.txt"→"医学词库.txt")和停用词表;

  • 算法参数:调整TF-IDF的min_df(最小文档频率)、top_n(关键词数量)等。

2. 典型应用场景

2.1 其他古典文学分析(如《三国演义》)
  • 修改点:分块标记改为"第X回";词库替换为"三国人名地名库"(如"诸葛亮""赤壁");

  • 作用:提取每回核心战役、人物关键词,分析军事策略或人物影响力变化。

2.2 学术论文结构化解析
  • 修改点:分块规则按"摘要""引言""实验结果"等标题拆分;停用词添加学术虚词(如"研究表明");

  • 作用:快速提取各部分核心术语(如"实验方法:随机森林""结论:准确率92%),生成论文摘要。

2.3 企业客服记录分析
  • 修改点:文本来源为"客服对话.txt";分块按"对话ID"拆分;词库添加产品术语(如"APP闪退""退款");

  • 作用:提取高频问题关键词(如"登录失败"出现30次),定位客户痛点。

3. 总结

本项目代码并非仅适用于《红楼梦》,而是一套"文本结构化处理+关键词提取"的通用工具。通过简单修改分块规则、分词资源和输入来源,可快速适配文学研究、学术分析、企业数据分析等多场景,核心价值是降低长文本处理成本,实现关键信息的自动化提取与量化分析。

http://www.xdnf.cn/news/1298791.html

相关文章:

  • 亚马逊品牌权力重构:第三方卖家崛起下的竞争生态与系统性应对框架
  • 微信公众号推送文字消息与模板消息
  • 加密货币交易所开发:如何打造安全、高并发的数字资产交易平台?
  • 开源安全云盘存储:Hoodik 实现端到端数据加密,Docker快速搭建
  • 深度学习-卷积神经网络CNN-膨胀卷积、可分离卷积(空间可分离、深度可分离)、分组卷积
  • 【保姆级教程】CentOS 7 部署 FastDFS 全流程(避坑指南)
  • 具身智能Scaling Law缺失:机器人界的“摩尔定律“何时诞生?
  • CVPR 2025 | 机器人操控 | RoboGround:用“掩码”中介表示,让机器人跨场景泛化更聪明
  • 3D商品展示:技术狂欢下的普及困局
  • DataHub OPC Gateway:实现OPC UA与OPC DA无缝集成的高性能网关
  • 【代码随想录day 20】 力扣 108.将有序数组转换为二叉搜索树
  • 京东【自主售后】物流信息获取_影刀RPA源码解读
  • Docker部署美化SunPanel导航页
  • python+vue扫盲
  • anaconda创建pytorch1.10.0和pytorch2.0.0的GPU环境
  • java:创建指定容器类型(如ImmutableSet)的Collector对象
  • Redis (REmote DIctionary Server) 高性能数据库
  • 设计模式笔记_行为型_状态模式
  • OpenAI 的浏览器将使用 ChatGPT Agent 来控制浏览器
  • 记录一些奇奇怪怪的面试题
  • 【慕伏白】CTFHub 技能树学习笔记 -- 基础知识 签到
  • AI 编程实践:用 Trae 快速开发 HTML 贪吃蛇游戏
  • 【软考中级网络工程师】知识点之常用网络诊断和配置命令
  • 机器学习核心概念与实践笔记
  • 解刨HashMap的put流程 <二> JDK 1.8
  • Redis 03 redis 缓存异常
  • Oracle commit之后做了什么
  • OS设备UDID查看方法
  • word——删除最后一页空白页
  • centos部署chrome和chromedriver