【算法竞赛学习】学术前沿趋势-作者信息关联
任務(wù)5:作者信息關(guān)聯(lián)
5.1 任務(wù)說明
- 學(xué)習(xí)主題:作者關(guān)聯(lián)(數(shù)據(jù)建模任務(wù)),對(duì)論文作者關(guān)系進(jìn)行建模,統(tǒng)計(jì)最常出現(xiàn)的作者關(guān)系;
- 學(xué)習(xí)內(nèi)容:構(gòu)建作者關(guān)系圖,挖掘作者關(guān)系
- 學(xué)習(xí)成果:論文作者知識(shí)圖譜、圖關(guān)系挖掘
5.2 數(shù)據(jù)處理步驟
將作者列表進(jìn)行處理,并完成統(tǒng)計(jì)。具體步驟如下:
- 將論文第一作者與其他作者(論文非第一作者)構(gòu)建圖;
- 使用圖算法統(tǒng)計(jì)圖中作者與其他作者的聯(lián)系;
5.3 社交網(wǎng)絡(luò)分析
圖是復(fù)雜網(wǎng)絡(luò)研究中的一個(gè)重要概念。Graph是用點(diǎn)和線來刻畫離散事物集合中的每對(duì)事物間以某種方式相聯(lián)系的數(shù)學(xué)模型。Graph在現(xiàn)實(shí)世界中隨處可見,如交通運(yùn)輸圖、旅游圖、流程圖等。利用圖可以描述現(xiàn)實(shí)生活中的許多事物,如用點(diǎn)可以表示交叉口,點(diǎn)之間的連線表示路徑,這樣就可以輕而易舉的描繪出一個(gè)交通運(yùn)輸網(wǎng)絡(luò)。
5.3.1 圖類型
-
無向圖,忽略了兩節(jié)點(diǎn)間邊的方向。
-
指有向圖,考慮了邊的有向性。
-
多重?zé)o向圖,即兩個(gè)結(jié)點(diǎn)之間的邊數(shù)多于一條,又允許頂點(diǎn)通過同一條邊和自己關(guān)聯(lián)。
5.3.2 圖統(tǒng)計(jì)指標(biāo)
-
度:是指和該節(jié)點(diǎn)相關(guān)聯(lián)的邊的條數(shù),又稱關(guān)聯(lián)度。對(duì)于有向圖,節(jié)點(diǎn)的入度 是指進(jìn)入該節(jié)點(diǎn)的邊的條數(shù);節(jié)點(diǎn)的出度是指從該節(jié)點(diǎn)出發(fā)的邊的條數(shù);
-
迪杰斯特拉路徑:.從一個(gè)源點(diǎn)到其它各點(diǎn)的最短路徑,可使用迪杰斯特拉算法來求最短路徑;
-
連通圖:在一個(gè)無向圖 G 中,若從頂點(diǎn)i到頂點(diǎn)j有路徑相連,則稱i和j是連通的。如果 G 是有向圖,那么連接i和j的路徑中所有的邊都必須同向。如果圖中任意兩點(diǎn)都是連通的,那么圖被稱作連通圖。如果此圖是有向圖,則稱為強(qiáng)連通圖。
對(duì)于其他圖算法,可以在networkx和igraph兩個(gè)庫中找到。
5.4 具體代碼以及講解
首先讀取我們想要的數(shù)據(jù):
data = [] #初始化 #使用with語句優(yōu)勢(shì):1.自動(dòng)關(guān)閉文件句柄;2.自動(dòng)顯示(處理)文件讀取數(shù)據(jù)異常 with open("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) #將list變?yōu)閐ataframe格式,方便使用pandas進(jìn)行分析創(chuàng)建作者鏈接的無向圖:
import networkx as nx # 創(chuàng)建無向圖 G = nx.Graph()# 只用五篇論文進(jìn)行構(gòu)建 for row in data.iloc[:5].itertuples():authors = row[1]authors = [' '.join(x[:-1]) for x in authors]# 第一個(gè)作者 與 其他作者鏈接for author in authors[1:]:G.add_edge(authors[0],author) # 添加節(jié)點(diǎn)2,3并鏈接23節(jié)點(diǎn)將作者關(guān)系圖進(jìn)行繪制:
nx.draw(G, with_labels=True)得到作者之間的距離:
try:print(nx.dijkstra_path(G, 'Balázs C.', 'Ziambaras Eleni')) except:print('No path')如果我們500片論文構(gòu)建圖,則可以得到更加完整作者關(guān)系,并選擇最大聯(lián)通子圖進(jìn)行繪制,折線圖為子圖節(jié)點(diǎn)度值。
# 計(jì)算論文關(guān)系中有多少個(gè)聯(lián)通子圖 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()總結(jié)
以上是生活随笔為你收集整理的【算法竞赛学习】学术前沿趋势-作者信息关联的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 逆天!男子称在国美买家电两年没到货 花费
- 下一篇: 【算法竞赛学习】金融风控之贷款违约预测-