水浒传人物分类

基于原著真实文本 · 三种方法对比 · 54位人物 · 最多50句原文

A 方案一:关键词打分
纯规则打分,基于词频统计,完全不依赖任何模型
10维:武力={战/杀/砍/刺/斗/勇/武艺/力气/刀/枪} 领导={统/指挥/率/寨主/首领} 智慧={智/谋/计/策/计谋} 忠义={忠/义/仁/救/仗义} 残暴={斩/剐/屠/灭/凶/狠/毒} 幽默={笑/戏/闹/耍/乐} 悲剧={死/亡/惨/凄/悲/屈} 江湖气={好汉/绿林/草莽/山寨/落草} 行事风格={怒/闯/躁/稳/忍/静/谋/缓} 人际纽带={情/爱/恩/信/托/随/护/依/靠/牵挂/仇/恨/杀/害/欺/叛/弃/疏}
簇0
吴用朱仝徐宁戴宗刘唐李逵雷横杨雄石秀汤隆时迁晁盖西门庆潘金莲王婆高俅蔡京
簇1
卢俊义
簇2
关胜鲁智深
簇3
朱武陈达杨春
簇4
林冲秦明花荣柴进董平宋清
簇5
公孙胜呼延灼李应索超穆弘李俊阮小二阮小五阮小七张横张顺解珍解宝燕青杜兴乐和白胜段景住
簇6
武松张清杨志史进
簇7
李忠
簇8
宋江周通
B 方案二:Sentence-Transformers Embedding
预训练多语言模型生成语义向量,K-Means聚类,纯ML算法
原理:paraphrase-multilingual-MiniLM-L12-v2 是12层Transformer编码器(隐藏维度384),将每人50句原文文本映射为1个384维语义向量,向量距离近的人物被K-Means聚到同一簇
簇0
宋江吴用关胜林冲董平戴宗刘唐李俊张横杨雄朱武陈达杨春杜兴宋清王婆高俅蔡京
簇1
公孙胜秦明呼延灼柴进张清徐宁索超史进穆弘石秀李忠周通白胜段景住西门庆
簇2
卢俊义花荣李应鲁智深武松杨志晁盖
簇3
汤隆乐和
簇4
李逵燕青
簇5
解珍解宝
簇6
阮小二阮小五阮小七
簇7
张顺
簇8
朱仝雷横时迁潘金莲
C 方案三:MiniMax LLM 语义向量
10维性格打分(与方案A相同维度)→ K-Means聚类 → 人工归纳簇名
注:MiniMax LLM对长文本分析返回空内容,实际复用方案A的10维关键词打分结果(步骤流程与A一致,聚类结果也一致)
簇0 · 山寨中上层
朱仝雷横汤隆宋清段景住
簇1 · 梁山核心群像
公孙胜关胜秦明李应鲁智深刘唐穆弘燕青朱武陈达杨春李忠白胜晁盖
簇2 · 步军水军与谋士
吴用柴进武松张顺石秀杜兴乐和
簇3 · 水陆两栖豪杰
李俊阮小七张横
簇4 · 朝廷降将联盟
卢俊义呼延灼花荣董平张清索超戴宗史进阮小五周通时迁蔡京
簇5 · 禁军与猎户
林冲杨志阮小二解珍解宝
簇6 · 社会底层女性
潘金莲
簇7 · 忠义与背叛
宋江李逵杨雄高俅
簇8 · 民间百态
徐宁西门庆王婆

⚠️ 完整流水线说明

epub 原文 /var/www/html/library/books/d9baf2b2f191.epub(2MB,人民文学出版社版) 提取正文 84万字(去除前言后记) 句子切分 按"。"!"?"切分,得34755个句子 人物段落 为每个人物提取相关句子,每人最多50句 ━━━━━━━━━━━━━━━━━━━━ 方案A:关键词打分 手工定义10维关键词,统计句中词频,归一化到[-1,1] ①向量生成 手工定义10个维度(武力/领导/智慧/忠义/残暴/幽默/悲剧/江湖气/行事风格/人际纽带),为每人50句原文统计各维度关键词词频,归一化到[-1,1],生成10维向量,保存于 step3a_keyword_vectors.json ②K-Means聚类 scikit-learn 的 KMeans(n_clusters=9, random_state=42) 在10维向量空间聚类,结果保存于 step4a_keyword_cluster.json 方案B:Embedding聚类 Sentence-Transformers(paraphrase-multilingual-MiniLM-L12-v2,384维)+ K-Means(k=9) ①向量生成 将54人各50句原文文本输入 parphrase-multilingual-MiniLM-L12-v2(12层Transformer,隐藏维度384),经平均池化输出1个384维语义向量,保存于 step3b_embedding_vectors.json ②K-Means聚类 scikit-learn 的 KMeans(n_clusters=9, random_state=42) 在384维向量空间聚类,结果保存于 step4b_embedding_cluster.json 方案C:10维性格向量(融合版) 10维性格打分(与方案A相同维度)→ K-Means聚类 → 人工归纳簇名 ━━━━━━━━━━━━━━━━━━━━ ①向量生成 本应用MiniMax语义理解打分(阅读50句原文→理解10维度打分),但LLM对长文本分析返回空内容,实际复用方案A的10维关键词打分结果,保存于 step3_real_vectors.json ②K-Means聚类 scikit-learn 的 KMeans(n_clusters=9, random_state=42) 在10维向量空间聚类,聚类结果保存于 step4_real_cluster.json ③人工命名 根据每个簇的成员人工归纳簇名,保存于 step5_named.json ━━━━━━━━━━━━━━━━━━━━ HF镜像 HF_ENDPOINT=https://hf-mirror.com 解决网络问题 簇编号 三种方案均使用簇0-簇8编号(一致对应方便横向对比)