博文 1Python 小说文本 NLP 分析完整教程对应第 1 题 AB标题【NLP 实战】基于 jieba 的中文小说文本挖掘分词、词频、词云、实体抽取全功能一、编程文档A 部分1. 程序实现功能读取本地 txt 小说文本模块化实现自定义词典加载、分词、停用词过滤、词频统计、词性标注并保存、词云图、柱状图、饼图、人物 / 地名 / 武器实体提取保存、简单共现关系图可视化。所有逻辑封装为独立函数主函数统一调度。2. 设计思想面向过程模块化设计每个功能独立为函数低耦合先文本预处理清洗去换行、符号、空白再分词、词性过滤、实体筛选最后统计 可视化 本地 txt 结果输出。方便更换小说 txt 直接复用。3. 主要库与函数说明jiebajieba.cut()分词、jieba.lcut()分词列表、jieba.posseg.cut()词性标注、jieba.load_userdict()加载自定义词典wordcloudWordCloud 生成中文词云matplotlibpyplot 绘制饼图、柱状图networkx绘制词语共现关系图collections.Counter快速词频统计re正则清洗文本4. 测试数据自选小说 txt以《三国演义》为例保存为novel.txtutf-8 编码准备自定义词典userdict.txt人名、地名、武器、停用词表stopwords.txt。5. 输出结果word_freq.txt全部词频pos_result.txt词性分类文本person.txt提取人名place.txt提取地名weapon.txt提取武器图片词云图、词频柱状图、词频饼图、共现关系图二、完整代码B 部分全部封装函数import jieba import jieba.posseg as pseg from collections import Counter import re import matplotlib.pyplot as plt from wordcloud import WordCloud import networkx as nx plt.rcParams[font.sans-serif] [SimHei] plt.rcParams[axes.unicode_minus] False #1 加载自定义词典 def load_user_dict(dict_pathuserdict.txt): jieba.load_userdict(dict_path) #2 加载停用词 def load_stopwords(stop_pathstopwords.txt): sw set() with open(stop_path, r, encodingutf-8) as f: for line in f: sw.add(line.strip()) return sw #3 读取txt小说 def read_novel(txt_pathnovel.txt): with open(txt_path, r, encodingutf-8) as f: text f.read() text re.sub(r[^\u4e00-\u9fa5a-zA-Z0-9], , text) return text #4 分词函数 def cut_text(text, stopwords): words jieba.lcut(text) res [w for w in words if len(w)1 and w not in stopwords] return res #5 词频统计并保存 def word_count_save(word_list, save_pathword_freq.txt, topn30): cnt Counter(word_list) top cnt.most_common(topn) with open(save_path,w,encodingutf-8) as f: for k,v in top: f.write(f{k}:{v}\n) return top #6 词性标注保存 def pos_save(text, stopwords, save_pathpos_result.txt): words pseg.cut(text) pos_data {} for w, flag in words: if w in stopwords or len(w)2: continue if flag not in pos_data: pos_data[flag] [] pos_data[flag].append(w) with open(save_path,w,encodingutf-8) as f: for k,v in pos_data.items(): f.write(f{k}:{v}\n) return pos_data #7 提取人名、地名、武器 def extract_entity(text, stopwords): person set() place set() weapon set() words pseg.cut(text) weapon_words [刀,枪,剑,戟,斧,弓,矛] for w,flag in words: if w in stopwords or len(w)2: continue if flag nr: person.add(w) elif flag ns: place.add(w) if any(x in w for x in weapon_words): weapon.add(w) with open(person.txt,w,encodingutf-8) as f: f.write(\n.join(person)) with open(place.txt,w,encodingutf-8) as f: f.write(\n.join(place)) with open(weapon.txt,w,encodingutf-8) as f: f.write(\n.join(weapon)) return person,place,weapon #8 词云图 def draw_wordcloud(word_list): txt .join(word_list) wc WordCloud(font_pathsimhei.ttf,width1000,height700,background_colorwhite,max_words100) wc.generate(txt) wc.to_file(wordcloud.png) #9 柱状图 def draw_bar(top_words): x,y zip(*top_words) plt.bar(x,y) plt.xticks(rotation45) plt.tight_layout() plt.savefig(bar.png) plt.close() #10 饼图 def draw_pie(top_words): x,y zip(*top_words[:10]) plt.pie(y,labelsx,autopct%.1f%%) plt.savefig(pie.png) plt.close() #11 简单关系图 def draw_graph(word_list): G nx.Graph() for i in range(len(word_list)-1): G.add_edge(word_list[i],word_list[i1]) nx.draw(G, with_labelsTrue, font_familySimHei,node_colorskyblue) plt.savefig(graph.png) plt.close() #主程序入口 if __name__ __main__: load_user_dict() stop load_stopwords() novel_text read_novel() cut_result cut_text(novel_text, stop) top30 word_count_save(cut_result) pos_save(novel_text, stop) extract_entity(novel_text, stop) draw_wordcloud(cut_result) draw_bar(top30) draw_pie(top30) draw_graph(cut_result[:200])三、运行说明安装依赖pip install jieba wordcloud matplotlib networkx准备 4 个文件novel.txt小说、stopwords.txt停用词、userdict.txt自定义词典、黑体字体 simhei.ttf运行后自动生成全部 txt 结果与可视化图片四、结果分析程序可以快速挖掘小说高频角色、地点可视化直观看到文本重点适合古典小说文本挖掘缺点是 jieba 词性标注对古白话识别有限加入自定义词典可以大幅提升准确率。博文 2Trae 编辑器内嵌 DeepSeek 模型使用教程对应第 2 题标题编程效率拉满Trae IDE 内置 DeepSeek 模型完整使用教程前言现在主流编辑器已经深度嵌入 AI 大模型Trae 内置 DeepSeek 系列代码模型不需要额外本地部署直接在 IDE 内完成补全、重构、查 bug、写文档是现代编程的辅助工具。我也了解 Claude Code、Codex 这类嵌入型代码模型下面是 TraeDeepSeek 实操步骤。一、基础介绍DeepSeek 代码模型擅长代码生成、调试、解释、重构Trae 原生接入支持对话式 AI、行内 Inline Chat、自动补全、项目级上下文理解。二、使用步骤打开 Trae 编辑器快捷键CtrlU调出侧边 AI 对话面板右下角模型选择切换为 DeepSeek推荐 DeepSeek-V4-Flash速度快适合写代码方式 1全局对话。直接输入需求例如 “帮我写 Python 分词代码”模型直接返回代码方式 2选中代码悬浮菜单【添加到对话】把这段代码作为上下文让它改错、解释、优化方式 3行内 Inline Chat光标放在代码位置CtrlI唤起内联输入框直接修改当前行 / 函数上下文引用输入#可以引用项目文件、文件夹让 AI 读懂整个项目结构配置参数可以调整 temperature写代码建议 0.1输出稳定严谨创意开发可以调高到 0.7三、实用场景写样板代码、封装函数、写注释文档报错堆栈粘贴进去自动定位 bug、给出修复方案代码翻译、语言转换Python 转 Java重构臃肿代码简化逻辑四、思考我们编程能不能依赖它不能完全依赖但一定要学会用好。AI 可以帮我们节省重复编码、查文档的时间但是业务逻辑、算法原理、安全边界、代码测试仍然需要自己把控。它是辅助工具不是替代程序员。拒绝新技术会慢慢落后正确的方式是学会校验 AI 输出读懂它给的代码理解原理再融入自己的项目。 Claude Code、Github CopilotCodex逻辑思路一致嵌入编辑器贴近编码上下文降低切换窗口的成本。博文 3NLP 的应用领域与我的理解对应第 3 题标题无处不在的 NLP自然语言处理应用领域、生活实例与我的想法一、NLP 可以落地的领域搜索引擎百度、搜狗理解你的自然语言问句匹配网页内容机器翻译DeepL、有道翻译跨语言文本转换智能客服、大模型对话豆包、ChatGPT问答、文本生成舆情分析电商评论情感分析判断好评差评产品口碑监控教育领域作文批改、语法纠错、口语测评医疗电子病历结构化提取病历里面症状、诊断信息法律合同文本抽取、法条检索、文书比对文史研究古籍、小说文本挖掘就是我们上面做的四大名著分析语音转文字录音转写、字幕生成语音助手小爱、Siri二、我平时接触的 NLP 例子短视频字幕自动生成语音识别 NLP 断句输入法联想、智能纠错评论区自动敏感词过滤英语 APP 的语法改错我们这门课做的小说词频、人名提取属于文本挖掘 NLP三、我对 NLP 的理解与兴趣NLP 是连接人类语言和计算机的桥梁让机器读懂人类文字。以前计算机只能处理结构化数字NLP 让非结构化的文本产生价值。 我对文史文本挖掘方向很感兴趣像四大名著、古籍文本分析用程序提取人物关系、统计出场频率辅助文学研究这个方向很有意思。 我愿意持续学习 NLP 技术后续可以尝试实体关系抽取、知识图谱搭建把小说人物关系做成可视化图谱。 NLP 现在发展很快大模型降低了入门门槛但底层的分词、词性、实体识别这些基础原理依然是根基打好基础才能用好新技术。