书目参考文献中的群体分析
refcliq的Python项目详细描述
refcliq
这个包是对neal caren的 refcliq。目标是一样的 利用图聚类分析共引文献的聚类。注意 这个软件包也可以在联合引文网络上运行,而不是在引文网络上运行 网络
主要区别是:
- 基于所有可用信息的更可靠的文章匹配(因此,如果同一期刊中同一作者/年份的两篇文章也有doi或标题,则不会聚集在一起)
- 强大的字符串匹配,捕捉拼写错误(使用fuzzywuzzy)
- 程度中心性而不是中间中心性。
- 地理编码支持,其中的隶属关系字段用于映射引用作者的位置。这需要一个google maps api密钥,该密钥可能需要付费。有关Google地理编码API的更多信息。关于如何获取密钥的指南,请参见这里的
重要信息:输入的书目文件必须来自科学网/知识网,包括引用参考文献字段。否则,"参考"部分可能丢失或格式不同,这将不起作用。
非常重要:大多数.bib文件包含由不同的人使用不同的想法/符号/约定手动填写的信息。这个程序包适用于大多数情况,但不是所有情况。可能需要手动编辑.bib文件。
如果遇到您认为应该在代码中修复的错误,或者如果您有新功能的建议,请在此处打开新问题。请务必先检查存在的问题,尽可能具有描述性,并包括错误示例和有关如何复制错误的详细说明。
安装:
只有python 3才受支持,毕竟python 2被设置为很快退出
pip install refcliq
所有依赖项都将自动安装。
在运行大型数据集之前,最好运行一个小的.bib文件,以确保脚本的每个步骤都能正常工作(请参阅最后的常见问题解答)。
用法:
此软件包包含两个脚本:
- rc_cluster.py:计算集群并将结果保存到json文件中。
- rc_vis.py:启动预计算文件的可视化界面。
生成结果
运行带有'-h'参数的rc_cluster.py将显示帮助:
$ rc_cluster.py -h
usage: rc_cluster.py [-h] [-o OUTPUT_FILE] [--cites CITES] [-k GOOGLE_KEY]
[--graphs]
files [files ...]
positional arguments:
files List of .bib files to process
optional arguments:
-h, --help show this help message and exit
-o OUTPUT_FILE Output file to save, defaults to 'clusters.json'.
--cites CITES Minimum number of citations for an article to be included,
defaults to 2.
-k GOOGLE_KEY Google maps API key. Necessary for precise geocoding.
--graphs Saves graph drawing information for the cluster.
- 文件:要使用的.bib文件。它可以是一个文件(
a.bib
)、文件列表(a.bib b.bib
)或通配符(*.bib
)。 - -o(输出文件):要用于结果文件的名称。将自动添加"json"扩展名。如果未提供,则默认为
clusters.json
- --cites:包含文章的最小引用数。虽然这可以在交互界面中更改,但增加此数字会加快处理时间并减少内存需求。如果处理崩溃/内存不足,请增加此参数。此外,如果参数为
1
,则只有一篇文章引用的所有作品都将呈现为密集连接的簇,这可能会稍微妨碍解释,因此它默认为2
- --graphs:启用引用图的可视化在界面上。*大大增加结果文件的大小。只有少于50篇文章的群集才会显示在界面中。
- -k:google api密钥。此键对于地理编码是必需的,并且可能需要付款。请使用google.com/calculator查看谷歌的计费计算器。虽然这个包试图智能化并减少地理编码调用,但可以合理地安全地假设每个出版物的每个作者都有一个调用,作为调用数量上限的近似值。小心监控您的使用情况,此软件包按原样提供,作者无法帮助您对谷歌的任何计费问题负责。
如果没有地理编码键,则国家/地区仍会被识别并显示在导出的.tsv文件中,但地图不会显示在界面中。
可视化结果
假设结果文件名为clusters.json
:
$ rc_vis.py clusters.json
将在默认浏览器上打开一个新选项卡,其外观如下(启用地理编码):
界面分为两个面板,左边是集群可视化,右边是引文详细信息。
群集:左侧的每个框表示Louvain方法找到的一个群集。在它的"折叠"可视化中,它显示了这个集群中文章的数量,直接从这个集群中文章的可用摘要计算的内容关键字,以及引用论文的关键字,它们表示从把文件放在这一组里。关键字使用sklearn计算,仅启用tf。
左上角的两个滑块控制显示的内容,hidden的引用数少于第一个滑块的值,clusters的引用数少于第二个滑块的值。这是在不重新处理群集的情况下完成的。
单击"群集"框右上角的V形符号将"展开"该群集,如下所示(在单击第一个引文后):
扩展版本列出了该集群中的所有文章,并带有可单击的链接 激活界面右侧的面板,显示引用 引用的详细信息,以及网络中心度度量 (学位中心性 使用实现 网络x), 引用计数、文章关键字(当摘要可用时)和 引用作品的关键词。
中心性:此图像还显示网络图,突出显示列表中的第一个工作。默认情况下不包含此图(仅适用于作品少于50幅的簇),但了解中心度度量很有帮助。由于我们采用了度中心性,这个数是这个工作的现有连接数与p的数量之比。可能的连接,它表示引用此工作时引用的簇的分数。1
的中心性意味着每当引用这个集群中的任何文章时,也会引用该工作。在这种情况下,作品"Durandasserve,A.2002。只有三篇引文,但中心度为0.81
这意味着它与本组作品的81%
相关(同时被引用)。网络图中的连接以红色突出显示。
引文详细信息:此面板分为两部分:顶部的地图(如果通过提供谷歌地理编码键启用地理编码)和引文作品列表。通过单击"导出TSV文件"按钮,可以将此列表导出为以制表符分隔的值文件。如果有相关信息,还提供了每项工作的doi链接。
地理编码信息可以显示为标记或热图。为了减少有多个作者的论文对热图的影响,使用了作者数的日志。可以筛选地图上的信息,使其仅包含一年或选定年份之前的所有年份(使用累计复选框)。取消选中"适应标记"(Fit to Markers)框可防止地图更改视口(用于进行比较)。
FAQ
我不需要地理编码,我应该使用原始版本吗?或者我在原始版本中运行了我的.bibs,得到了不同的结果!
这个项目是以原始版本的分叉开始的,目的仅仅是添加作者的地址信息,我不确定是否有来自原始版本的行现在存在于这个项目中。撇开python 2和编码方法论不谈(以及整个尝试/除了误用之外),由于原始版本只考虑第一作者、年份和标题/期刊,因此它合并了不应合并的内容(同一作者在同一期刊和年份中的两篇论文)。此外,对文本处理的漫不经心的方法会无声地丢失工作,甚至丢失整个文件(.bib)。
为什么是两个剧本?
我选择将处理后的信息存储为json,而不是生成一堆静态页面,因为这样我就可以充分使用react并生成交互式可视化界面。此外,如果/当我决定更改接口时,不需要再次处理结果(取决于功能),如果您运行几百个文件,并且其中有大约一百万个作品,这将非常方便。如果有人想将处理后的结果用于其他用途,json很容易加载和解析。
我不想拿到谷歌的钥匙,有没有办法画地图?
导出的.tsv文件包含作为字段的国家信息。应该可以打破这个字段,并使用excel或google docs地图绘制功能来完成choropleth地图。将提供的国家名称与实际国家匹配有点棘手,这就是为什么我还没有实现这一点。对此,拉取请求非常受欢迎。
滑块太挑剔了!很难精确地选择一个数字。
选择滑块后,可以使用键盘中的左/右箭头进行单位增量。在手机上,那就更麻烦了。
我的文件夹中出现的
cache.json
文件是什么?为了最小化对google地理编码api的调用,脚本缓存结果,因此即使在不同的运行中也不会进行重复的调用。如果不想从零开始,在此处下载我当前的cache.json
我第一次跑步如果
找不到"en_core_web_sm"型号,则会崩溃。
只要再运行一次这个命令就可以了。它需要下载spacy的英语语言模型,但脚本不会自动刷新已安装的包。欢迎提出请求。
为什么不在地理编码中使用提名呢?
我们实际上在项目开始时使用它是因为它是免费的,但它漏掉了几个地址(如
leics,england
),它地理编码多伦多,安大略省,加拿大
作为一个点,位于不列颠哥伦比亚省维多利亚以北约50公里的森林中间。google地理编码可能会很贵,但它确实有效。为什么对导出的引文使用制表符分隔值(.tsv)而不是逗号分隔值(.csv)?
虽然csv格式的规范相当健壮,但在野外也有一些糟糕的实现。通过使用值中不存在的字符,解析更容易,而且不易出错。
为什么程度中心性而不是中间性作为原始参考?
考虑下图:
中间性中心度度量图通过给定节点的最短路径数。在这种情况下,从红色节点左侧连接到右侧节点的所有路径都将通过红色节点,因此红色节点的中间性中心度将相当高(
~0.57
),这并不是我们想要测量的。此节点的度中心度为2/8
,因为它连接到网络中可能的八个节点中的两个。这是一个相当极端的例子,可能会被louvain分成两个类(取决于共引次数)。此外,度中心度的计算速度要快得多。
引文网络-引文参考文献处理部分的时间估计错误/持续增加。
这是代码中最棘手的部分,如果给定一个非常不完整的引用(第一作者的部分名字,年份,以及与标题/期刊相关的内容,可能是doi),代码必须决定该作品是否已经在引用图上。由于图形不断增长,此搜索将逐渐变慢。健壮的字符串比较很慢,但这是一种适当匹配工作的可靠方法,即使存在doi,因为同一个工作可以与多个doi关联,或者可能有人在doi字段中写入了公司的名称。手动填充字段。还有打字错误。
如何保存显示在界面上的地图,以便在博客/纸张等中使用?
打印屏幕。是的,这是一种相当古老的方法,但它是有效的,我不需要任何复杂的实现。如果你在浏览器上"放大"或增加分辨率(在chrome上按ctrl和+键),可以使地图变大。欢迎对该功能提出请求。