学术前沿趋势分析5:作者信息关联

1. 主要任务

主题:作者关联(数据建模任务),对论文作者关系进行建模,统计最常出现的作者关系;

内容:构建作者关系图,挖掘作者关系

成果:论文作者知识图谱、图关系挖掘

2. 数据处理步骤

将作者列表进行处理,并完成统计。具体步骤如下:

将论文第一作者与其他作者(论文非第一作者)构建图;

使用图算法统计图中作者与其他作者的联系;

3. 代码

data  = [] #初始化
#使用with语句优势:1.自动关闭文件句柄;2.自动显示(处理)文件读取数据异常
with open(r"F:\dataset\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)
        
        if idx>=2000:
            break
data = pd.DataFrame(data) #将list变为dataframe格式,方便使用pandas进行分析
import networkx as nx
#创建无向图
G=nx.Graph()
data.iloc[:5]
# iterrows(), iteritems(), itertuples()对dataframe进行遍历
# iterrows(): 将DataFrame迭代为(insex, Series)对。
# itertuples(): 将DataFrame迭代为元祖。
# iteritems(): 将DataFrame迭代为(列名, Series)对

学术前沿趋势分析5:作者信息关联_第1张图片

for row in data.iloc[:500].itertuples():
    authors=row[1]
    #print(row,222222,authors)
    authors=[' '.join(x[:-1]) for x in authors]
    #print(1111,authors)
    #第一个作者与其他作者链接
    for authors in authors[1:]:
        G.add_edge(authors[0],authors)

nx.draw(G
       ,with_labels=False
       )

学术前沿趋势分析5:作者信息关联_第2张图片

# 计算论⽂关系中有多少个联通⼦图
# degree_sequence = sorted([d for n, d in G.degree()], reverse=True)
# dmax = max(degree_sequence)

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()

你可能感兴趣的:(Datawhale,python,机器学习,数据挖掘)