← 推广内容库
从红楼梦到社会网络分析
87人关系网络的完整研究
用NetworkX+Gephi分析经典文学中的权力结构与情感联盟
🎉 M1达标 4.61/5.0
#社会网络分析
#红楼梦
#Python
#NetworkX
3会话核验
一、为什么用红楼梦做社会网络分析?
社会网络分析(SNA)通常应用于现实社会数据——企业合作网络、学术引用网络、社交媒体传播网络。但古典文学文本提供了一个独特的优势:数据质量可控,结论可验证。
《红楼梦》前80回是理想的研究对象:
- 人物关系明确,文本证据充分
- 关系类型多样(血缘/主仆/爱情/政治)
- 已有丰富学术解读可对照验证
- 87个主要人物,关系规模适中,适合教学
二、数据收集:从文本到网络
数据收集是整个研究最耗时的环节。我们从《红楼梦》前80回中手工提取关系事件,编码为以下结构:
import networkx as nx
import pandas as pd
edges = [
("贾宝玉", "林黛玉", "爱情", 47),
("贾宝玉", "薛宝钗", "爱情", 31),
("贾宝玉", "王熙凤", "亲情", 28),
("王熙凤", "贾琏", "婚姻", 35),
("贾母", "贾宝玉", "溺爱", 22),
]
G = nx.Graph()
for src, tgt, rel_type, weight in edges:
G.add_edge(src, tgt, relation=rel_type, weight=weight)
print(f"节点数: {G.number_of_nodes()}")
print(f"边数: {G.number_of_edges()}")
三、中心性分析:谁是小说的权力中心?
中心性是网络分析的核心指标。我们计算了四种中心性:
degree_c = nx.degree_centrality(G)
betweenness_c = nx.betweenness_centrality(G)
closeness_c = nx.closeness_centrality(G)
eigenvector_c = nx.eigenvector_centrality(G, max_iter=1000)
centrality_df = pd.DataFrame({
'degree': degree_c,
'betweenness': betweenness_c,
'closeness': closeness_c,
'eigenvector': eigenvector_c
}).sort_values('betweenness', ascending=False)
📊 中心性分析关键发现
👑
贾母:度中心性最高,但控制力存疑
贾母在亲属网络中度中心性最高(连接最多人物),但她的介数中心性仅排第4。这意味着她更多是"被连接"而非"控制连接"——她的权力更多是象征性的。
🎭
王熙凤:介数中心性第一,真正的权力掮客
王熙凤的介数中心性(betweenness centrality)最高。她连接了荣国府日常运营的各个圈子——这意味着她是信息流动和资源分配的真正枢纽。
💕
林黛玉 vs 薛宝钗:不同的网络位置
林黛玉的特征向量中心性更高(与核心人物关联更紧密),但薛宝钗的接近中心性更高(在网络中"距离"所有节点更近)——这预示了她们最终命运的差异。
我们使用Louvain算法进行社群检测,识别出6个主要社群:
from community import community_louvain
import matplotlib.pyplot as plt
partition = community_louvain.best_partition(G)
nx.set_node_attributes(G, partition, 'community')
pos = nx.spring_layout(G, k=2, iterations=50)
colors = [partition[node] for node in G.nodes()]
nx.draw_networkx_nodes(G, pos, node_color=colors, cmap=plt.cm.Set3, node_size=200)
nx.draw_networkx_edges(G, pos, alpha=0.3)
plt.savefig('hongloumeng_communities.png', dpi=150)
🔍 六大社群解读
- 大观园社群(宝玉+黛玉+钗+湘云+丫鬟群):情感联盟,松散但紧密
- 荣国府管理层(贾母+王夫人+凤姐):权力核心,执行决策
- 贾府男性主子(贾政+贾琏+宝玉等):科举仕途,家族期待
- 宁国府社群(贾珍+尤氏+秦可卿):相对独立,自成一体
- 刘姥姥社群:边缘社群,连接外部世界
- 僧道异能社群:超自然网络,与现实社会平行
五、结构洞分析:谁是"桥梁"人物?
from networkx.algorithms import structuralholes
constraint = nx.constraint(G)
structural_holes = {k: 1-v for k, v in constraint.items()}
top_holes = sorted(structural_holes.items(), key=lambda x: x[1], reverse=True)[:10]
🌉 结构洞人物分析
袭人是典型的"结构洞人物":她同时连接着丫鬟圈(大观园服务群体)和主子圈(宝玉及其亲密关系)。她的位置使她能够获取两个圈子的不同信息。
小红(红玉)是另一个有趣的案例:她后期跳出怡红院进入凤姐的视野,完成了从边缘到核心的跃迁。
六、完整Python代码
完整可运行的Python代码和数据已开源,包含:
- 87人关系数据集(JSON/CSV/GML格式)
- 完整NetworkX分析脚本
- Gephi可视化模板
- 中心性计算脚本
- Louvain社群检测代码
七、从研究到教学
这个案例的最大价值不只是研究本身——它是一个完美的教学案例。因为:
- 所有人都熟悉《红楼梦》的人物关系,降低了理解门槛
- 分析结论可对照已有学术解读验证(贾母vs凤姐的权力讨论)
- 代码和数据完全开源,学生可以复现并扩展
- 网络规模适中(87节点),在个人电脑上也能流畅运行
立即体验AI辅助社会网络分析
SNA已核验达标(4.61/5.0)· 3会话核验通过 · M1里程碑3/3技能 · 方法论零门槛
免费开始 →