task 5 Author information association

学习主题:作者关联(数据建模任务),对论文作者关系进行建模,统计最常出现的作者关系;
学习内容:构建作者关系图,挖掘作者关系
学习成果:论文作者知识图谱、图关系挖掘

import json
import pandas as pd
data = []
with open("/content/arxiv-metadata-oai-snapshot.json","r") as f:
  for idx, line in enumerate(f):
    d = json.loads(line)
    d = {'authors_parsed': d['authors_parsed']}
    data.append(d)
data = pd.DataFrame(data)
data.head(10)

networkX https://networkx.org/
将作者列表进行处理
(1)将论文第一作者与其他作者(非第一作者)构建图
(2)使用图算法统计图中作者与其他作者的联系

构建作者连接的无向图

import networkx as nx
# 创建无向图
G = nx.Graph()

# 只用五篇论文进行构建
for row in data.iloc[:50].itertuples():
  authors = row[1]
  authors = [' '.join(x[:-1]) for x in authors]
  # 第一作者 与其他作者链接
  for author in authors[1:]:
    G.add_edge(authors[0], author)
# 将作者关系图进行绘制
nx.draw(G, with_labels = False)
50篇论文构建图.png
# 计算论文关系中有多少个联通子图
print(len(nx.communicability(G)))
plt.loglog(degree_sequence, "b-", marker = "o")
plt.title("Degree rank plot")
plt.ylabel("degree")
plt.xlabel("rank")

# draw graph in inset
plt.axes([0.45, 0.45, 0.45, 0.45])
Gcc = G.subgraph(sorted(nx.connected_components(G),key = len, reverse = True)[0])
pos = nx.spring_layout(Gcc)
plt.axis("off")
nx.draw_networkx_nodes(Gcc, pos, node_size = 20)
nx.draw_networkx_edges(Gcc, pos, alpha = 0.4)
plt.show()
选择最大联通子图进行绘制,折线图为子图节点度值.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容