DBLP学者合作关系数据集的制作

本文介绍如何使用Python解析DBLP的XML数据,提取作者信息和合作网络,构建包含237万作者和900万合作边的图结构。

DBLP是一个计算机领域的文献数据库,网站上的所有文献数据保存在一个xml文件中,下载地址https://dblp.org/xml/。这个文件每几天会更新一次,我下载的是2019.10.30日更新的版本,解压后是一个2.53g的xml文件。使用python对这个文件解析,得到一个描述学者合作关系的图结构。

1.dblp.xml的标签

一篇文献的标签结构如下图所示
在这里插入图片描述
article是文献的类型,代表期刊文献。DBLP将文献分为8中类型。

  • article:期刊
  • proceeding:论文集
  • inproceeding:论文集中的一篇(应该指的是会议论文)
  • book:出版的书籍
  • incollection:书籍中的一章
  • www:网页
  • phdthesis:博士学位论文
  • masterthesis:硕士学位论文

这里我们只关注article和inproceeding

一篇文献下的标签代表这篇文献的相关信息。author标签指的是作者姓名,其他的相关信息比如发表时间、出版社、题目都有不同的标签表示。

除论文外,这个xml中还有其它的信息,比如作者、会议。具体内容和标签格式可参考文献 Michael Ley, “DBLP — Some Lessons Learned”

2.xml的解析

用python自带的sax库对xml文件解析,使用方法可看python 菜鸟教程的介绍。我对文件解析两次,第一次提取全部的作者并为每个作者分配一个id,这也就是图的顶点。将 id-作者姓名 对应关系输出到一个文本文件中。

第二次解析建立图中的边。若id为 x 的作者和id为 y 的作者合作过文章,则图中应有边(x,y)。要注意三种情况:

  1. 边(x,x)不应该出现
  2. x,y)和(y,x)只记录一次、
  3. xy 有过多次合作,(x,y)只记录一次

最终将所有的边输出到一个文本文件中,每个数对 x y 占一行

完整代码如下:

#use xml.sax parse dblp.xml. Give each author an ID and put them in a file.
#find collaboration relations of all authors and output them to a file. One relation's format is like (id1,id2)

import xml.sax
class authorHandler(xml.sax.ContentHandler):   #extract all authors
	def __init__(self):
		self.CurrentData=""     #tag's name
		self.dict={
   
   }   #save all authors. The key is an author's name, the value is his id
		self.name=""   #the name of an author
		self.id=0      #the ID of an author
	def startElement(self, tag, attributes):   
		self.CurrentData = tag
		self
【资源说明】 基于关联规则挖掘DBLP学者关系python源码+实验报告(数据挖掘作业).zip 基本思路 解析 DBLP 的 xml 文件,以 attention 和 transformer 为关键词,只取 2017 年以后的文章。 把人名编码成数字。 一年一年来处理,认为有效的学者关系满足两点: 一年内发表论文数量大于 5【支持率】。 关系内任意一人记为 a,除他之外其他人记为 A,要满足 A → A+a 的【置信率】大于 0.5;注意是任意一人。 定义 人数=2 的关系为【合著者】,人数>2 的关系为【团队】。 定义学者关系的【活跃程度】:α \* 这一堆人发表文章数量 + β / 人数 \* 求和{一堆人发表文章数量 / 每个人发表文章数量}。取 α=1,β=10。注意发表数量都是一年内的。 主要结论 研究 attention transformer 的人越来越多。 貌似没人能一直研究 attention transformer 超过一年,大家的研究方向变得很快。 好多活跃的人都是重复的,比如出现 “一个固定导师+一个可变学生” “两个固定导师+一个可变学生” “AB BC AC 都活跃” 这种 pattern,三五好友 / 整个实验室一起研究 transformer。 合著者发文数量上,2018年有一个激增;团队发文数量上,2019年和2021年都有激增。 文件列表 py: `getAuthors.py`:从 DBLP 的 xml 文件,解析得到 `authors.txt`。 `encodeAuthors.py`:把 `authors.txt` 编码成 `authors_encode.txt` + `author_index.txt`。 `fpgrowth.py`:调用 `mlxtend` 的关联规则挖掘,以及学者关系分析。 txt: `authors.txt`:年份 + title + 学者名字。 `authors_encode.txt`:年份 + title + 学者编码(数字)。 `author_index.txt`:学者编码 + 学者名字 + 这个人(一年内)总共发表数量。 csv: `result_co_authors_5_0.5.csv`:合著者的分析结果,年份 + 学者名字(tuple)+ 学者一年内发文数量 + 活跃程度。 `result_teams_5_0.5.csv`:团队的分析结果,格式同上。 pdf: 课程报告。 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载使用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值