You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从字典格式的论文引用数据创建networkx有向图

解决方案

错误原因

你之前直接使用G = nx.DiGraph(citations)不生效,是因为NetworkX的有向图直接接收字典参数时,要求字典结构为{源节点: 邻接节点列表}的邻接表格式,而你现有的字典每个节点对应的是包含inbound_citations和outbound_citations两个键的嵌套结构,无法直接识别。

正确实现步骤

1. 构建引用有向图

引用关系是有向的(A引用B对应边A→B),遍历所有论文的出引列表添加边即可,可先对出引列表去重,避免添加重复边:

import networkx as nx

# 初始化有向图
G = nx.DiGraph()

for source_paper, citation_info in citations.items():
    # 先添加源节点,避免仅存在入引的节点被遗漏
    G.add_node(source_paper)
    # 去重后添加出引边
    for cited_paper in set(citation_info['outbound_citations']):
        G.add_edge(source_paper, cited_paper)

2. 核心需求实现

查找高中心性论文

引用网络常用三类中心性指标,可根据需求选择:

  • 入度中心性:对应论文被引频次,最直观的影响力指标
  • 介数中心性:衡量论文作为不同领域研究枢纽的程度
  • 特征向量中心性:同时考虑引用该论文的其他论文的影响力,更适合筛选领域内高价值成果

示例代码:

# 计算入度中心性取Top10
in_centrality = nx.in_degree_centrality(G)
top_10_influential = sorted(in_centrality.items(), key=lambda x: x[1], reverse=True)[:10]

# 计算特征向量中心性
eigen_centrality = nx.eigenvector_centrality(G)

发现聚类/派系

如果需要查找互引密集的论文簇,可选择两种方案:

  • 无向派系:将有向图转为无向图后查找最大派系,适合找互相引用关联极强的论文组
  • 强连通分量:查找有向图中两两可达的节点簇,适合找领域内引用闭环

示例代码:

# 查找至少包含3个节点的无向最大派系
undirected_G = G.to_undirected()
large_cliques = [clique for clique in nx.find_cliques(undirected_G) if len(clique) >= 3]

# 查找强连通分量聚类
strong_components = [comp for comp in nx.strongly_connected_components(G) if len(comp) >=3]

内容的提问来源于stack exchange,提问作者Hryhorii Pavlenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 03:57:03