刘 宇
基于开源架构的网络期刊信息采集与推送系统研究
刘 宇
刘 宇 蒋继娅
北京市科学技术情报研究所
本文提出并实现了一个基于开源架构的网络期刊论文跟踪与热点推送方法,面向科研工作者个性化的需要,有针对性地定期自动跟踪最新期刊,并对这些期刊论文进行热点分析,当发现用户关注的主题有新论文发布时可以自动推送给用户,从而主动为科研人员提供网络期刊服务。
当前,各类科技论文每年以两百多万篇的速度递增,对这些海量数据的查找与利用成为科研人员共同关注的问题。在对期刊论文的应用中普遍存在三个问题:一是期刊论文更新延迟,由于版权等原因,大多数期刊在中国知网等数字出版商网站上的出现都有几个月的滞后期,但是这些期刊在自己的官方网站上往往及时更新了最新文章的信息;二是文章查询与推送问题,各大数字出版商在数字出版物的规模上越来越庞大,虽然提供了各种便捷的查询,并给出相关查询功能,但是这些功能往往需要用户主动去搜索,缺乏个性化的热点推送功能。三是有的科研单位没有购买数据资源,这就给期刊论文的查询与利用带来了更多的不便。
针对上述现象以及科研人员往往只关注各自研究领域学术信息的基本事实,本文提出并实现了一个基于开源架构的网络期刊论文跟踪与热点推送方法,面向科研工作者个性化的需要,有针对性地定期自动跟踪最新期刊,并对这些期刊论文进行热点分析,当发现用户关注的主题有新论文发布时可以自动推送给用户,从而主动为科研人员提供网络期刊服务。科研人员可以借助本文所提方法,节省在各大数据库或者期刊官网上进行文章查找与检索的时间。
本文提出的网络期刊论文自动跟踪与热点推送系统,主要研究思路是首先确定采集站点,然后有针对性地进行数据采集,生成知识库并进行热点分析,最终发布出分析后的数据供科技工作者参考。实现技术上采用了基于java的开源架构,这些开源架构技术成熟,调用简单的接口即可完成复杂的数据采集与数据分析,适合科研工作者作为科研辅助工具使用。本文采用的开源框架有HttpClinet、HTMLParser、IKAnalyzer。
HttpClinet
JDK 的 java net包提供的HttpURLConnection技术,早期很多应用系统通过该jar包实现数据采集,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。近年来,科研应用开发人员开始热衷HttpClient技术实现数据采集。HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并可支持 HTTP 协议最新的版本和建议。
HTTP 协议是 Internet 上使用得最多、最重要的协议,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。HttpClient 已经应用在很多的项目中,比如Apache Jakarta 上很著名的另外两个开源项目 Cactus和 HTMLUnit 都使用了 HttpClient。现在HttpClient最新版本为 HttpClient 4.2 (GA)。
HTMLParser
HTMLParser是一个纯java的html解析库,它不依赖于其它的java库文件,主要用于改造或提取html,是目前应用得最广泛的html解析和分析的工具,现在htmlparser最新版本为2.0。HTMLParser有信息提取和信息转换两大主要功能。信息提取功能包括五个子功能:文本信息抽取,例如对HTML进行有效信息搜索; 链接提取,用于自动给页面的链接文本加上链接的标签;资源提取,例如对一些图片、声音的资源的处理;链接检查,用于检查HTML中的链接是否有效;页面内容的监控。信息转换功能包括五个子功能:链接重写,用于修改页面中的所有超链接;网页内容拷贝,用于将网页内容保存到本地;内容检验,可以用来过滤网页上一些字词;HTML信息清洗,把HTML信息格式化;转成XML格式数据。
IKAnalyzer介绍
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。由于开源软件多来源于国外,因此分词器对中文分词一般都是单字分词,分词的效果不好。开源项目作者林良益等人写的IKAnalyzer应该是最好的Lucene中文分词器之一,而且随着Lucene的版本更新而不断更新,目前已更新到IKAnalyzer 2012版本。最初,它是以开源项目Luence为应用主体,结合词典分词和文法分析算法的中文分词组件。从3.0版本开始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。IKAnalyzer采用了特有的“正向迭代最细粒度切分算法”,具有60万字/秒的高速处理能力。并采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
系统设计与实现
系统主要由两部分组成,一个是信息抓取,另外一个是热点分析。信息抓取可以根据科研人员的兴趣点,设计抓取源网站,并根据这些源网站的网页设计技术,分析网站页面组成结构,获取网站抓取模式;然后,利用HTMLParser 和HttpClinet对网站进行信息抓取,并存储到数据库中;最后,根据数据库中抓取的期刊论文相关信息分析得到热点信息,系统工作流程如图1所示。
图1 网络期刊自动跟踪与热点推送系统工作流程
数据采集
本文使用Tomcat6.0作为服务器,JDK1.6 MyEclipse10作为开发环境,数据采集利用HttpClinet实现,主要代码如图2所示。
图2 利用HttpClinet实现数据采集主要代码
给getUrlContent传入网站地址及网站编码方式,即可得到该网页的源代码,通过HTMLParser可以对网站源码进行解析。本文以某网站为例,获取本期刊最新的文章信息,实现关键代码如图3所示。
图3 获取特定期刊最新文章信息关键代码
每个网站需要分析其页面制作规律,然后通过AndFilter方法解析得到指定标签里面的内容,然后将获取的文章标题存储到数据库中,根据实际需要,还可以将文章的作者以及摘要等信息也进行采集,本文仅以采集文章标题为例。
热点分析
科研人员可以根据自己的关注领域,设置采集站点,通过上述方法完成原始信息的采集,并存储到数据库中,然后即可通过IKAnalyzer完成中文分词,本文通过引用开源jar包的方法即可实现文章标题的分词,实现关键代码如图4所示。
图4 实现文章标题分词的关键代码
系统将切分的词显示出来,并且计算出本次处理信息中该词出现的频率,科研人员可以通过人工筛选鉴别,选择热词存储到热词库,并根据人工经验,实现热词的分类。这些热词将会作为系统的知识积累,通过系统提供的热词检索功能,即可在系统采集的论文中快速找到所有相关文章,从而分析得到当前论文热点以及出现频度。
信息推送
信息推送是指信息源主动地将信息传送给用户,是信息服务公司依据一定的技术标准和协议,根据用户的需要自动从网上的信息资源中选择用户感兴趣的数据,并定时推送给用户计算机的数据发布技术。本系统通过注册功能,为科研人员实现信息定制,通过科研人员关注的信息,建立个人模型,包括用户的兴趣爱好、关注信息资源类别、关注学科等,由推送系统按照用户模型定期的搜索,并将相关信息以邮件的方式推送给用户。比起用户自助式的网上搜索信息,推送服务的最大特点就是能实现用户一次输入请求而定期地、不断地接收到最新的信息,做到主动服务。
本文以假设某科研工作者设置了现代图书情报技术杂志作为其关注期刊,并选择了关注语义这个热点,那么本系统会定期采集该杂志网站上公布的期刊目录,例如,系统采集近年来论文信息442条,将这些数据存储到数据库,进行热点分析后,得到出现频率较高的词如下:语义、云、挖掘、抽取、专利、知识库、识别、搜索引擎、opac、标签、模式、元、检索系统、认证、cssci、采集、folksonomy、生物医学、k-means、舆情、主题标引、抓取。系统会将该科研工作者关注的语义相关论文列表推送出去,如图5所示。
图5 相关论文列表推送示例图
本文完成了期刊论文信息的自动采集与热点分析,完全基于开源架构实现,二次开发仅仅需要对开源项目进行适当调整,本文给出了使用开源架构的关键代码。通过引入这几个开源项目发布的jar包,并利用本文公开的应用代码,即可完成信息采集以及热点分析。通过本系统,能够实现期刊或者其他网络论文的信息采集、信息过滤、热词分析、热词检索、信息推送功能,能够通过当前热点论文的变化,跟踪他人研究成果。此外,本系统进行扩展后,还能用在其他情报分析系统中。
10.3969/j.issn.1001-8972.2015.01.026