【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)

Metaknowledge文献数据分析基础

    • 5.1 数据分析流程
    • 5.2 功能库导入
    • 5.3 数据导入
    • 5.4 数据异常处理
    • 5.5 数据去重
    • 5.6 单记录、引文及记录集合分析
      • 5.6.1 Record 对象
      • 5.6.2 Citation对象
      • 5.6.3 RecordCollection对象

手动反爬虫: 原博地址 https://blog.csdn.net/lys_828/article/details/124546346

 知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息
metaknowledge库目前可以从WOS、PubMed、Scopus和ProQuest Dissertation和Thesis中读取纯文本文件,并处理国家科学基金会(NSF)和加拿大社会科学与人文研究理事会(SSHRC)、加拿大国家工程与研究理事会(NSERC)以及加拿大卫生研究院(CIHR)的基金数据文件。

5.1 数据分析流程

metaknowledge 文献信息分析及可视化展示分析流程如图5. 1所示。具体可分为以下几步:(1) 数据搜集及清洗(引文数据和基金数据)。(2)统计分析、文本分析(包括主题分析和突发检测等)、网络分析(包括共作者、共被引、文献耦合等)。(3)数据交互式可视化(交互式图表)。(4)数据导出及后处理(与其他软件的结合使用。比如R、VOSviewer)。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第1张图片

5.2 功能库导入

打开Jupyter Notebooks,新建一个python3项目,项目中的第一个代码单元通常导入代码运行中要使用的库。使用import关键字(相当于R中的library()命令)将功能库加载到Python中,方便后续对其功能的调用。为了简化代码,可以将功能库进行缩写导入。比如在界面中输入import metaknowledge as mk、import pandas as pd等等。其他已经安装的工具库的加载方式类似。
在这里插入图片描述

5.3 数据导入

读者可以将单个或多个txt文件加载到metaknowledge中。例如,下面的代码扫描一个目录和单个文件,数据来自3.1章节从Web of Science下载的纯文本文件。数据存储在电脑中的路径地址为:D:\python科学计量可视化\数据\Demo data\Python-Wos。
查看当前文件夹下的文件情况,利用os库中的listdir()方法,代码及运行结果如下,除了文献数据,还有一个pptx文件数据。
在这里插入图片描述
读入单个txt文件
在这里插入图片描述
读入整个目录中的多个txt文件,此方法会自动读入以txt后缀结束的文件,虽然文件夹中包含了其他类型格式的文件,不会影响最终的读入结果。
在这里插入图片描述
对于读取多文件数据(数据量较多),为了避免系统重复进行数据的读入操作,可以利用缓存机制保存第一次读取文件的操作,代码执行如下。
在这里插入图片描述
缓存机制会在读取的数据量越多越显示出性能优势,再次进行加载文件时候就不需要等待长时间的文件数据读入,建议对于整个文件夹数据读入时候添加缓存机制,代码运行后,可以在数据文件夹中看到自动生成的缓冲文件。

5.4 数据异常处理

学术数据库(如Web of Science)或基金管理机构提供的原始数据偶尔也会出现问题,metaknowledge中设计了很多异常处理方法,以保证数据读取工作的正常进行,比如:BadWOSFile() 、BadWOSRecord()、UnknownFile()等。当解析过程中发现错误时,数据将被标记为“bad”,其所在位置行号将被记录,metaknowledge将尝试查找文件中的下一个条目。如果失败,文档的其余部分将被标记为“bad”。但有时数据太畸形而无法解析时(往往只有当数据库文件以某种方式手动更改时,才会发生这种情况),读者可以使用badEntries()方法检查记录,也可以使用dropBadEntries()方法删除记录。
在这里插入图片描述

5.5 数据去重

在创建RecordCollections和GrantCollections时,metaknowledge会自动查找里面的记录文献,对于多来源的isi文件(默认)进行识别,当遇到相同的文献记录时,会将相同的数据自动合并为一条数据,以达到去重的效果。比如:我们可以尝试把文件夹中的txt文件复制几份后,重新进行数据的读取,核实是否能够进行自动去重。代码执行如下,其中对前2000条文献数据进行了重复。
在这里插入图片描述
然后再次读取当前文件夹下的数据,进行文献计数,代码输出结果如下。输出结果显示核实去除重复功能无误。
在这里插入图片描述

5.6 单记录、引文及记录集合分析

在Python中,一切皆对象(单词为:object),因此metaknowledge生成的一切也都是对象。在metaknowledge库中有三个主要的对象,分别是:Record object、RecordCollection object和Citation object。

5.6.1 Record 对象

Record是包含单个文献记录的对象,例如期刊文章、书籍或会议记录。它们是RecordCollection包含的内容,即可以理解为RecordCollection是由一个个Record数据组成的集合。

(1)获取数据

如要想随机查看单个文献记录,可以使用peek()方法。随机取值是指经过每次运行整个文件程序后会随机取出,并不是每次调用该方法,程序就输出一条随机的数据。如果是只进行一次数据的读入,之后就算是多次使用peek()方法,也是相同的数据输出,代码及输出结果如下。这里加载的是WOS数据,对应取出一条的记录输出对象为WOSRecord object。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第2张图片
如果要获取具体某一条数据或者某一区间范围数据,可以利用循环获取全部的数据,然后利用索引和切片的方式取出。比如获取第1条数据,以及1-10条数据,代码及输出结果如下。仔细对比可以发现实际上peek()方法取出的随机数据,就是每次加载读入数据集后的第一条数据。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第3张图片
(2)Record对象常用操作
获取文献记录的标记。这里导入的是WOS文献,因此每一条文献都有其独一无二的标识,在Record对象中一共有三个方法是可以获得文献的标记,代码及输出如下。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第4张图片
获取文献记录的状态。一共有两个方法bad和error,都是对文献的状态进行判断。
在这里插入图片描述
获取当前文献记录的来源地址、来源文件所在行数与文献编码形式。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第5张图片
文献记录的数据形式类似python基础语法中介绍的字典结构。包含了items,keys和values的方法。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第6张图片
稍微有点区别的在于,直接调用这三种方法,还无法直接获得对应的数据,需要进一步通过循环获取数据。代码及输出结果如下,由于输出内容较多,下图只显示部分输出。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第7张图片
获取记录中的详细信息。借助于字典取值的方式,凭借着key信息获取value,其中get方法只能传入单个key,subDict方法可以传入多个key组成的列表。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第8张图片
关于key中字段信息属于WOS中的字段标识,可以通过访问Web of Science 所有数据库中的“帮助”,进入Biological Abstracts字段标识页 。如果不打开帮助网页,也可以通过getAltName方法获取每个标签的含义,比如查询AF和AU的含义。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第9张图片
除了使用key的信息访问value,还有三个个快速访问的方式,从而可以快速获取文献的标题,作者,作者信息。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第10张图片
文献的导出。可以将txt文本数据转化为bib格式的数据,便于与其他软件进行交互,如下只截取部分输出。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第11张图片
也可以直接将单条或者多条记录另存为txt文件。只需要指定文件保存的名称即可,比如这里就是在ipynb文件所在的路径下生成demo.txt文件。
在这里插入图片描述
单个记录中所包含的具体信息,我们可以使用dir(Object)方法查询其所包含的功能,这里我们将随机生成的单个记录对象命名为R,即可以通过dir®查看全部功能。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第12张图片
下表即为Record对象常用方法的汇总。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第13张图片

5.6.2 Citation对象

Citation也是一个对象,包含了对引文解析的所有结果,我们可以从Record中创建Citation对象。上表中的最后两个方法就是针对于Citation对象设置,也可以使用dir()方法对该对象中的方法进行输出。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第14张图片
按照输出的内容可以对常用的方法进行分类。其中涉及到单输出的方法比如输出文献的DOI、文献发表的期刊/期刊全称、作者、年份等信息。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第15张图片
涉及到多输出内容的方法。其中original方法输出的结果就是WOS引文数据最完整的样式,剩下的几个方法都是基于此进行部分内容的截取。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第16张图片
而具体截取的方式针对于文献来源的不同分为两种,一种是Scopus数据,另一种是WOS数据,这里使用的后者进行演示,可以直接把对应引文的变量转化为字符串数据,使用正则匹配wosCiteRegex方法获取相对应的数据。输出的结果都是在列表中的第一个元祖中,通过索引就可以获取数据。
在这里插入图片描述
还有一些操作是针对于引文数据状态的查询,有些在Record对象中也存在,但是针对Citation对象多了两个查询状态的方式。isAnonymous方法就是进行判断引文的作者中是否用’ [ANONYMOUS]’表示,如果是就返回True,否则就返回False,而isJournal方法是如果判断引文的期刊是在WOS期刊简写列表中,就返回True,否则返回False。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第17张图片
需要注意最后isJournal()返回的结果是test,原因就在于在之前测试过程中,指定了addToDB的第一个参数为test,从而影响了输出结果。输出结果表示查询的当前引文是处在指定的名为test的数据库中。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第18张图片
对于引文数据,还有一个很重要的操作就是获取当前引文的参考文献,可以通过getCitations方法获取,只截取部分输出。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第19张图片
返回的数据类型属于python基础中介绍的字典。对应的方法就是字典数据的基础操作。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第20张图片
和Record对象类似,把Citation对象中常用的操作方法进行总结如下表。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第21张图片

5.6.3 RecordCollection对象

RecordCollection是metaknowledge使用最多的对象。它可以从每个文件中识别单个Record(例如期刊论文,基金数据等),从而进行分离,标记、每一个Record数据都会被分配一个唯一的id,并添加到RecordCollection中。比如:我们想知道整个记录集中具体包含了哪些记录,可以;利用for循环对创建的RecordCollection进行遍历,从而得到每一个Record,进一步也可以通过createCitation方法创建Citation。

由于RecordCollection创建的是整个数据集合,其中数据量较大,往往读者并不需要输出全部结果,只想按照某些特定的要求来进行数据处理,比如我们要筛选标题以首字母“I”开头的记录。
【科学文献计量】Metaknowledge文献数据分析基础(Record、Citation和RecordCollection对象介绍)_第22张图片
或者也可以查询标题上出现“patient”的WOS记录。(类似的操作也可以提取你所需要其他字段标识中存在的信息等)。
在这里插入图片描述
RecordCollection对象中有一个快速获取指定年区间的文献数据的方式,借助此方法可以大幅度提高文献分析的效率。比如这里提取2015-2018年的文献,如果需要再进行相关字段标识数据信息,可以结合前面的循环条件判断语句。
在这里插入图片描述
以上就是详细介绍了metaknowledge库中核心的三个对象。三者之间的关系:Record对象是基础,可以转化为Citation对象,可将所有的Record对象收集成RecordCollection对象。后续的操作基本上都是在RecordCollection对象层面上进行,但是最底层的运算操作还是针对Record对象和Citation对象,因此理解三者之间的关系,以及掌握常用的方法是相当重要。

你可能感兴趣的:(python科学计量数据可视化,文献计量,metaknowledge,引文数据,vos,数据分析)