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