劉 宇
基于開源架構的網絡期刊信息采集與推送系統研究
劉 宇
劉 宇 蔣繼婭
北京市科學技術情報研究所
本文提出并實現了一個基于開源架構的網絡期刊論文跟蹤與熱點推送方法,面向科研工作者個性化的需要,有針對性地定期自動跟蹤最新期刊,并對這些期刊論文進行熱點分析,當發現用戶關注的主題有新論文發布時可以自動推送給用戶,從而主動為科研人員提供網絡期刊服務。
當前,各類科技論文每年以兩百多萬篇的速度遞增,對這些海量數據的查找與利用成為科研人員共同關注的問題。在對期刊論文的應用中普遍存在三個問題:一是期刊論文更新延遲,由于版權等原因,大多數期刊在中國知網等數字出版商網站上的出現都有幾個月的滯后期,但是這些期刊在自己的官方網站上往往及時更新了最新文章的信息;二是文章查詢與推送問題,各大數字出版商在數字出版物的規模上越來越龐大,雖然提供了各種便捷的查詢,并給出相關查詢功能,但是這些功能往往需要用戶主動去搜索,缺乏個性化的熱點推送功能。三是有的科研單位沒有購買數據資源,這就給期刊論文的查詢與利用帶來了更多的不便。
針對上述現象以及科研人員往往只關注各自研究領域學術信息的基本事實,本文提出并實現了一個基于開源架構的網絡期刊論文跟蹤與熱點推送方法,面向科研工作者個性化的需要,有針對性地定期自動跟蹤最新期刊,并對這些期刊論文進行熱點分析,當發現用戶關注的主題有新論文發布時可以自動推送給用戶,從而主動為科研人員提供網絡期刊服務。科研人員可以借助本文所提方法,節省在各大數據庫或者期刊官網上進行文章查找與檢索的時間。
本文提出的網絡期刊論文自動跟蹤與熱點推送系統,主要研究思路是首先確定采集站點,然后有針對性地進行數據采集,生成知識庫并進行熱點分析,最終發布出分析后的數據供科技工作者參考。實現技術上采用了基于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