如何測試搜索引擎的索引量大小

背景知識:搜索引擎的質量指標一般包括相關性(Relevance)、時效性(Freshness)、全面性(Comprehensiveness)和可用性(Usability)等四個方面,今天我們要談的索引量就屬於完整性指標的範疇。 首先需要注意的是,對於搜索引擎,網頁的索引量和抓取量是不同的概念。搜索引擎的網頁抓取數量一般都要遠大於索引量,因爲抓取的網頁中包括很多內容重複或者作弊等質量不高的網頁。搜索引擎需要根據算法從抓取的網頁當中取其精華,去其糟粕,挑選出有價值的網頁進行索引。因此,對用戶而言,搜索引擎的索引量大小才更有意義。 其次,無限制增大索引量並不一定能保證搜索質量的提升。一方面,在全面性指標中,除索引量外,還需要考慮到收錄網頁的質量和不同類型網頁的分佈。另一方面,搜索引擎的質量指標體系要保證四方面的均衡發展,不是依靠單個指標的突破就可以改善的。目前包括雅虎中國在內的主流中文搜索引擎的網頁索引量都在20億量級,基本上可以滿足用戶的日常查詢需求。 然而,由於從外部無法直接測算出搜索引擎網頁索引量的絕對值大小,很多搜索引擎服務商喜歡對外誇大自己的收錄網頁數,作爲市場噱頭。從1998年開始,Krishna Bharat和Andrei Broder就開始研究,如何通過第三方來客觀比較不同搜索引擎索引量的大小。8年後,在今年5月份的WWW2006大會上,來自以色列的Ziv Bar-Yossef和Maxim Gurevich由於這方面的出色研究成果奪得了大會唯一的最佳論文獎。他們的研究算出了主流英文搜索引擎的索引量相對大小:雅虎是Google的1.28倍,Google是MSN的1.36倍。他們是如何算出這些數字的呢?下面我們將爲搜索引擎愛好者介紹這個算法,以及探討在中文搜索引擎上是如何應用的。 概述 搜索引擎的索引量或稱覆蓋率對搜索結果的相關性、時效性和找到率都具有深遠的影響。出於市場運作的考慮,各大互聯網搜索引擎不時對外公佈自己索引的文檔數量,然而這些數據往往不同程度地被加入了一些水份,可信度上有一個問號。因此,如何通過搜索引擎的公共接口,也就是通常所說的搜索框,比較客觀、準確地測試它的索引量就成爲了一個令人關注的問題。                                    每一個搜索引擎的索引都覆蓋了互聯網上全部文檔的一個子集。如果我們把測試作爲對這個集合的採樣,那麼問題的關鍵就在於如何實現一個近似的等概率隨機採樣(uniform search engine url sampler),參見圖1。具體地說,假定一個搜索引擎S總共索引了|D|個文檔,那麼我們希望採樣得到某一個具體文檔的概率是1/|D|。 一旦實現了通過搜索框對索引的等概率隨機採樣,我們就可以在統計意義上比較有把握地估計搜索引擎索引量的相對大小。如下圖所示:                              圖2,比較搜索引擎索引的相對大小 我們先對引擎S1隨機採樣N1個url。然後,通過url查詢獲知引擎S2索引了其中的N12個url,而沒有索引另外N10個。換句話說,N1 = N10+N12 。同樣地,如果我們對引擎S2隨機採樣N2個url,發現其中N21被S1收錄而N20沒有收錄,N2=N20+N21。那麼我們可以估計S1與S2的相對大小爲: |D1|/|D2|  ≌(N12+N10) / (N12+N12N20/N21)  =(N1N21)/(N2N12)  =N21/N12 (如果N1══N2) 搜索引擎索引的等概率隨機採樣:Ziv Bar-Yossef 等人的方法介紹 對於搜索引擎等概率隨機採樣的研究已經有了相當長的歷史,具體的背景文獻我們不準備在這裏一一探討。我們希望通過對Bar-Yossef等人最近工作的介紹,把一種比較客觀、科學的測試方法推介給讀者。我們也會探討他們的方法對於中文索引的侷限性和一些解決方案。                                      圖3,一個簡化的搜索引擎索引 圖3給出了一個簡化了的搜索引擎索引示例,假定關鍵字“news”將返回4個結果:www.cnn.com、news.google.com、www.foxnews.com和news.bbc.co.uk。 首先我們給出一組定義 關鍵字搜索結果集合:results(q) = { 搜索關鍵字 q所返回的全部結果文檔之集合}  文檔關鍵字集合:queries(x) = { 所有能返回文檔x的搜索關鍵字之集合}  搜索關鍵字池P:一組理論上能夠覆蓋所有文檔的搜索關鍵字集合  例如圖3中P = {news, bbc, maps, google}  關鍵字搜索結果量:card(q) = |results(q)|,搜索關鍵字 q所返回的全部結果文檔之數量  例如圖3中 card(“news”) = 4,card(“bbc”) = 3  文檔匹配度: deg(x) = |queries(x)| ,全體能夠匹配文檔x的搜索關鍵字數量  例如圖3中deg(www.cnn.com) = 1,deg(news.bbc.co.uk) = 2  當我們通過搜索框對搜索引擎的索引進行採樣,所獲得的結果實際上偏向於匹配度高的文檔。對於圖3所示的搜索引擎,如果我們從搜索關鍵字池P = {news, bbc, maps, google}中任意選取一個關鍵字,然後在所得搜索結果中任意選取一個文檔,那麼選到某一個具體文檔的概率與它的匹配度成正比,例如,p(news.bbc.co.uk) = 2/13 ,p(www.cnn.com) = 1/13  因此,通過關鍵字對搜索引擎的索引進行採樣,實際上是對文檔匹配度概率分佈在作隨機抽樣。具體地說,如果相對於一個給定的搜索關鍵字池P,該索引的全部文檔匹配度的總和爲deg(D) = ∑x∈D deg(x),那麼通過搜索框對引擎採樣獲取具體一個文檔x的概率是deg(x)/ deg(D)。 如何通過對文檔匹配度分佈的隨機抽樣而獲得我們所期望的等概率隨機採樣呢?這正是Bar-Yossef 等人工作的主要成果所在:他們採用蒙特卡羅仿真(Monte Carlo Simulation)算法實現了這一點 目標分佈π(x) : D上的等概率隨機分佈, π(x) = 1/|D|  實際採樣分佈p(x) : D上的文檔匹配度隨機分佈,p(x) = deg(x) / ∑x'∈Ddeg(x')  偏差權值: w(x) = π(x)/p(x) ∝1/deg(x)  採樣過程,參見圖4 選定一個搜索關鍵字池P  隨機選取q ∈P  在搜索結果中隨機選取一個文檔x ∈results(q)  計算該文檔對P 的匹配度deg(x)  產生一個0~1的隨機數r,如果r ≤ 1/deg(x)保留該文檔,否則放棄  重複上述過程直到獲得N個有效採樣點  圖4,通過蒙特卡羅仿真(Monte Carlo Simulation)算法實現對索引的等概率隨機採樣 問題和討論 上述算法在數學上非常嚴謹優美,但是在具體的實現過程中仍然有相當多的困難,尤其是對於中文搜索引擎,有一些特殊的問題需要探討。 搜索關鍵字池P的選取  P選擇的條件是(1)要保證p(x) = 0,即索引中文檔不匹配任何一個關鍵字q ∈ P的概率足夠小。如果這個概率太高,測試只能侷限於索引的一小部分,測試的結果就失去了意義。(2)關鍵字搜索結果量card(q)最好要比較小,這樣可以儘可能地避免搜索結果超過搜索引擎允許返回結果的上限。作者提出的方案是通過抓取和分析一個大型的網上文庫,例如維基百科全書,選擇其中所有的英文單詞的集合或者所有K個相連單詞的集合作爲P。這對於沒有分詞問題的英文而言是容易實現的,但對於漢語等需要分詞的語種,這個方法似乎並不很合適。我們建議直接採用GBK字庫中的全部字符,或者採用中文分詞標準中所有詞彙的集合。 如何計算文檔對P的匹配度deg(x)?  文檔匹配度deg(x)必須離線計算,通過查詢獲得是不現實的。對英文文檔來說,只要計算文檔中覆蓋了多少個關鍵字q ∈P。但是對中文而言,不同引擎包含了不同的搜索邏輯,例如四個漢字以下的搜索通常採取詞組搜索,長搜索詞有些引擎可能採取與或邏輯。不同引擎對於漢語分詞的處理也有較大的差異。在索引文檔時,有些引擎可能考慮了繁簡漢字的轉換。所有這些都會對匹配度產生一定程度的影響。 實際上,匹配度deg(x)的計算並不一定要十分精確,一些近似處理是可以接受的,只要誤差不至於太大。我們建議用GBK字庫的單個漢字集合作爲P,這樣可以避免分詞的差異。而此時文檔的匹配度就是一個文檔包含不同GBK字符的個數。 搜索引擎對搜索最大返回結果的限制。  這一點Bar-Yossef 等人的文章中有比較詳細的討論,他們認爲這個限制對於測試結果的影響並不太大。 該算法的計算複雜度比較高。  從計算量上考慮,由於deg(x)一般都比較大,因此搜索結果文檔被放棄的比例較高,如何進一步改進算法的複雜度是一個值得探討的問題。  參考文獻 * Ziv Bar-Yossef and Maxim Gurevich,  Random Sampling from a Search Engine's Index

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章