摘要:為了實現Web智能檢索,提出一種Web智能搜索引擎的模型,它是基于自然語言庫和本體庫對關鍵詞進行解析,在AJAX模式中實現啟發式檢索,收集和使用用戶反饋的重要叁數,并在此基礎上設計和實現了一個Web搜索引擎。
關鍵詞:智能檢索;AJAX;Web智能搜索模型;自然語言;本體
中圖分類號:TP391文獻標識碼:A文章編號:1009-3044(2008)25-1515-04
Design and Implement of Web Search Engine Based on AJAX and Intellectual Retrieval
LIU Hai-yong, ZHENG Yong-qian
(Department of Mechanical Engineering, TongJi University, Shanghai 201804, China)
Abstract: In order to build intellectual Web search engine, the paper proposes a frame, which could parse keywords on the base of natural languages and ontologies, automatically give users search suggestion and analyze some important parameters feed by users in the AJAX model. Besides, design and implement a Web search engine to verify the frame's availability.
Key words: intellectual retrieval; AJAX; Web intellectual search model; natural language; ontology
1 引言
首先,傳統的基于關鍵詞匹配的搜索方法,僅靠目標文檔中是否出現用戶查詢所用的關鍵詞來判斷文檔的相關性。這種以詞為中心建立關聯的方式,缺乏語義理解能力,容易割裂文檔內容間的知識關聯,也未能妥善解決一詞多義、一義多詞問題。特別是在網絡環境下,檢索系統面向的是普通終端用戶,他們一般不具備專業的搜索知識,在表達其需求尤其是構造基于關鍵詞的標準檢索表達式時存在較大困難。如果能夠提供基于關鍵詞的解析,則可以減輕終端檢索用戶的認知負擔,增強系統的知識處理能力,能夠彌補目前基于關鍵詞檢索的不足,提高信息檢索的效率。
其次,搜索引擎的技術發展要求,就是將搜索結果盡可能地按照相關度的大小進行排序,為用戶完成一次二次搜索的過程,這在很大程度上節約了用戶的時間,提高了搜索的效率。當前網絡搜索引擎的巨頭主要采取PageRank算法(或類似的算法,比如百度的“超鏈分析技術”)。如果能對此算法進行改進,加入一些反饋的特征向量,比如鏈接的質量,用戶的行為等參數,可以讓用戶體驗到智能搜索的便利。
針對這些問題,提出了一個能對關鍵詞語義理解提供支持和檢索結果適當排序的智能搜索模型,并使用Ajax模式開發出一個基于Web啟發式智能搜索引擎的實驗原型系統。
2 智能檢索模型和關鍵技術
因此,Web啟發式智能搜索引擎開發的主要問題:智能搜索模型的構建,關鍵詞的解析,輔助特征向量信息搜集和啟發式功能的實現。
2.1 智能檢索模型的構建
為了克服當前模型的缺陷,實現智能搜索,提出一個新的搜索模型,如圖1所示。
■
圖1 智能搜索模型
2.1.1 基于自然語言的關鍵字解析
基于自然語言的檢索,優點明顯,比如減輕用戶負擔、易于新事物的檢索和增強系統的易用性等,但是,目前語言學的技術研究遠未成熟,基于自然語言的關鍵字解析成為目前較為現實的選擇。與傳統的簡單匹配不同,本系統將建立基于關鍵詞的自然語言索引庫,對用戶輸入的關鍵詞聯想匹配,這在很大程度上保障了檢索的查全率。
2.1.2 基于本體網絡的關鍵字解析
“本體是關于共享概念的協議。共享概念包括對領域知識建模的概念框架、可互操作的系統通信協議和特定領域理論的表示協議。在知識共享環境中,本體以定義表達詞匯的形式獲得描述。[1]”
定義1本體模型:對于給定描述語言L,本體模型是一個4元組,記作O=<T, X, TD, XD>。其中,T是概念集。T中的概念包括原子類C與原子屬性P,記為T = <C, P>。原子屬性有2種類型:類屬性和數值屬性。類屬性表示類間的關系,而數值屬性表示類的屬性;TD是概念定義集,定義T中的概念; X為實例集;XD為實例聲明集,用來聲明T的實例。
本體的研究是當前學術界的熱點,目前有多種語言可以對本體進行描述,下面介紹本系統使用的一個實例,通過Daml+Oil語言對飛機零件進行描述:
<Topics rdf:ID=\"飛機零件\">
<englishName>
<xsd:string rdf:value=\"plain parts\"/>
</englishName>
<isKeyword>
<xsd:string rdf:value=\"T\"/>
</isKeyword>
<classID>
<xsd:string rdf:value=\"TT01\"/>
</classID>
<superTopic rdf:resource=\"#飛機\"/>
<subtopic rdf:resource=\"#機翼\"/>
<subtopic rdf:resource=\"#機身\"/>
<subtopic rdf:resource=\"#尾翼\"/>
<subtopic rdf:resource=\"#起落裝置\"/>
<subtopic rdf:resource=\"#動力裝置\"/>
</Topics>
由此可見,本體能夠描述語言文本中隱含的深層語義,用信息技術能夠更加有效的處理復雜的、多樣化的知識,非常適合對關鍵詞的解析。本系統主要使用Java程序完成對Daml+Oil文檔的解析和操作。
2.1.3 加入輔助向量的空間檢索模型
PageRank是采用“超鏈分析”技術的搜索引擎中結果排序的重要參數。“超鏈分析”在實際的應用中,存在著用戶實際所需要的頁面的次序并不靠前的問題,用戶只有經過較長時間的瀏覽,才能在后繼的搜索結果中找到所需要的頁面。
為改善這個問題,在用戶關鍵詞的索引下,我們可以加入一些反饋的輔助特征向量,包括:頁面被點擊的次數(PageQuantity),甚至是用戶的行為分析(PageUser),等參數,這些可能會很大地改善當前的現狀。因為PageQuantity可以代表頁面的流行度,PageUser可以作為頁面的用戶個性參數,等等。另外需要說明的是,這些特征向量參數的收集不會增加用戶的負擔,由Ajax技術在用戶毫不知情時完成。
在經典的向量空間檢索模型中.把索引中的每個詞作為空間的一個維度。每一篇文檔表示為詞匯空間的一個向量.每一個查詢同樣以向量表示,通過計算文檔和查詢的內積或余弦來表示文檔和查詢的相關程度。下面來構造PageQuantity的模型,如下:
令Q=(Q1,Q2,…,Qn}表示由m個詞和n個頁面構成文檔被訪問次數的集合,其中Qj=(q1j,q2j,…,qmj)T是頁面向量,qij表示詞i在查詢中頁面j中的被點擊次數權重,pgij表示i在查詢中頁面j中的被點擊次數,詞—文檔矩陣Q定義如下:
公式1:■,其中■
然后,利用SDD算法對它進行了矩陣分解、降維,以強化語義關系提高空間效率,矩陣Q就轉換成了QK[5]。同理,U=(U1,U2,…,Um)T表示用戶個性參數的查詢向量,ui表示詞i在查詢時用戶個性參數的權重,和UK,等等。
最終可以得到,加入輔助特征向量的空間檢索模型,如下:
公式2:Rank(A)=(PageRank*λ0)×(QK*λ1)×(TK*λ2)×(UK*λ3)×…,其中λ0,λ1,λ2,λ3…表示個指標所占的權重。
2.2 關鍵技術
Ajax是Asynchronous JavaScript+XML的縮寫。這個名詞的創造者AQaptive Path 的咨詢顧問Jesse James Garrett這樣定義Ajax:Ajax不是一種技術,實際上,它由幾種蓬勃發展的技術以新的強大方式組合而成。AJax包含:1)基于XHTML和CSS標準的表示;2)使用Document Object Model進行動態顯示和交互;3)使用XMLHttpRequest與服務器進行異步通信;4)使用JavaScript綁定一切。
Ajax的工作原理,就是相當于在用戶和服務器之間增加一個中間層,使用戶操作與服務器響應實現異步通信。像一些數據驗證和數據處理等交給Ajax引擎自己來做,只有確定需要從服務器讀取新數據時再由Ajax引擎代為向服務器提交請求。這樣就大大減少打斷用戶操作的次數,加快了響應速度,同時也減輕了服務器的工作壓力。
3 系統設計與實現
本系統采用典型網絡軟件的三層結構和MVC模式,采用AJAX與Java EE相結合動態網站開發技術,在Apache Tomcat6.0服務器與MySQL5.1數據庫等平臺上開發了啟發式智能搜索引擎的實驗系統,如圖2(灰色線框以內)所示。
■
圖2 系統設計
本系統實現了Ajax模式與Java EE的結合,主要包括Java、JavaScript、CSS、XML和HTML等方面的知識,下面主要介紹系統開發的關鍵技術,包括客戶端與服務端的開發:
3.1 客戶端開發
在AJAX 引擎發出XMLHTTPRequest 請求的時候, 不再指向某個靜態地址, 而是將其請求的URL 地址指向服務器端聲明的映射到XMLAssemblyFactory-Servlet 的地址, 并且AJAX 引擎在瀏覽器端向服務器端的Servlet 發出請求時可以攜帶多個參數來限定所需要的數據和操作。
var url = \"XMLAssemblyFactoryServlet?keywords= keywords \";
xmlHttpReq.open(\"GET\",url,true)
xmlHttpReq.onreadystatechange = callback;
xmlHttpReq.send(1);
3.2 服務器端開發
為實現以上的設計,在Java EE應服務器端,首先在web.xml中聲明XMLAssemblyFactoryServlet和它的URL映射。在XMLAssemblyFactoryServlet 的doGet或doPost方法的實現中首先設置響應Content Type為“text/xml”,在完成一系列數據存取及業務邏輯之后,將所有的有效數據包裝在正確的XML格式當中,最后通過HTTP響應發回到客戶端。
//設置Servlet的Content Type為“text/xml”
response.setContentType(\"text/xml\");
response.setHeader(\"Cache- Control\", \"no- cache\");
paraValue1= request.getAttribute (\"keywords\").toString(); //解析參數
PrintWriter out = response.getWriter();
……
//調用JDBC、EJB 等對用戶輸入的關鍵字進行解析,完成自動提示,對數據庫的查詢,等等功能處理
String resultXMLContent = \"
out.println (resultXMLContent); //將合法格式的XML數據寫到response
4 系統實驗
系統的查詢界面如圖3所示,當用戶每輸入一個中文或英語單詞,系統會對用戶輸入的關鍵詞進行基于自然語言和本體的解析,并將解析結果生成在自動下拉提示框里,以提示用戶與關鍵詞相關的詞匯及其搜集結果。比如,輸入“飛機零件”,系統根據對關鍵詞的解析,不僅會查詢“飛機零件”,還會查詢與飛機零件相關的“飛機零部件”、“飛機部件”、“飛機機翼”、“飛機機身”等,而且基于本體庫的解析運算,讓系統不會像Google將關鍵詞分拆成“飛機”和“零件”,導致搜索到過多的無關結果。然后,點擊“查詢”按鈕后,系統將查詢結果根據公式2進行排序,如圖4所示(為了便于分析將系統的查詢結果與Google的搜索結果放到一個頁面進行對比)。另外,本系統在Linux Red HaQ 9.0, Window XP,IE7.0,Fire Fox 2.0等平臺上對系統的初步測試表明,總體規劃與設計是可行的,達到了預期的目標,對于同一個關鍵詞,不同時間搜索,和不同用戶的搜索結果也是變化的。
■
圖3 啟發式搜索
5 結束語
智能化搜索引擎是搜索引擎的發展趨勢之一,是國際上的研究熱點。這篇論文為解決智能化搜索作了積極的探索,提出了解決方案,設計并實現了啟發式智能搜索系統,接下來的工作重點是系統完善(比如,設計網絡爬蟲,增大實驗的數據量),智能化效果評測,探索基于XML和本體數據庫的系統研究,等等。
■
圖4 與Google的搜索結果對比
參考文獻:
[1] Mile Uschold,Michael Güninger.Knowledge Engineering Review[M].Britain:Cambridge University Press,1996:5-33.
[2] Chu-Carroll J,Prager J,Ravin Y,et,al. A hybrid approach to natural language Web search[R].USA:Association computational linguistics,2002:180-187.
[3] 周寧,張玉峰,張李義.信息可視化與知識檢索[M].北京:科學出版社,2005:101-208.
[4] Kolda T G,O'Leary D P.A semidiscrete decomposition for latent semantic indexing in information retrieval[C].ACM Trans Inf Syst,1998(16):322-346.
[5] 樊景超,周國民.SDD算法在中文農業網頁信息檢索的應用[J].農業網絡信息,2005(11):129-131.
[6] Akmal B.Chaudhri,AwaisRashid,Roberto Zicari.XML data management: native XML and XML-enabled database systems[M].北京:清華大學出版社,2006:253-263.
[7] Tom Myers,Alexander Nakhimovsky.Java XML編程指南[M].北京:電子工業出版社,2001:227-286.
[8] Ryan Asleson,Nathaniel T Schutta.AJAX基礎教程[M].北京:人民郵電出版社,2006:23-70.