OpenAlex是一个开源的引文数据库,可以理解为免费开放的Web of Sciences。这对小图书馆来说,非常重要。在有OpenAlex之前,小图书馆不可能有足够的资金和资格从商业引文数据库获取底层数据,只能从Web of Sciences上以500条为限制,一次次下载,再以500条为单位,组合成所需要的数据,体力消耗巨大不说。当计算所需要的数据量超过百万级别,则基本上是达到了让人放弃的程度。而引文数据是图书馆进行文献计量活动和情报服务的最基本数据。非官方的办法就是自己写爬虫,采用不算光彩地方式来爬取Web of Sciences,这对技术要求又稍微高了一些,需要一定的资金投入,也产生一些法务上的问题。
OpenAlex的诞生,基本解决了图书馆获取引文数据的难题,使得小图书馆也拥有了获取海量引文数据的能力。按照张晓林在《Library Inside:AI赋能图书馆新质生产力的一种基础模型》一文中提到一个概念:“智能逆平衡”。“传统的,智能被限定在专门知识、技能、工具甚至地位和资金等高门槛内;AI赋能下,完全可能打破曾经的知识、技能、工具、人才、资金的鸿沟以及这些鸿沟带来的发展不平衡不公平,从而支持资源匮乏的地区和人群逆数字与技能鸿沟实现智能跃升。”虽然智能逆平衡主要指AI提供的智能,但是OpenAlex提供的数据资源,也是一种资源的逆平衡。
OpenAlex带有专门的API接口,通过接口来调取文献数据非常高效。用Python调用API接口的程序比较多,用R语言的接口调用程序只有OpenAlexR一个包。这个包非常好用。
在官方的网站上可以很快速地上手掌握OpenAlexR软件包的使用方法,见:Getting Bibliographic Records from OpenAlex Database Using DSL API • openalexR (ropensci.org)
按照说明文档,用户可以有非常多种的限定方式来下载文献数据。
比如,按照特定的OCRID来下载某位作者或几位作者的数据。
works_from_orcids <- oa_fetch(
entity = "works",
author.orcid = c("0000-0001-6187-6610", "0000-0002-8517-9411"),
verbose = TRUE
)
比如,下载特定DOI的数据
works_from_dois <- oa_fetch(
entity = "works",
doi = c("10.1016/j.joi.2017.08.007", "https://doi.org/10.1007/s11192-013-1221-3"),
verbose = TRUE
)
还可以进行搜索特定标题字段并限定时间
works_search <- oa_fetch(
entity = "works",
title.search = c("bibliometric analysis", "science mapping"),
cited_by_count = ">50",
from_publication_date = "2020-01-01",
to_publication_date = "2021-12-31",
options = list(sort = "cited_by_count:desc"),
verbose = TRUE
)
以上代码执行的行为就是,搜索标题带有”bibliometric analysis”和”science mapping”的论文,并且要求论文的发表时间为2020到2021年,引用次数大于50次。
OpenAlexR调用API是非常灵活的,在官方文档里没有说明,但是在实际数据查询中有一些非常常见的情境,包括有:
1,下载特定单位的所有论文
ipsy_works = oa_fetch(
entity = "works",
institutions.id = "i4210131870",
verbose = TRUE,
mailto = "tongqiwei@gmail.com"
)
我使用了这行简单的代码来下载中国科学院心理研究所的所有论文。这里的关键点在于确定机构限定字段用了institutions.id,以及要知道机构的id号。具体机构限定值可以通过网页版本的OpenAlex来找到。方法是在OpenAlex网站上,直接搜索Institute of Psychology, Chinese Academy of Sciences,搜索结果页的右上角点击设置,要求在结果页面显示API链接,这时可以看到心理所的API链接为:https://api.openalex.org/works?page=1&filter=authorships.institutions.lineage:i4210131870。其中,i4210131870就是心理所的机构id。其他机构也可以通过这个方法找自己的id。
OpenAlex的数据一直在增长,数据质量也在稳步提高。2024年3月份时,心理所的论文数据量只有6799条,现在(2024年6月)已经找增加到7259条。心理所是一家小型科研单位,不太有可能在3个月内发布400多篇新论文,说明OpenAlex的数据涵盖范围在扩大,或者数据质量在提高。当然,心理所的全部文献数据体量应该是OpenAlex现有数据的两倍,大概在1.4万左右。我估计缺少的主要是中文文献数据。
2,下载特定领域的所有论文
psychology_papers_1978 <- oa_fetch(
entity = "works",
publication_year = "1978",
primary_topic.field.id = "fields/32",
per_page = 200,
verbose = TRUE
)
用以上代码,我们可以下载1978年心理学领域的所有论文。这里,心理学领域(Field)的id为32。同样可以通过OpenAlex的网页里搜索心理学的论文,找到这个id号。
按照同样的思路,还可以找到心理学子领域(Subfield)的论文。
OpenAlex将心理学领域分为7个子领域,分别是:
Clinical Psychology,子领域id为3203;
Social Psychology,子领域id为3207;
Experimental and Cognitive Psychology,子领域id为3205;
Developmental and Educational Psychology,子领域id为3204;
Applied Psychology, 子领域id为3202;
General Psychology, 子领域id为3200;
Neuropsychology and Physiological Psychology, 子领域id为3206;
psychology_papers_2018_clinal <- oa_fetch(
entity = "works",
publication_year = "2018",
primary_topic.subfield.id = "subfields/3203",
per_page = 200,
verbose = TRUE
)
确定了子领域的id,就可以用上面的代码将2018年临床心理学的所有论文下载下来。
3,获取论文引文
cited_focal <- oa_fetch(
entity = "works", #注意,每行都有逗号
cites = "W4242883546",
verbose = TRUE,
mailto = "xxx@xxx.com" # 提交注册邮箱则会增加下载速度
)
要获得特定论文,比如id为W4242883546这篇论文的引文信息,可以用以上代码来实现。
按照以上的几种方式进行组合,我们可以获取所需特定文献的基本元数据(OpenAlex提供多达37项),还可以得到每一篇文献的引文,那么可以开展的工作就非常多了。
OpenAlex是一个海量的数据宝库,可以探索的空间非常多。
