劉 宇
基于開源架構(gòu)的網(wǎng)絡(luò)期刊信息采集與推送系統(tǒng)研究
劉 宇
劉 宇 蔣繼婭
北京市科學(xué)技術(shù)情報(bào)研究所
本文提出并實(shí)現(xiàn)了一個(gè)基于開源架構(gòu)的網(wǎng)絡(luò)期刊論文跟蹤與熱點(diǎn)推送方法,面向科研工作者個(gè)性化的需要,有針對性地定期自動跟蹤最新期刊,并對這些期刊論文進(jìn)行熱點(diǎn)分析,當(dāng)發(fā)現(xiàn)用戶關(guān)注的主題有新論文發(fā)布時(shí)可以自動推送給用戶,從而主動為科研人員提供網(wǎng)絡(luò)期刊服務(wù)。
當(dāng)前,各類科技論文每年以兩百多萬篇的速度遞增,對這些海量數(shù)據(jù)的查找與利用成為科研人員共同關(guān)注的問題。在對期刊論文的應(yīng)用中普遍存在三個(gè)問題:一是期刊論文更新延遲,由于版權(quán)等原因,大多數(shù)期刊在中國知網(wǎng)等數(shù)字出版商網(wǎng)站上的出現(xiàn)都有幾個(gè)月的滯后期,但是這些期刊在自己的官方網(wǎng)站上往往及時(shí)更新了最新文章的信息;二是文章查詢與推送問題,各大數(shù)字出版商在數(shù)字出版物的規(guī)模上越來越龐大,雖然提供了各種便捷的查詢,并給出相關(guān)查詢功能,但是這些功能往往需要用戶主動去搜索,缺乏個(gè)性化的熱點(diǎn)推送功能。三是有的科研單位沒有購買數(shù)據(jù)資源,這就給期刊論文的查詢與利用帶來了更多的不便。
針對上述現(xiàn)象以及科研人員往往只關(guān)注各自研究領(lǐng)域?qū)W術(shù)信息的基本事實(shí),本文提出并實(shí)現(xiàn)了一個(gè)基于開源架構(gòu)的網(wǎng)絡(luò)期刊論文跟蹤與熱點(diǎn)推送方法,面向科研工作者個(gè)性化的需要,有針對性地定期自動跟蹤最新期刊,并對這些期刊論文進(jìn)行熱點(diǎn)分析,當(dāng)發(fā)現(xiàn)用戶關(guān)注的主題有新論文發(fā)布時(shí)可以自動推送給用戶,從而主動為科研人員提供網(wǎng)絡(luò)期刊服務(wù)??蒲腥藛T可以借助本文所提方法,節(jié)省在各大數(shù)據(jù)庫或者期刊官網(wǎng)上進(jìn)行文章查找與檢索的時(shí)間。
本文提出的網(wǎng)絡(luò)期刊論文自動跟蹤與熱點(diǎn)推送系統(tǒng),主要研究思路是首先確定采集站點(diǎn),然后有針對性地進(jìn)行數(shù)據(jù)采集,生成知識庫并進(jìn)行熱點(diǎn)分析,最終發(fā)布出分析后的數(shù)據(jù)供科技工作者參考。實(shí)現(xiàn)技術(shù)上采用了基于java的開源架構(gòu),這些開源架構(gòu)技術(shù)成熟,調(diào)用簡單的接口即可完成復(fù)雜的數(shù)據(jù)采集與數(shù)據(jù)分析,適合科研工作者作為科研輔助工具使用。本文采用的開源框架有HttpClinet、HTMLParser、IKAnalyzer。
HttpClinet
JDK 的 java net包提供的HttpURLConnection技術(shù),早期很多應(yīng)用系統(tǒng)通過該jar包實(shí)現(xiàn)數(shù)據(jù)采集,但是對于大部分應(yīng)用程序來說,JDK 庫本身提供的功能還不夠豐富和靈活。近年來,科研應(yīng)用開發(fā)人員開始熱衷HttpClient技術(shù)實(shí)現(xiàn)數(shù)據(jù)采集。HttpClient 是 Apache Jakarta Common 下的子項(xiàng)目,可以用來提供高效的、最新的、功能豐富的支持 HTTP 協(xié)議的客戶端編程工具包,并可支持 HTTP 協(xié)議最新的版本和建議。
HTTP 協(xié)議是 Internet 上使用得最多、最重要的協(xié)議,越來越多的 Java 應(yīng)用程序需要直接通過 HTTP 協(xié)議來訪問網(wǎng)絡(luò)資源。HttpClient 已經(jīng)應(yīng)用在很多的項(xiàng)目中,比如Apache Jakarta 上很著名的另外兩個(gè)開源項(xiàng)目 Cactus和 HTMLUnit 都使用了 HttpClient?,F(xiàn)在HttpClient最新版本為 HttpClient 4.2 (GA)。
HTMLParser
HTMLParser是一個(gè)純java的html解析庫,它不依賴于其它的java庫文件,主要用于改造或提取html,是目前應(yīng)用得最廣泛的html解析和分析的工具,現(xiàn)在htmlparser最新版本為2.0。HTMLParser有信息提取和信息轉(zhuǎn)換兩大主要功能。信息提取功能包括五個(gè)子功能:文本信息抽取,例如對HTML進(jìn)行有效信息搜索; 鏈接提取,用于自動給頁面的鏈接文本加上鏈接的標(biāo)簽;資源提取,例如對一些圖片、聲音的資源的處理;鏈接檢查,用于檢查HTML中的鏈接是否有效;頁面內(nèi)容的監(jiān)控。信息轉(zhuǎn)換功能包括五個(gè)子功能:鏈接重寫,用于修改頁面中的所有超鏈接;網(wǎng)頁內(nèi)容拷貝,用于將網(wǎng)頁內(nèi)容保存到本地;內(nèi)容檢驗(yàn),可以用來過濾網(wǎng)頁上一些字詞;HTML信息清洗,把HTML信息格式化;轉(zhuǎn)成XML格式數(shù)據(jù)。
IKAnalyzer介紹
IKAnalyzer是一個(gè)開源的,基于java語言開發(fā)的輕量級的中文分詞工具包。由于開源軟件多來源于國外,因此分詞器對中文分詞一般都是單字分詞,分詞的效果不好。開源項(xiàng)目作者林良益等人寫的IKAnalyzer應(yīng)該是最好的Lucene中文分詞器之一,而且隨著Lucene的版本更新而不斷更新,目前已更新到IKAnalyzer 2012版本。最初,它是以開源項(xiàng)目Luence為應(yīng)用主體,結(jié)合詞典分詞和文法分析算法的中文分詞組件。從3.0版本開始,IK發(fā)展為面向Java的公用分詞組件,獨(dú)立于Lucene項(xiàng)目,同時(shí)提供了對Lucene的默認(rèn)優(yōu)化實(shí)現(xiàn)。IKAnalyzer采用了特有的“正向迭代最細(xì)粒度切分算法”,具有60萬字/秒的高速處理能力。并采用了多子處理器分析模式,支持:英文字母(IP地址、Email、URL)、數(shù)字(日期,常用中文數(shù)量詞,羅馬數(shù)字,科學(xué)計(jì)數(shù)法),中文詞匯(姓名、地名處理)等分詞處理。
系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
系統(tǒng)主要由兩部分組成,一個(gè)是信息抓取,另外一個(gè)是熱點(diǎn)分析。信息抓取可以根據(jù)科研人員的興趣點(diǎn),設(shè)計(jì)抓取源網(wǎng)站,并根據(jù)這些源網(wǎng)站的網(wǎng)頁設(shè)計(jì)技術(shù),分析網(wǎng)站頁面組成結(jié)構(gòu),獲取網(wǎng)站抓取模式;然后,利用HTMLParser 和HttpClinet對網(wǎng)站進(jìn)行信息抓取,并存儲到數(shù)據(jù)庫中;最后,根據(jù)數(shù)據(jù)庫中抓取的期刊論文相關(guān)信息分析得到熱點(diǎn)信息,系統(tǒng)工作流程如圖1所示。
圖1 網(wǎng)絡(luò)期刊自動跟蹤與熱點(diǎn)推送系統(tǒng)工作流程
數(shù)據(jù)采集
本文使用Tomcat6.0作為服務(wù)器,JDK1.6 MyEclipse10作為開發(fā)環(huán)境,數(shù)據(jù)采集利用HttpClinet實(shí)現(xiàn),主要代碼如圖2所示。
圖2 利用HttpClinet實(shí)現(xiàn)數(shù)據(jù)采集主要代碼
給getUrlContent傳入網(wǎng)站地址及網(wǎng)站編碼方式,即可得到該網(wǎng)頁的源代碼,通過HTMLParser可以對網(wǎng)站源碼進(jìn)行解析。本文以某網(wǎng)站為例,獲取本期刊最新的文章信息,實(shí)現(xiàn)關(guān)鍵代碼如圖3所示。
圖3 獲取特定期刊最新文章信息關(guān)鍵代碼
每個(gè)網(wǎng)站需要分析其頁面制作規(guī)律,然后通過AndFilter方法解析得到指定標(biāo)簽里面的內(nèi)容,然后將獲取的文章標(biāo)題存儲到數(shù)據(jù)庫中,根據(jù)實(shí)際需要,還可以將文章的作者以及摘要等信息也進(jìn)行采集,本文僅以采集文章標(biāo)題為例。
熱點(diǎn)分析
科研人員可以根據(jù)自己的關(guān)注領(lǐng)域,設(shè)置采集站點(diǎn),通過上述方法完成原始信息的采集,并存儲到數(shù)據(jù)庫中,然后即可通過IKAnalyzer完成中文分詞,本文通過引用開源jar包的方法即可實(shí)現(xiàn)文章標(biāo)題的分詞,實(shí)現(xiàn)關(guān)鍵代碼如圖4所示。
圖4 實(shí)現(xiàn)文章標(biāo)題分詞的關(guān)鍵代碼
系統(tǒng)將切分的詞顯示出來,并且計(jì)算出本次處理信息中該詞出現(xiàn)的頻率,科研人員可以通過人工篩選鑒別,選擇熱詞存儲到熱詞庫,并根據(jù)人工經(jīng)驗(yàn),實(shí)現(xiàn)熱詞的分類。這些熱詞將會作為系統(tǒng)的知識積累,通過系統(tǒng)提供的熱詞檢索功能,即可在系統(tǒng)采集的論文中快速找到所有相關(guān)文章,從而分析得到當(dāng)前論文熱點(diǎn)以及出現(xiàn)頻度。
信息推送
信息推送是指信息源主動地將信息傳送給用戶,是信息服務(wù)公司依據(jù)一定的技術(shù)標(biāo)準(zhǔn)和協(xié)議,根據(jù)用戶的需要自動從網(wǎng)上的信息資源中選擇用戶感興趣的數(shù)據(jù),并定時(shí)推送給用戶計(jì)算機(jī)的數(shù)據(jù)發(fā)布技術(shù)。本系統(tǒng)通過注冊功能,為科研人員實(shí)現(xiàn)信息定制,通過科研人員關(guān)注的信息,建立個(gè)人模型,包括用戶的興趣愛好、關(guān)注信息資源類別、關(guān)注學(xué)科等,由推送系統(tǒng)按照用戶模型定期的搜索,并將相關(guān)信息以郵件的方式推送給用戶。比起用戶自助式的網(wǎng)上搜索信息,推送服務(wù)的最大特點(diǎn)就是能實(shí)現(xiàn)用戶一次輸入請求而定期地、不斷地接收到最新的信息,做到主動服務(wù)。
本文以假設(shè)某科研工作者設(shè)置了現(xiàn)代圖書情報(bào)技術(shù)雜志作為其關(guān)注期刊,并選擇了關(guān)注語義這個(gè)熱點(diǎn),那么本系統(tǒng)會定期采集該雜志網(wǎng)站上公布的期刊目錄,例如,系統(tǒng)采集近年來論文信息442條,將這些數(shù)據(jù)存儲到數(shù)據(jù)庫,進(jìn)行熱點(diǎn)分析后,得到出現(xiàn)頻率較高的詞如下:語義、云、挖掘、抽取、專利、知識庫、識別、搜索引擎、opac、標(biāo)簽、模式、元、檢索系統(tǒng)、認(rèn)證、cssci、采集、folksonomy、生物醫(yī)學(xué)、k-means、輿情、主題標(biāo)引、抓取。系統(tǒng)會將該科研工作者關(guān)注的語義相關(guān)論文列表推送出去,如圖5所示。
圖5 相關(guān)論文列表推送示例圖
本文完成了期刊論文信息的自動采集與熱點(diǎn)分析,完全基于開源架構(gòu)實(shí)現(xiàn),二次開發(fā)僅僅需要對開源項(xiàng)目進(jìn)行適當(dāng)調(diào)整,本文給出了使用開源架構(gòu)的關(guān)鍵代碼。通過引入這幾個(gè)開源項(xiàng)目發(fā)布的jar包,并利用本文公開的應(yīng)用代碼,即可完成信息采集以及熱點(diǎn)分析。通過本系統(tǒng),能夠?qū)崿F(xiàn)期刊或者其他網(wǎng)絡(luò)論文的信息采集、信息過濾、熱詞分析、熱詞檢索、信息推送功能,能夠通過當(dāng)前熱點(diǎn)論文的變化,跟蹤他人研究成果。此外,本系統(tǒng)進(jìn)行擴(kuò)展后,還能用在其他情報(bào)分析系統(tǒng)中。
10.3969/j.issn.1001-8972.2015.01.026