恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

四大名著NLP实战:从文本清洗到情感分析的全流程解析

  • 首页
  • 资讯中心
  • /
  • 四大名著NLP实战:从文本清洗到情感分析的全流程解析

相关资讯

HCIA-数通备考与实操全攻略:从VLAN到OSPF的避坑指南 2026/10/19 12:59:35
MooseFS分布式文件系统实战:从搭建到数据恢复与异常处理 2026/10/19 12:59:35
ChromaDB本地化实战:打造离线可用的RAG知识库 2026/10/19 12:59:35

最新资讯

MicroPython纯Python中文点阵字库:零依赖TFT显示方案
葡萄酒评分统计建模:Wilcoxon检验与主成分分析实战
开源可验证的代码评审范式:规则透明、执行可审计
open-code-review:开源可扩展的代码审查基础设施
本地部署AI光影重绘工具“影”:从环境配置到批量调用
PHP循环引用导致内存泄漏?一文讲清排查与解决

今日推荐

OpenCowork 实测:支持本地文件、飞书机器人的 Windows AI 助手(只需配置 Token)
GPT-6 Sol 与 Luna 怎么选?Chat、Work、Codex 版本差异与 TaoToken 接入实测
openclaw.net 集成 ElBruno.MempalaceNet 记忆系统:把 MCP 配置改到 TaoToken 的完整实践

本周热门

基于GMM的语音识别系统原理与MATLAB实现详解
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

四大名著NLP实战:从文本清洗到情感分析的全流程解析

发布时间:2026/10/19 13:04:36
四大名著NLP实战:从文本清洗到情感分析的全流程解析 最近我把手头折腾的几个方向串成了一个三篇系列四大名著自然语言处理实战教程、AI编程助手使用教程、自然语言处理的应用与我的兴趣。三个主题看着跨度挺大——一边是古典文学文本一边是写代码时的人工智能工具最后还得聊点个人方向——但真把它们放到一起做下来才发现这其实是一条完整的自然语言处理学习链先用四大名著当语料跑通“语料清洗—分词—统计—关系抽取—情感分析”的全流程再借AI编程助手把重复的代码活和排错环节提速最后回到NLP本身去看应用场景、定自己的兴趣坐标。这篇文章就把这三篇的核心内容、实操细节和踩坑记录完整展开。1. 先把三篇标题拆开看这个系列真正要解决什么问题很多人看到“自然语言处理实战教程”就觉得门槛高看到“AI编程助手”又觉得是工具测评看到“应用与兴趣”更以为是随笔。其实这三个标题放在一起恰好对应了“会做、做快、做对方向”三个层次。1.1 为什么从四大名著切入NLP选四大名著当语料不是因为情怀而是因为它们是自然语言处理入门阶段几乎完美的实验对象。第一语料干净且合法。公共版权文本随处可得不需要担心商业授权也不涉及用户隐私脱敏适合反复下载、清洗、折腾。第二文本质量高情节和人物关系特别丰富。《红楼梦》里人物几百号《三国演义》里有大量阵营冲突和计谋描写天然就是实体识别、关系抽取、情感分析的素材库。第三语言层面有难度梯度。四本书主体是白话文但夹杂诗词、章回体标题、文言对白分词和预处理的坑一个不少正好把问题暴露出来。我做完这一套之后最大的感受是与其到处找“干净标准”的新闻语料做练习不如直接啃四大名著。语料里的脏数据、异体字、章回结构、诗词韵文全在逼着你去认真处理收获远大于跑一个现成数据集。1.2 AI编程助手在系列里的位置第二篇讲AI编程助手不是给工具做广告而是明确它的定位在NLP实战中大量重复劳动包括数据清洗、格式转换、正则匹配、调试报错这些活完全可以让助手先干一版再人工审查。我在做四大名著项目时最耗时间的其实不是算法设计而是清洗文本和写样板代码。比如要去掉《西游记》每回末尾的“毕竟不知× ×如何且听下回分解”或者把《水浒传》里的人名统一格式这种纯体力活用AI助手生成一段处理脚本再手动微调效率能翻好几倍。所以教程的思路不是“让AI替你想”而是“让AI帮你写你来判断”。1.3 第三篇“应用与兴趣”是收束第三篇看起来最“软”实际上最重要。做技术最怕闷头学完一堆工具却不知道往哪儿用。把NLP的落地场景梳理一遍之后再回头确认自己到底喜欢什么方向——是偏文本分类、情感分析还是偏语言生成、知识图谱这直接决定了后面该深入什么技术栈。关于“我的兴趣”我给了自己一个比较聚焦的答案古典文本的计算化分析。这个方向不算大众但特别适合把NLP基本功练扎实又能产生看得见的有趣结果比如人物关系图、情节情感曲线、主题演化轨迹。2. 四大名著NLP实战教程从文本到结论的完整链路这一篇是整个系列的硬核主体完整走一遍四大名著的NLP处理流程。2.1 语料获取与清洗这一步决定后面能不能跑通先解决语料来源。我这里用的是公开的电子书文本版网上一搜一大把但版本良莠不齐。建议优先选注明“人民文学出版社通行本”的转文本版本内容相对完整。拿到的txt文件常见问题是开头的空白行、目录信息、出版社说明中间的段落被硬换行截断结尾还有广告页或额外注释。清洗策略分三步。第一步统一编码。我一开始直接读txt没注意文件是GBK编码输出就乱码了后来统一用Python读取时显式指定编码再转成UTF-8存储。第二步去噪音。用正则去掉空白字符、页码、“在线阅读”这类无关标记并处理段落间的硬回车。第三步抽取正文。四本书都有章回标题比如“第一回 甄士隐梦幻识通灵”这些标题在后面做章节维度的分析时是关键锚点所以不能一股脑删掉而是专门提取出来建一个章节索引表。import re import pandas as pd with open(hongloumeng.txt, r, encodinggbk, errorsignore) as f: raw_text f.read() # 去除多余空白保留章节标题 text re.sub(r\s, , raw_text) chapters re.findall(r第[一二三四五六七八九十百]回, text) print(检测到章节数, len(chapters)) # 将文本按章节拆开 split_text re.split(r第[一二三四五六七八九十百]回, text) for idx, section in enumerate(split_text[:5]): print(idx, section[:80])这个环节的坑在于四大名著的“回”字使用不完全统一《红楼梦》有“第一回”《水浒传》也有“第×回”但也有“楔子”这样的前置单元。所以正则写完后必须手动抽查结果不要迷信一次匹配成功。2.2 分词与词频统计先感受每本书的“气质”分词我用的是jieba原因就一个字快。中文NLP入门绕不开这个库加载自定义词典也方便。但直接拿默认词典跑四大名著结果会很惨人名大量被切开或切错。比如“贾宝玉”默认可能被分成“贾/宝玉”“林黛玉”分成“林/黛玉”。解决办法是加载自定义词典把四本书的主要人物、地名、兵器名加进去。词典文件格式很简单每行一个词可带词频和词性。import jieba import jieba.analyse from collections import Counter # 加载自定义词典 jieba.load_userdict(sldm_dict.txt) with open(hongloumeng_clean.txt, r, encodingutf-8) as f: hl_text f.read() words jieba.lcut(hl_text) words [w.strip() for w in words if w.strip()] # 简单停用词表 stopwords set(的 了 是 我 你 他 她 它 在 有 和 就 不 人 都 一 一个 上 下 说 道 只见.split()) filtered [w for w in words if w not in stopwords and len(w) 1] word_freq Counter(filtered) print(word_freq.most_common(30))停用词表这一块要特别注意。很多人直接下载网上的通用中文停用词表结果把“说道”“只见”“不知”这些在古典小说里有叙事意义的词全过滤掉了后面再做叙事分析就废了。我后来是跑了高频词之后人工把明显是停用词的词挑出来单独维护了一份《古典小说专用停用词》效果比通用词典好很多。四本书的词频一跑出来差异非常有趣。《三国演义》高频词里有大量“丞相”“将军”“主公”《水浒传》里“好汉”“弟兄”“寨主”很扎眼《红楼梦》里则是“老太太”“太太”“宝玉”“黛玉”《西游记》里“师父”“妖精”“菩萨”稳居前列。这种词频层面的差异本身就是NLP最直观的“文本气质”呈现。2.3 人物关系抽取用共现法做一张关系网词频只是最基础的一步真正有意思的是人物关系发现。我用的是最简单的共现法在同一个句子或同一个段落里如果两个人物同时出现就认为他们之间存在一次关系“接触”。统计所有人物两两共现的次数就能得到一张加权关系网络。具体做法是先维护一个人物名称列表从自定义词典或者人工整理的人名表里来。按段落把文本切块在每个段落里检测出现了哪些人物。两两组合把共现次数累加到矩阵里。import pandas as pd from itertools import combinations person_list [贾宝玉, 林黛玉, 薛宝钗, 王熙凤, 贾母, 贾政, ...] matrix pd.DataFrame(0, indexperson_list, columnsperson_list) paragraphs re.split(r[\n。], hl_text) for para in paragraphs: found [p for p in person_list if p in para] for a, b in combinations(found, 2): matrix.loc[a, b] 1 matrix.loc[b, a] 1 # 取关系最强的 TopN top_relations matrix.unstack().sort_values(ascendingFalse).reset_index() top_relations.columns [人物A, 人物B, 共现次数] print(top_relations.head(20))这个方法的优点是简单直观缺点是噪音多。比如“贾宝玉”和“林黛玉”几乎每章都一起出现共现次数高是真实关系但“贾母”和“王夫人”也经常同处一个场景不一定有直接互动。所以后面做“关系强度”分析时要引入更精细的度量比如共现窗口减小到相邻句子或者除以人物总出场次数做归一化。如果是给读者展示建议直接用共现次数作为权重画图效果最直观分析时要提醒这只是粗粒度关系不等于真实的社交亲密度。人物表本身也值得聊聊。四本书加起来有名有姓的人物上千我一开始想全列出来发现根本列不全。正确姿势是先拿高频词里的人物词根做种子再配合正则去文本里捞“××道”“××曰”“××笑道”这种人名动词模式半自动地扩展人物表。这个过程很繁琐但做完之后对文本的理解会深很多。2.4 情感曲线与章节叙事节奏把“感觉”量化做完人物关系下一步试着做情感曲线。网上很多教程直接用SnowNLP的情感打分跑一遍四大名著但效果很一般因为SnowNLP是基于电商评论语料训练出来的对古典文本的措辞风格不敏感“可怜”“可叹”这种词很容易被单一贴标签。我的做法是换个思路不看整句的情感正负而是统计每一章里“情感标记词”的密度。先人工整理一个带情感倾向的词典比如“大喜”“悲”“怒”“哭”“笑”这类词每个词给一个粗略的权重然后统计每一章里这些词的频次算出一个“情绪激烈度”。情绪激烈度和情节起伏的对应关系在小说里非常明显。比如《红楼梦》前八十回和后四十回情绪激烈度的变化趋势就有肉眼可见的差异。前八十回里大场面如“元妃省亲”“黛玉葬花”附近情绪词密度明显升高后半部分则整体偏低和后四十回口碑差异的讨论也能对上。这种分析不需要多高级的模型但胜在可解释、可复现适合写在教程里给初学者建立“量化叙事”的概念。2.5 结果可视化让数据和图表替你说话数据做出来了不能只躺在csv里。我建议用pyecharts和wordcloud做两样东西人物关系图和词云。人物关系图用pyecharts的Graph图节点大小按出场次数连线粗细按共现次数能在网页端交互。词云用wordcloud库但字体必须指定中文字体文件路径否则出来全是方块。这一步的经验是可视化一定要“克制”。很多人把几百个人名全丢进关系图结果密集得像蜘蛛网毫无可读性。正确做法是只挑Top30人物或者按阵营划分做局部图比如只画《三国演义》里魏蜀吴各自的核心人物关系。视觉上的留白才是专业感的来源。3. AI编程助手使用教程把重复劳动交给工具把判断留给自己做完四大名著的项目我最大的感觉是很多时间浪费在写清洗脚本、调试正则、调中文编码上。不是不会写而是这些代码太重复、太琐碎。第二篇教程就是围绕“如何用AI编程助手把这些时间抢回来”展开的。3.1 工具怎么选先看补全能力再看对话能力当前市面上的AI编程助手很多我没有在某一款上吊死而是按照“能不能在编辑器里做行级补全能不能针对报错做自然语言定位”两个标准来试。行级补全决定了你写普通代码时的流畅度对话能力决定了你在遇到“为什么这段正则没匹配上”这类疑难杂症时能不能快速得到解释。实操下来我认为主力使用一款日常编码补全能力强的工具就够了配合一个网页端的通用对话助手来处理大段代码生成和思路梳理。不要同时开七八个插件每个插件都在后台跑模型机器卡得不行得不偿失。3.2 用自然语言描述需求让助手生成清洗脚本以清洗《水浒传》章节文本为例。传统做法是打开编辑器回忆一遍正则语法然后慢慢调试。用AI助手的正确姿势是把需求描述得足够具体。我常用的描述模板是我有一个《水浒传》的txt文件内容包含章节标题例如“第一回 王教头私走延安府 九纹龙大闹史家村”后面是正文。请帮我写一段Python脚本 1. 读取GBK编码的txt 2. 用正则匹配章节标题并提取回目名 3. 按回目把正文切分成列表 4. 去除每个段落里的空白字符和页脚广告 5. 输出为结构化json。助手返回的脚本我一般不会直接跑而是先检查三点正则是不是写得太贪心、文件路径是不是硬编码、有没有考虑编码异常。检查通过后放到项目里跑一遍如果报错再把报错信息回贴给它。这个过程的核心是AI负责快速生成“能跑的初稿”我负责“能用的审查”。3.3 让助手做代码解释而不是重新搜索项目里经常有一些看不懂的现成代码尤其是别人写的数据处理脚本。以前我会把代码复制到搜索引擎里一段段查现在直接丢给AI助手“请解释这段代码的作用特别是正则里(?...)的含义以及为什么作者要用finditer而不是findall。”这种用法特别适合学习。AI助手的解释通常比文档更口语化而且可以直接针对你贴的代码给出具体反馈。但有一个前提你必须已经有最基本的正则和Python语法底子否则连它解释里的“lookbehind断言”都看不懂又得从头补。3.4 Prompt技巧四个顺手好用的习惯给AI编程助手下指令我总结出四个习惯按重要程度排序带上下文。别只说“写个程序”而是“我在做四大名著文本分析现有文本已经按章节切分需要统计每回人物名出现次数输出csv”。上下文越全生成结果越贴需求。给示例。比如“输入是一句‘林黛玉笑道’输出应该是‘林黛玉’和‘笑’两个字段。请按这个格式处理全篇。”模型能根据示例推断格式。要求可执行。在指令最后加上“请给出可直接运行的Python代码并包含必要的import”减少它输出伪代码的概率。让助手自我纠错。如果第一次生成结果不对我会问“结果中有哪些可能的边界情况没有考虑”很多时候它能指出编码、空段落、正则特殊字符等问题。3.5 别盲信AI所有生成代码必须过测试最后给AI编程助手的使用提个醒它能让你写代码速度变快但在你准确描述需求之前它也会一本正经地生成错误代码。我在项目里要求自己AI生成的脚本至少跑一遍最小测试用例再把全量数据喂进去。比如清洗脚本先拿正文前200字做迷你版跑一遍确认不会误删章节标题再去处理全本。这一步永远不能省。4. 自然语言处理的应用与我的兴趣从“能用”到“想用”第三篇的内容是站在更高维度看NLP也用来说清楚我自己为什么选择古典文本这条路。4.1 NLP的落地场景远比想象中广很多人提到NLP就觉得是聊天机器人其实它已经渗透到几乎所有处理文本的行业里。我把常见的应用场景整理成一张表应用场景典型任务核心技术点搜索引擎查询理解、文档排序、query纠错语义匹配、排序学习智能客服意图识别、槽位抽取、自动问答文本分类、序列标注医疗健康电子病历结构化、症状抽取命名实体识别、关系抽取法律文书合同条款审查、案例检索长文本分类、语义相似度舆情分析情感判断、事件检测、传播链追踪情感分析、主题模型教育领域作文批改、口语评测、知识点标签文本生成、语法纠错金融风控公告舆情预警、财报信息抽取事件抽取、实体链接圈子里的讨论经常聚焦“大模型能不能取代一切”但落地项目的真实难点从来不是单个模型效果而是数据标注、系统集成、效果评估这些脏活。比如一个法律合同审查系统模型可能只占20%工作量剩下的是合同文本解析、条款对齐、错误输出规则过滤。了解这些对新人的择业和方向选择特别重要。4.2 我的兴趣在“计算叙事学”这个交叉地带把NLP应用场景过了一遍之后我确认自己最喜欢的还是文本分析方向的活儿。于是把兴趣收敛到“计算叙事学”用算法去拆解小说情节、人物弧线、情感节奏。四大名著自然语言处理这个项目其实就是我在这个方向上的练手作。和做搜索、做推荐比起来古典文本分析没有实时性能压力数据规模也小适合一个人反复打磨每一步都能看到有趣的结果。比如我最近在玩的《三国演义》阵营关系演化把文本按时间线切成几段分别计算魏蜀吴三方人物共现网络的重心变化就能看到“联盟—对峙—吞并”的结构变迁。这种东西放在大厂业务里毫无用处但作为兴趣和作品集它足够说明你理解NLP的哪些环节。另外古典文本分析对模型的“审美能力”要求格外高。通用情感模型说“黛玉葬花”是伤感的但为什么伤感、整段叙事是怎么铺垫到情感顶点的这些就不是简单分类能回答的需要把篇章结构、修辞模式都纳入建模。这种复杂度恰恰是迷人的地方。4.3 给新手的NLP学习路线建议基于我自己走过来的经验给想入门NLP的新手提几条具体的路线建议第一步把Python基础打牢尤其是字符串操作、正则表达式、文件读写。NLP第一道坎是文本清洗不是模型。第二步学会pandas能用表格的方式理解文本特征。很多NLP中间结果都是表格pandas用得顺分析流程就顺。第三步掌握jieba分词和词频统计做一个小项目比如给某本小说做一个词云。先跑通再理解原理。第四步接触命名实体识别和关系抽取理解“实体—关系—事件”这个信息抽取框架。第五步再上深度学习模型比如BERT类的预训练模型做文本分类这时候你对数据、特征、评估的理解已经能支撑模型学习了。切忌一上来就微调大模型。没有前面数据处理的“体感”模型调参调得再好遇到真实脏数据照样崩。5. 常见问题与排查技巧实录做完整个系列我把过程里最有代表性的问题和排查思路整理成速查表这些全是硬经验。问题现象原因分析排查与解决分词把人名切碎默认词典不包含人名jieba按单字切分概率高加载自定义词典添加“贾宝玉”等词并指定词频必要时用add_word文本编码乱码文件原始编码不是UTF-8用chardet检测编码读取时显式指定如encoding‘gbk’情感分析结果离谱预训练模型语料领域不匹配古典文本措辞特殊改用领域词典统计情感标记词或人工标注小样本微调正则匹配章节标题失败标题里可能有全角空格或中间有换行先统一压缩空白再做正则观察原始字符串repr输出人物关系图太乱人物太多、共现窗口太大、没有过滤低频组合限制TopN、缩小共现窗口、按阵营拆图AI助手生成的脚本报错依赖版本不一致或文件路径硬编码告诉助手具体报错栈和Python版本让它修正用相对路径词云中文变方块wordcloud默认字体不含中文指定中文字体文件路径如simhei.ttf处理全本txt时内存飙升一次性读入大规模文本并频繁正则分章节读取边读边处理用生成器做流式处理这里面我想特别强调编码和内存两个坑。编码问题看似基础但实际项目里至少有一半的“数据读不进来”是编码导致的。内存问题则提醒我们拿到数据先看体积一个几十MB的txt看似不大但分词后每个字都变成Python对象内存膨胀可以到十倍以上这时候逐段处理比一次性处理更稳健。还有一个经常被忽视的细节正则中贪婪匹配与回溯问题。在清洗《红楼梦》时我一开始用了一个比较宽泛的正则匹配人物对白结果因为包含“(.?)”这样的模式在长文本上跑得极慢。排查下来是正则回溯导致的性能陷阱。拆分成小段文本再匹配速度瞬间就上去了。这类问题教科书上不会教你踩过一次就有肌肉记忆。最后再说几句我个人在整套折腾中最大的体会是自然语言处理不是背几个模型名字、跑几个示例代码就能入门的真正拉开差距的是处理文本时那种“手上沾泥”的感觉——你得亲手去碰乱糟糟的原始语料被编码、正则、错别字、停用词一遍遍折磨再把AI编程助手当成一个随时待命的协作者用自己的判断给它把关最后把一个模糊的兴趣收敛成具体的方向。四大名著这个项目恰恰给了我最完整的训练从语料清洗到词频统计从人物关系到情感曲线再到用数据去重新理解经典叙事。如果你也想试试NLP我建议直接找一本你最喜欢的书下一个txt版本先跑一遍分词看看那些高频词里有没有你熟悉的名字。用一本熟悉的书做第一个项目比任何课程都更容易坚持下去。

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号