学科资源聚合与网络导航有着基本的结构范式与逻辑,为了更好地阐释相关内容,下面以Citeseer x 系统为例,概貌性地介绍学科信息资源聚合以及网络导航系统的结构和主要模块,以增进读者对该研究主题的整体认识与理解。Citeseer x 原名Citeseer,是一个基于互联网的科学文献数字图书馆和搜索引擎,可以为用户提供学术论文的抓取以及检索服务,其中的文献来源以计算机和信息科学为主。该系统自1997年研建以来,提供的免费文档已超过600万份,每天的查询请求超过150万次。随着系统的不断改进,Citeseer优化并设计了新的数据存储与检索系统,并更名为Citeseer x 。相比于arixiv、Google Scholar等其他数据库,Citeseer x 不仅可以提供文献全文下载服务,还提供了文献的引文信息、共引信息(co-citation)以及历史版本等信息。
Citeseer x 的系统和架构如图1-1所示,总的来说,系统可分为三层。
(1)存储层:存储层负责管理和访问Citeseer x 本地存储的数据对象。数据对象由数字对象管理系统(digital object management system)维护。每个数字对象都有相应的包括对象元数据的描述文件。解析后的文档作为原始文本文件存储在本地磁盘中,并由数字对象记录(digital object records)提供链接。
(2)应用层:应用层是Citeseer x 多个功能模块和服务器的集合。
·命名服务器:Citeseer x 高度分布式的架构使系统能够高效地利用网络中的多台服务器。命名服务器将查询请求转发到特定的Citeseer x 服务器,从而为实现服务器间的负载平衡,以及为重新定向查询请求到最近的服务器提供了有效的技术支持。
·日志服务器:Citeseer x 利用单独的日志服务以聚合并管理系统日志。系统的每个工作模块均部署了日志代理(logging agent),其将日志事件发送到日志服务器。
图1-1 Citeseer x 结构
·爬虫服务器:爬虫进程负责从网络上抓取文档并存储到文档存储库中。被识别为计算机科学领域的文档均将转发到存储访问和管理界面模块(Storage Access and Management Interface)进行永久保存。
·存储访问和管理接口:该模块提供了一个多用途的存储服务器接口。首先,提供了对存储服务器的访问,为直接访问存储库/索引提供了数据访问标准。其次,提供的访问控制机制(access control mechanism)调节了对已存储信息的访问。最后,作为数字资源位置解析器,提供了内部资源标识与实际存储地址间的映射。这使得Citeseer x 可以灵活地实施其分布式存储策略,也进一步为跨服务器的数据迁移和负载平衡提供了优势。
·应用服务器:应用服务器为Web用户界面和外部应用程序提供服务访问入口。应用服务器为第三方软件模块和本机模块提供了托管服务。
(3)用户接口层:该层作为用户接口与应用程序模块间的网关,为Citeseer x 的Web界面提供了抽象。该层使Citeseer x 可以灵活地更新应用程序的逻辑,而无须担心用户接口以及为用户提供个性化的服务。
在前端,所有的用户请求通过Web服务(Web service)进行处理,该服务器主要包括三个数据服务器:索引服务器提供搜索请求处理、存储服务器提供缓存的全文文档、数据服务器通过元数据提供检索服务。在后端,网络爬虫从互联网上抓取收集PDF等格式文件,并传递给数据提取模块(Application Serves),由该模块提取并分类文本、对文档进行解析以及提取元数据,如标题、作者和摘要信息等。存储模块(Storage Serves)将所有元数据写入数据库,PDF文件用文档ID重命名并保存到存储库服务器,最后,更新索引数据。
数据提取主要涉及以下部分:
·文档类型判断。对于爬虫爬取到的文档,需要判断其是否为学术性论文。Citeseer x 改进了以往的算法,利用文档结构特征进行分类,主要包括:文档的特征,如文件大小和页数;文本特征,如文档长度(以字符串、单词和行数表示)、每页的平均单词量及行数、引用比(引用和引用提及的数目除以文档中标记的总数)、空格比(空格字符的百分比)、符号比(非字母数字字符,指的是字母数字字符以外的空格、百分号、下划线、竖线、冒号、分号等标点符号字符占字符的百分比)、长度比(最短行的长度除以最长行数)、以大写字母开头和以非字母数字字符开头的行数;特定章节的特征,包括文档是否有章节标题,如摘要、引言、结论、参考文献或参考书目等。新的分类方法在准确率以及召回率上均有明显提升。此外,Citeseer x 还在努力改进自己的算法,使其可以在海报、书籍、幻灯片以及简历等方面有更好的表现。
·元数据提取。元数据提取指的是从pdf文本中提取元数据的相关字段,包括标题、作者、地址、注释、电子邮件、日期、摘要、电话、关键词、学位、出版编号和页面信息等,该步骤是对文档进行索引和聚类的先决条件。Citeseer x 采用了很多开源工具来减少软件开发的工作量,同时也进行了模型改进,提高了准确率。
·引文提取。Citeseer x 采用HMM元数据提取器与ParsCit进行引文提取。HMM元数据提取器是基于隐马尔可夫模型的引文解析工具,而ParsCit是基于条件随机场(CRF)模型的引文提取工具。其中,ParsCit具体实现过程如下:首先,ParsCit会寻找文档中带有“参考文献”“参考书目”等关键词语的章节,并判断为引文的起点,进行后向遍历,如果遇到“附录”等关键词,则判断引文结束。接下来,ParsCit会匹配段落的序号字符串并计算匹配数目。为此,Citeseer x 构建了许多表示序号的字符串,并寻找最有可能的匹配。若论文没有序号字符串,则根据其他特征进行判断,如作者姓名、分隔符等来确定每一篇引文的起始和结束位置。根据上述工作,ParsCit会将引文格式进行标准化处理,更新为Citeseer x 使用的标准格式,以方便其后的分析与处理。而且ParsCit还会识别正文中的引用字段,通过引用标记进行提取。
·重复文档检索与删除。由于Citeseer x 的文档通过爬虫爬取而来,文档的重复不可避免。重复文档可以分为两类:一类是完全重复,对于此类重复文件,已经有很好的处理算法,只存储一份即可;另一类是部分重复,例如预印本和最终版本。对此,Citeseer x 使用key-mapping方法进行处理,即如果已经在前面的步骤提取元数据,考虑到数据的不完整,可以通过作者和姓名进行匹配,若不同,则将其作为新关键词加以存储,并构建新的文档集;若相同,则将该文档存入已有的关键词文档集。
·作者消歧。由于Citeseer x 允许用户通过作者字段进行检索,因此必须保证该字段可以准确匹配到相应作者的论文。不过,由于一人多名以及一名多人的现象普遍存在,作者姓名消歧难度很大。对此,Citeseer x 将姓氏相同且名字首字母相同的作者分入一组并进行对比,随之,Citeseer x 构建了更多特征以辅助判断,包括两个作者名字的相似性、两篇论文的作者顺序、第一作者电子邮件之间的相似度、两篇论文第一作者所属机构的相似性、两篇论文作者名之间的相似性、两篇论文标题之间的相似性等,并通过随机森林模型综合利用这些特征,以判断是否为同一作者。
此外,Citeseer x 还提供了许多其他的功能,以帮助用户更好地检索文献,如表提取功能,将论文中的表格直接提取出来,并提取表名、表头等关键信息;算法提取功能,将论文中的伪代码提取出来,并构建索引等。