[摘要] 本文針對新聞搜索的特點研究了中文新聞搜索引擎的構建技術,包括從網頁文檔抓取、解析、再到建立索引、發布搜索、用戶界面搭建的全過程,并基于開源的Lucene軟件包,結合中文分詞與Pagerank技術實現了一個原型系統,取得了較好的搜索效果。
[關鍵詞] Lucene 新聞搜索引擎 Pagerank 中文分詞
一、引言
當今社會隨著信息化的快速發展,信息的獲取已成為人們生產生活最頻繁最重要的活動之一,Internet的發展改變了傳統的信息傳輸渠道,大量的信息甚至可在短短的幾秒內就從地球的這端傳到那端。
新聞信息的發布已歷經從傳統的紙質媒體到電子媒體的變革,各新聞門戶網站也如雨后春筍般涌現,科技的變革往往帶來生活方式的變革,人們獲取新聞信息的方式也從傳統的被動接受方式轉變成主動搜索方式,甚至將來的交互式問答方式。在其中發揮核心作用的就是信息檢索技術。目前,盡管Google等搜索引擎公司推出了新聞搜索系統,但其技術未予公布,用戶也無法對其改進以使系統更加個性化,而且,各類信息提供商也經常需要提供搜索引擎來方便用戶對信息的獲取。因此,研究專業信息領域的搜索引擎技術有著重大的意義和巨大的市場價值。本文研究中文新聞搜索引擎的構建技術,并基于開源的Lucene[1] java軟件包實現了一個原型系統。
二、系統概述
1.設計目標
本系統考慮新聞檢索的特點,如時效性、權威性等特點,基于Lucence,引入網頁解析技術提取網頁中的新聞,利用中文分詞技術對新聞內容分詞,同時引入PageRank技術對評分系統進行修改,使其能夠很好地滿足用戶需求。
2.系統框架
Web搜索引擎的建立,包含從網頁文檔抓取,解析,再到建立索引,發布搜索,是一項復雜的工作。在本研究中,新聞網頁數據集選自新浪,搜狐,雅虎,中國新聞網等權威門戶網站,系統不僅能實現一般的Web搜索引擎提供的關鍵字搜索,同時它又有別于一般的Web搜索引擎,可以滿足用戶對新聞搜索的特殊需求。系統先利用WebZip工具從不同的新聞網站定時抓取網頁,將網頁保存于本地磁盤,然后利用Htmlparser解析網頁以提取其中的新聞內容,發布時間,網址鏈接,本地路徑。對網址鏈接用PageRank技術計算其重要性;利用中文分詞技術對新聞內容進行分詞,再由Lucene分析器進行分析,結果提交給索引器建立索引。將索引結果和PageRank值提供給搜索器,在用戶對搜索器發出請求后,返回相應的查詢結果。
三、系統模塊和設計
1.抓取網頁
我們使用軟件Webzip作為抓取網頁的工具,由于待抓取的是新聞網頁,我們選擇了幾個權威的網站(搜狐,雅虎,中國新聞網)作為我們實驗數據的來源,具體步驟如下:
首先,創建一個工程,并在工程的地址欄中輸入待抓網頁的網站根目錄如www.news.sina.com。
其次,在工程的屬性中進行一系列的選擇:filetype選擇HTML,在linklever中選擇all level表示可以抓取任意層次的網頁,在pagelocation中選擇within current site表示只抓取該網站的網頁。
我們用Webzip總共抓取了700多兆的數據量用于實驗。
2.HTML解析與中文分詞
由于Lucence只支持txt等純文本格式的索引,對于HTML這類包含標簽的數據我們需要進行解析過濾后才能進行索引,我們利用開源的HTMLParser[3]對網頁進行解析,提取網頁中的新聞標題,發布時間,新聞內容和鏈接地址,濾掉標簽等不必要的信息。我們將解析器解析出來的文本利用中文分詞工具ICTCLAS[4]進行分詞后傳遞給Lucence的索引器建立索引。
3.建立索引
先利用Lucene的分析器去掉常用詞,統一大小寫,替換同義詞等。然后就可以對四個域進行索引,分別是”paths”,”contents”,”time”,”title”。這樣搜索就可以建立在這四個域上,根據不同的搜索需求對不同的域進行搜索。比如需要查某個時間的文檔,就只需要搜索”time”域。
4.建立搜索函數
在索引建好的基礎上我們需要建立搜索API, Lucence的搜索機制是根據用戶輸入的關鍵詞,用其分析器(這里我們先用ICTCLAS進行中文分詞)分析關鍵詞,再將分析結果傳給搜索函數進行搜索,返回命中文檔的集合。在本系統中我們提供了兩個搜索函數:一個是Lucence搜索函數的改進版,它結合Lucence的評分規則和PageRank;另一個根據時間排序。
在搜索引擎的研究中,一個核心問題就是評分規則的確定,如何確保用戶感興趣的網頁或重要的富含信息的網頁得分較高,這是一個較難的工作,也是一個研究熱點。較成熟的方法包括向量模型,貝葉斯網絡等。Lucence采用的是向量模型,基本思想是將文檔依據關鍵詞映射到一個向量空間,根據詞頻和逆詞頻來計算文檔的權重,然后計算查詢向量q和文檔dj的相似度,此相似度便作為查詢文檔的得分。由于Lucence只考慮了文檔自身的內容,沒有考慮文檔間的關系,而文檔間的引用關系往往能反應文檔的重要程度;就比如經常被引用的論文往往是好論文,盡管可能它的文檔內容得分不高,但因為它足夠權威,我們還是要提高其得分。PageRank便基于類似的思路利用網頁間的鏈接關系來計算網頁的重要性,該技術已經應用在Google上。于是我們引入Pagerank對Lucence的評分機制進行修改,在計算向量模型時加入Pagerank的值,再進行規范化處理。
5.重要新聞的提取
之前我們所做的工作主要是給用戶提供關于新聞的搜索功能。除了搜索服務,我們在網頁上還要提供給用戶一個新聞瀏覽的平臺,讓用戶知道現在什么新聞最重要,甚至可以在將來開發個性化推薦系統。因此提取重要的新聞是一項很關鍵的工作。在我們的研究中,該問題的解決方法如下:
A.首先提取每條新聞的標題,利用Lucene分析器對標題去除停用詞并進行分詞。
B.對每個標題,我們根據向量模型比較它與其他標題的相似度,得到其分數titlescore。
C.對于新聞出自的網站按其網站的重要性對每個網站賦予不同的權值weight。
D.對于新聞的出現位置,我們認為它對評分也有影響,采用如下的公式:timescore=1-i/(2*legnth)。其中i表示該新聞在網頁上所處的位置,length表示當天總的新聞數。
E.最后我們綜合所有的評分因子得到如下的公式:
score=titlescore*timescore*weight*(1+0.2*title.length());
按照score從大到小輸出當天的部分重要新聞。
實驗表明,重特大新聞和一些關注較多的新聞都排在了前列。
6.Pagerank的計算
Pagerank是Google使用的根據網頁之間的鏈接關系,給出網頁權重的一種算法。其基本思想為:當網頁A有n個鏈接指向其他網頁時,將網頁A的rank值分為n份,分別賦予這n個網頁。對網頁集合中的所用網頁使用迭代計算的方法反復計算,直到收斂到一個不動點為止。我們采用中的算法。
四、結束語
系統采用Tomcat作為Web Server, 使用Jsp/Servlet架構,界面提供按內容相似性和時間兩種排序方式,實現了中文分詞,Pagerank等技術;并根據新聞搜索的特點提出了相應的算法;取得了較好的搜索效果。在將來,對于用戶推薦,熱點新聞識別等,亦有很多研究工作有待開展。
參考文獻:
[1]MICHAEL B,DORON C.lucene. http://lucene.apache.org/java/docs/ ,2007-6-14/2007-7-20
[2]SPIDERSOFT .WebZIP Overview.http://www.spidersoft.com/webzip/default.asp
[3]DERRICK O.HTMLParser. http://htmlparser.sourceforge.net/
[4]張華平. 計算所漢語詞法分析系統ICTCLAS3.0白皮書.
http://www.i3s.ac.cn/Manual/
[5]IAN ROGERS. The Google Pagerank Algorithm and How It Works.
http://www.alvit.de/vf/en/web-development-the-google-pagerank-algorithm-and-how-it-works.html