本文用到的包
import re
import sys
from collections import defaultdict
import numpy as np
import pylab as plt
import matplotlib.cm as cm
import statsmodels.api as sm
from os import listdir
import json
本文使用了AMiner公布的DBLP计算机科学文献数据,基本分析思路与代码与Data_APS-Journals_Python一文一致。唯一的区别是数据格式有所不同,在数据中没有论文长度的信息,同时引文数据与论文基本信息也有许多没有匹配上,因此数据集较小,所有子领域加起来一共有近十三万论文和四十万引用记录。
读取数据:
path='/Users/csid/Documents/bigdata/DBLP_Citation_2014_May/domains/'
Q={}
Cdata=[]
C=defaultdict(lambda:[0,0]) #paper doi : (cite n papers, been cited by n papers)
for p in listdir(path):
if p=='.DS_Store':
continue
flushPrint(p)
paper={}
c=[]
with open(path+p,'rb') as f:
for line in f:
try:
if len(line.split('#')) > 1:
c.append(line)
else:
nAuthor = len(c[1].split(','))
year = digitalize(c[2])
doi = digitalize(c[4])
for i in c[5:]:
nc = digitalize(i)
if nc:
Cdata.append([doi,nc])
C[doi][0]+=1
C[nc][1]+=1
paper[doi]=[year,nAuthor]
c=[]
except:
pass
Q[p]=paper
P=defaultdict(lambda:{})
for j in Q:
for i in Q[j]:
if i in C:
P[j][i]=Q[j][i]+C[i]
接下来的各个分析,与对APS期刊的分析基本一致,因此不再展示代码。
图1. 计算机杂志历年发表文章数。标注中写明了创刊年份。 图2. 计算机杂志历年文章平均作者数。 图3. 计算机杂志历年文章平均引用其他文章数。 图4. 计算机杂志历年文章平均被引用次数。综上各图,结论是APS杂志文章的平均作者数和引用数都在不断增加,说明科研越来越依赖团队作战,而且做出一手科研贡献对专业知识的储备要求也越来越高。
发现存在关系
![Eq. 1][1]
[1]: http://latex.codecogs.com/svg.latex?W\sim{N^{\gamma}}
其中W是引用总数,N是文章总数。
图5. 计算机杂志总文章数和总引用数的关系。右下角标注出了不同期刊的gamma系数。考虑一个网络,节点是论文,连边是论文之间彼此引用的关系,这样的网络可以称为科学引文网络。上图中我们发现,链边增长得比节点数量要快,而且总链边数和总节点数之间总是构成如Eq.1所示幂律关系。
同时,发现还存在关系
![Eq. 2][2]
[2]: http://latex.codecogs.com/svg.latex?M\sim{e^{-\delta{t}}}
其中M是被引用数量,t是时间。
图6. 计算机杂志不同年代文章引用数跨越时间的分布。右上角标注出了不同时期的delta系数。如上图所示,我们发现虽然文章引用的频次随时间跨度加大总是以指数方式迅速衰减,但这个衰减速度在变慢。物理学家不断引用更早的研究发现,这说明随着人类社会发展,科学家对已有知识检验和重构的宽度在不断增加。有趣的是,虽然同样衰减速度在变慢,计算机论文的衰减速度还是要比物理论文快得多。
网友评论