1. 程式人生 > 實用技巧 >中文搜尋引擎技術揭密:排序技術

中文搜尋引擎技術揭密:排序技術

Google成功的祕密


到2004年為止,Google([url]http://www.google.com[/url]) 已經連續兩年被評為全球第一品牌,Google成立僅五年時間,最初只是兩個斯坦福大學學生的研究專案。這不能不說是一個奇蹟,就像比爾•蓋茨創制奇蹟一 樣。比爾•蓋茨能創造奇蹟,是因為他看準了個人計算機軟體市場的趨勢,所以建立的公司叫Microsoft(微軟):Micro(小)Soft(軟體)。 那麼Google呢?在Google出來之前已經有一些很有成就的搜尋引擎公司,其實力也很強,看來不只是Google看見了搜尋的趨勢。Google究 竟成功的祕密在哪兒? Google的成功有許多因素,最重要的是Google對搜尋結果的排序比其它搜尋引擎都要好。Google保證讓絕大部分用搜索的人,都能在搜尋結果的 第一頁找到他想要的結果。客戶得到了滿足,下一次還過來,而且會向其他人介紹,這一來一往,使用的人就多了。所以Google在沒有做任何廣告的前提下, 讓自己成為了全球最大的品牌。Google究竟採用了哪種排序技術?PageRank,即網頁級別。 Google有一個創始人叫Larry Page,據說PageRank的專利是他申請的,於是依據他的名字就有了Page Rank。國內也有一家很成功的搜尋引擎公司,叫百度([url]http://www.baidu.com[/url])。 百度的創始人李彥巨集說,早在1996年他就申請了名為超鏈分析的專利,PageRank的原理和超鏈分析的原理是一樣的,而且PageRank目前還在 Paten-pending(專利申請中)。言下之意是這裡面存在專利所有權的問題。這裡不討論專利所有權,只是從中可看出,成功搜尋引擎的排序技術,就 其原理上來說都差不多,那就是連結分析。超鏈分析和PageRank都屬於連結分析。 連結分析到底為何物?由於李彥巨集的超鏈分析沒有具體的介紹,筆者唯一看過的就是在美國專利局網站上關於李彥巨集的專利介紹。PageRank的介紹倒是不少,而且目前Google畢竟是全球最大的搜尋引擎,這裡以PageRank為代表,詳細介紹連結分析的原理。

PageRank?揭密


PageRank?的原理類似於科技論文中的引用機制:誰的論文被引用次數多,誰就是權威。說的更白話一點:張三在談話中提到了張曼玉,李四在談話中也提到 張曼玉,王五在談話中還提到張曼玉,這就說明張曼玉一定是很有名的人。在網際網路上,連結就相當於“引用”,在B網頁中連結了A,相當於B在談話時提到了 A,如果在C、D、E、F中都連結了A,那麼說明A網頁是最重要的,A網頁的PageRank值也就最高。 如何計算PageRank值有一個簡單的公式: PageRank1其中:係數為一個大於0,小於1的數。一般設定為0.85。網頁1、網頁2至網頁N表示所有連結指向A的網頁。 由以上公式可以看出三點:
  1. 、連結指向A的網頁越多,A的級別越高。即A的級別和指向A的網頁個數成正比,在公式中表示,N越大, A的級別越高;
  2. 、連結指向A的網頁,其網頁級別越高, A的級別也越高。即A的級別和指向A的網頁自己的網頁級別成正比,在公式中表示,網頁N級別越高, A的級別也越高;
  3. 、連結指向A的網頁,其鏈出的個數越多,A的級別越低。即A的級別和指向A的網頁自己的網頁鏈出個數成反比,在公式中現實,網頁N鏈出個數越多,A的級別越低。
每個網頁有一個PageRank值,這樣形成一個巨大的方程組,對這個方程組求解,就能得到每個網頁的PageRank值。網際網路上有上百億個網頁,那麼 這個方程組就有上百億個未知數,這個方程雖然是有解,但計算畢竟太複雜了,不可能把這所有的頁面放在一起去求解的。對具體的計算方法有興趣的朋友可以去參 考一些數值計算方面的書。 總之,PageRank有效地利用了網際網路所擁有的龐大連結構造的特性。 從網頁A導向網頁B的連結,用Google創始人的話講,是頁面A對頁面B的支援投票,Google根據這個投票數來判斷頁面的重要性,但Google除 了看投票數(連結數)以外,對投票者(連結的頁面)也進行分析。「重要性」高的頁面所投的票的評價會更高,因為接受這個投票頁面會被理解為「重要的物 品」。從新浪、雅虎、微軟的首頁都有我網頁的三個連結的話,可能比我在其他網站找三十個連結還強。如果還有人不理解這個原理,就去想想有句成語叫:三人成 虎。如果有三個人都說北京大街上有老虎,那麼許多人會認為有老虎,如果這三個人都是國家領導人的話,那麼所有人都會認為北京大街上有老虎。 每個網頁都會有PageRank值,如果大家想知道自己網站的網頁PageRank值是多少,最簡單的辦法就是下載一個Google的免費工具欄([url]http://toolbar.google.com/[/url]): PageRank
每當你開啟一個網頁,都可以很清楚的看見此網頁的PageRank值。當然這個值是一個大概數字。 據Google技術負責人介紹,Google除了用PageRank衡量網頁的重要程度以外,還有其它上百種因素來參與排序。其它搜尋引擎也是如此,不可能按照某一種規則來進行搜尋結果的排序。

其他方法


HillTop演算法HillTop?同樣是一項搜尋引擎結果排序的專利,是Google的一個工程師Bharat在2001年獲得的專利。Google的排序規則經常在變化, 但變化最大的一次也就是基於HillTop演算法進行了優化。HillTop究竟原理如何,值得Google如此青睞? 其實HillTop演算法的指導思想和PageRank的是一致的,都是通過網頁被連結的數量和質量來確定搜尋結果的排序權重。但HillTop認為只計算 來自具有相同主題的相關文件連結對於搜尋者的價值會更大:即主題相關網頁之間的連結對於權重計算的貢獻比主題不相關的連結價值要更高。如果網站是介紹“服 裝”的,有10個連結都是從“服裝”相關的網站連結過來,那這10個連結比另外10個從“電器”相關網站連結過來的貢獻要大。Bharat稱這種對主題有 影響的文件為“專家”文件,從這些專家文件頁面到目標文件的連結決定了被連結網頁“權重得分”的主要部分。 與PageRank結合HillTop演算法確定網頁與搜尋關鍵詞的匹配程度的基本排序過程取代了過份依靠PageRank的值去尋找那些權威頁面的方法。 這對於兩個具有同樣主題而且PR相近的網頁排序過程中,HillTop演算法就顯得非常的重要了。HillTop同時也避免了許多想通過增加許多無效連結來 提高網頁PageRank值的做弊方法。 錨文字(Anchor Text) 錨文字名字聽起來難以理解,實際上錨文字就是連結文字。例如,在個人網站上把中央電視臺([url]www.cctv.com[/url])做為新聞頻道的連結,訪問者通過點選網站上的“新聞頻道”就能進入[url]http://www.cctv.com[/url]網站,那麼“新聞頻道”就是中央電視臺網站首頁的錨文字。 錨文字可以做為錨文字所在的頁面的內容的評估。正常來講,頁面中增加的連結都會和頁面本身的內容有一定的關係。服裝的行業網站上會增加一些同行網站的連結 或者一些做服裝的知名企業的連結;另一方面,錨文字能做為對所指向頁面的評估。錨文字能精確的描述所指向頁面的內容,個人網站上增加Google的連結, 錨文字為“搜尋引擎”。這樣通過錨文字本身就能知道,Google是搜尋引擎。 錨文字對搜尋引擎起的作用還表現為可以收集一些搜尋引擎不能索引的檔案。例如,網站上增加了一張張曼玉的照片,格式為jpg檔案,搜尋引擎目前很難索引 (一般只處理文字)。若這張照片連結的錨文字為“張曼玉的照片”,那麼搜尋引擎就能識別這張圖片是張曼玉的照片,以後訪問者搜尋“張曼玉”的時候,這張圖 片就能被搜尋到。 由此可見,在網頁設計中選擇合適的錨文字,會讓所在網頁和所指向網頁的重要程度有所提升。 頁面版式 每個網頁都有版式,包括標題、字型、標籤等等。搜尋引擎也會利用這些版式來識別搜尋詞與頁面內容的相關程度。以靜態的html格式的網頁為例,搜尋引擎通 過網路蜘蛛把網頁抓取下來後,需要提取裡面的正文內容,過濾其他html程式碼。在提取內容的時候,搜尋引擎就可以記錄所有版式資訊,包括:哪些詞是在標題 中出現,哪些詞是在正文中出現,哪些詞的字型比其他的字型大,哪些詞是加粗過,哪些詞是用KeyWord標識過的等等。這樣在搜尋結果中就可以根據這些信 息來確定所搜尋的結果和搜尋詞的相關程度。例如搜尋“×××”,假如有兩個結果,一篇文章標題是《×××的一生》,另一篇文章的標題是《江青的一生》但內 容有提到×××,這時搜尋引擎會認為前者比較重要,因為“×××”在標題裡出現了。 因此,合理的利用網頁的頁面版式,會提升網頁在搜尋結果頁的排序位置。 收費排名 應該說收費排名並不屬於排序技術(這裡指的收費排名也包括競價排名),而是一種搜尋引擎的贏利模式。但收費排名已經最直接的影響到了搜尋引擎的排序,在此也略做說明。 使用者可以購買某個關鍵詞的排名,只要向搜尋引擎公司交納一定的費用,就可以讓使用者的網站排在搜尋結果的前幾位,按照不同關鍵詞、不同位置、時間長短來定義價格。價格從幾千元到幾十萬元不等(像“×××”在3721上的排名費用大多是幾十萬)。 收費排名一方面給搜尋引擎公司帶來收益,一方面給企業帶來訪問量,另外對訪問者也有一定好處。因為訪問者想找“西服”,企業想賣“西服”,於是出錢讓訪問 者能找到他,這樣,買家和賣家能馬上見面。但收費排名給訪問者帶來更多的卻是不真實,結果排序已經失去了公正性,有時候還帶來大量垃圾。在百度搜索引擎上 搜尋“星球”,排在第一位的是一家做石墨的公司,排在第二位的居然是“想找星球?上易趣吧!”(見下圖)。真有些讓訪問者哭笑不得。 PageRank當然,對於企業來說,收費排名是提升網站在搜尋引擎中排名的最直接和最簡單的辦法。如今,如何提升網頁在搜尋引擎中的排序,已經形成了一門職業,叫SEO (Search Engine Optimization),即搜尋引擎優化。SEO是針對搜尋引擎排序的技術,通過修改網頁(或者網站)結構和主動增加網站連結等方法來讓搜尋引擎認為 這些網頁是很重要的,從而提升網頁在搜尋引擎結果中的排序。

排序技術的發展趨勢


各種搜尋引擎的技術改進和優化,都直接反應到搜尋結果的排序上。許多搜尋引擎都在進一步研究新的排序方法,來提升客戶的滿意度。專業人士認為,目前的搜尋引擎排序演算法上還存在兩大不足。
  1. 沒有真正解決相關性。相 關性是指搜尋詞和頁面的相關程度。僅僅通過連結、字型、位置等表面特徵,不能真正判斷搜尋詞和文章的相關性,更何況許多時候這些特徵不會都同時存在。這也 是許多對搜尋引擎做弊方法能有效的原因。另外,有些文章中沒有出現搜尋詞,但說的就是和搜尋詞十分相關的內容,例如搜尋“恐怖分子”,但有網頁是介紹本拉 登的一些破壞行動,文中沒有出現“恐怖分子”的子眼,搜尋引擎就無法搜尋到該網頁。表面特徵只能治標,不能治本。治本的方法應該是增加語意理解,例如主題 詞和關鍵詞的提取,從語意上分析,得出搜尋詞和網頁的相關程度,分析的越準,效果就會越好。
  2. 搜尋結果的單一化。在 搜尋引擎上,任何人搜尋同一個詞的結果都是一樣。這樣明顯不能滿足訪問者。科學家搜尋“星球”,可能是希望瞭解星球的知識,但普通人可能是想找“星球大 戰”電影,但搜尋引擎所給的都是一樣的結果。如何滿足這些不同型別的訪問者,需要對搜尋結果的個性化。國外vivisimo公司([url]http://www.vivisimo.com[/url]) 就是想解決這個問題,他們採用對搜尋結果自動聚類的辦法來滿足不同型別客戶的需要。搜尋結果排序如果要實現從單一化到個性化,vivisimo已經邁出了 一步,但最理想的結果應該是針對每個訪問者,排序結果直接和他們的搜尋習慣和意願有關。搜尋“體育”,對喜歡足球的人應該把足球的相關結果排在前面,對喜 歡籃球的人應該把籃球的相關結果排在前面。
搜尋引擎的排序技術應該也會朝著解決這兩個不足的方向發展:語意相關性和排序個性化。前者需要完善的自然語言處理技術,後者需要記錄龐大訪問者資訊和複雜 的計算,要達到其中任何一個的要求均非易事,如何解決這些難題,任務落在了科學家和工程師們的肩上,哪個搜尋引擎解決了這些問題,她可能會稱為下一個搜尋 世界的霸主。