摘要:文章針對垂直搜索引擎技術進行了介紹,介紹了通用信息檢索技術、信息抽取技術和信息抓取技術,例如Nutch和GATE。并利用當前流行的技術構建了一個垂直搜索引擎,最后描述了系統的架構和實現過程。
關鍵詞:Nutch;GATE;垂直搜索;信息抽取
中圖分類號:TP393文獻標識碼:A 文章編號:1009-3044(2010)02-286-02
The Building of Intelligent Vertical Search Engine
LIU Jin-liang1, WU Fang2, MENG Hai-jiang1
(1.Cangzhou Electric Power Company of Hebei, Cangzhou 061001,China;2.Cangzhou Medical College,Cangzhou 061001,China)
Abstract: In this paper,we analyzed the theory of vertical search engines and introduced the technologies about vertical search engines. We introduced some related tools, such as Nucth and GATE. At last, the process of building a vertical search engine is describesd.
Key words: Nutch; GATE; vertical search; information Extract
用戶在使用通用互聯網搜索引擎時,搜索引擎檢索結果不準確、信息重復率高、信息時效性不強,而且搜索不能做到智能化。作為通用搜索引擎的補充,垂直搜索引擎[1]能做到自動符合用戶個性化需求進行自助搜索。垂直搜索和普通的網頁搜索的最大區別是它對網頁信息進行了結構化信息抽取,也就是從網頁的某些非結構化數據中抽取出特定的結構化信息數據。垂直搜索是以結構化數據為最小單位,然后將這些數據存儲到數據庫中;而普通的網頁搜索是以網頁或網頁塊為最小單位的。所以web結構化信息抽取的技術水平是決定垂直搜索質量的重要技術指標,因此結構化的信息抽取技術成為了垂直搜索的關鍵技術之一。
本文研究的智能化垂直搜索系統是基于垂直搜索引擎技術Nutch設計開發的,并使用開源碼工具GATE作為主要信息抽取工具。
1 相關技術分析
1.1 開源工具Nutch[2-3]的選用
Nutch就是一個開源Java 實現的搜索引擎,它提供了我們運行自己的搜索引擎所需的全部工具。 Nutch因其開放源代碼,因此任何人都可以查看他的排序算法是如何工作的。了解一個大型分布式的搜索引擎如何工作是一件讓人很受益的事情,但是我們并沒有Google的源代碼,因此學習和使用搜索引擎Nutch是個不錯的選擇。Nutch非常靈活,它可以被很好地客戶訂制并集成到應用程序中。使用插件機制,Nutch可以作為一個搜索不同信息載體的搜索平臺。Nutch目前還沒有比較穩定的應用版本,對中文的支持也不夠好,但比較其它開源項目,為了滿足垂直搜索的需求,應該說Nutch還是比較適合于建立垂直搜索引擎網站的。
在基本原理和主要功能組件方面,垂直搜索引擎與通用搜索引擎是基本相同的。兩者主要的區別在于spider程序爬行的范圍和網頁信息處理的深度兩個方面。垂直搜索引擎與通用搜索引擎的網頁爬行策略的一個本質的區別是:普通搜索引擎采取逐頁爬行的原則,對所有的網頁全部進行分析,然后對網頁進行索引放入數據庫。垂直搜索引擎則根據系統對網頁與主題相關性的計算,采取一定的策略預測相關網頁的位置,動態的調整網頁爬行方式;使系統盡可能的在與主題相關的網頁集中的地方爬行,對網頁進行分析。這一點是垂直搜索引擎優勢所在,它節約了系統運行的硬件和網絡資源開銷。相關網頁的預測策略實際上就是算法所實現的內容,所以選樣一個高效率的搜索算法將會決定整個系統的運行效率。
1.2開源工具GATE[4-5]的選用
本系統中另一個重要的開源開發工具為自然語言處理框架GATE。GATE是一個應用非常廣泛的自然語言處理開放型基礎架構,為用戶提供了圖形化的開發環境,被許多自然語言處理項目尤其是信息抽取的項目所采用。
Gate中各個部分的功能非常明確,主要分為三個模塊:結構化信息抽取模塊、非結構化信息抽取(語義信息抽取)模塊、用戶接口模塊。結構化信息抽取模塊負責抽取原始網頁數據規范部分,不能進行結構化信息抽取原始數據部分則交由語義信息抽取模塊來完成。最后通過用戶接口模塊提供友好易操作的接口,傳遞用戶給出的指令和參數設置,協調系統完成任務。用戶接口具體的功能包括:接受用戶的本體url請求;從網頁采集模塊采集到的網頁庫中提取待抽取文檔;查看完成命名實體標注的文檔;查看抽取的結果等。
2 系統體系結構
在軟件體系結構上,本系統采用了B/S模式的網絡結構,把整個網站系統的功能模塊劃分為三個層次,即表示層、邏輯層和數據存儲層,不同層次采用不同的軟件模塊,實現不同的功能。
表示層:表示層用于生成用戶訪問的Web頁面,包括信息的查詢界面、檢索界面、查詢信息的返回頁面、用戶遠程提交數據的界面或者網站管理者進行簡單維護功能的一些頁面,都集中在表示層。簡單地說,表示層就是該網站系統與各種用戶的人機接口。
邏輯層:邏輯層位于系統的服務器端,包含眾多的功能模塊,是實現該搜索引擎和網站服務功能的核心層次。表示層中提出的各種功能都通過邏輯層相應的代碼模塊實現。本文中,邏輯層的設計包含三個主要的內容,第一是面向internet的網頁信息自動采集功能,通過一個Nutch的spider服務器來實現,并把采集到的頁面信息存儲在下面的數據存儲層中。第二是基于Gate框架的信息抽取,其中又包括結構化的信息抽取和非結構化的信息抽取。第三是信息的錄入與查詢功能模塊,包括信息錄入、保存以及查詢和查詢頁面的自動生成。邏輯層的設計是實現系統健壯性、可重用性、可擴展性和可維護性的關鍵因素。
數據存儲層:由選定的系統數據庫管理系統組成,負責存儲整個網站的底層結構化數據。從前文的功能需求分析可以看出,數據存儲層主要包括兩個大規模的數據庫,第一個是面向spider的頁面信息存儲數據庫,第二個是面向用戶查詢的信息數據庫。兩個數據庫盡管存在著一定的聯系,但相對獨立,互不影響;并且,在實際的網站系統部署中,兩個數據庫往往分別部署于兩個數據庫服務器當中,以均衡系統的負擔,提高系統的搜索效率。一般情況下,為了保證系統的安全,該存儲層需要一定的備份機制,并可以在數據庫管理系統中進行單獨設置。
在 Browser/Server三層體系結構下,表示層、邏輯層、數據存儲層被分割成三個相對獨立的單元,強調數據存儲、功能邏輯與用戶使用界面的有效分隔。實現顯示、計算、數據的真正分離,這樣,把網頁爬行、采集和存儲分開,可以大大減輕網站服務器的負擔,并使他們之間互不影響。另外,這種三層結構層與層之間相互獨立,任何一層的改變不影響其它層的功能。為系統的升級和改進留下了很大的擴展空間。
3 系統實現
1) 原始網頁數據信息的采集為第一步,采用Nutch的spider程序(或稱為fetcher網頁采集器)通過事先設定的url采集限定列表,使爬行程序爬行限定的汽車行業網站。
2) 第二步為關鍵詞信息的生成。主要是通過結構化信息抽取、基于Gate的語義信息抽取及人工錄入三種形式生成。
對于網頁結構標準的原始信息部分,可采用基于HTML標簽的網頁原始標注(Original markups)功能進行抽取。對于不能進行結構化信息抽取的部分,可采用基于Gate框架的中文信息抽取系統進行非結構化的信息抽取。當然,對于一些不能通過信息抽取系統生成的特定信息,也要采取必要的手工錄入方式來生成。
3) 第三步是把生成的關鍵詞信息存儲為xml文件,再通過XSLT樣式表文件使其生成表格樣式的網頁,然后把其嵌入到預先建好的網頁模板中生成網頁文件。
4) 最后,使用Nutch系統對本垂直系統網站進行站內爬行、索引,建立站內搜索系統,形成一個垂直搜索網站。其系統具體實現流程如圖1所示。
4 總結
該文通過對搜索引擎技術的介紹和研究描述了垂直搜索引擎技術,并通過該技術的理論依據作為基礎,建立了基于Nutch和Gate核心的垂直搜索引擎系統,展示了垂直搜索引擎在搜索引擎領域中的作用和發展前景。
目前,垂直搜索引擎技術大都處于研究和試驗階段,很多關鍵功能不太成熟,并且仍舊屬于商業秘密,可借鑒的資料有限。雖然目前已經形成了一個可以運行的垂直搜索網站基本框架,但在信息采集及中文信息抽取過程中還存在著一些問題,要進行進一步研究和改進。
參考文獻:
[1] 劉暢.綜合搜索引擎與垂直搜索引擎的比較研究[J].情報科學,2007,25(1):97-102.
[2] 余棟柱.用Nutch 構建垂直搜索引擎的方案[J].工程技術,2009(14):118-120.
[3] http://www.nutchchina.com/.2008.10.
[4] 李颯.基于GATE的中文信息抽取系統的開發和實現[D].中國科學院研究生院文獻情報中心,2006.
[5] GATE HOME http://gate.ac.uk/.2008.6.