谷歌搜尋算法

谷歌搜尋算法

搜尋算法是利用計算機的高性能來有目的的窮舉一個問題解空間的部分或所有的可能情況,從而求出問題的解的一種方法。谷歌搜尋算法,它的“神秘算法”,決定了哪些網頁能夠在它的搜尋結果中占據顯要位置,這使它既能給其它網站帶來滾滾流量,也能把它們流放到網上的“西伯利亞”。

算法簡介

谷歌搜尋算法谷歌搜尋算法

這是一個很普通的搜尋谷歌每天要處理成千上萬的這種搜尋。但事實上這一搜尋過程十分複雜,可能使一些搜尋引擎誤解。如果把這些單詞輸入到必應,第一個結果是美國國家橄欖球聯盟的歷年球員名單,其中有一個名叫Lawyer Milloy。搜尋結果中的下面幾頁,也沒有與律師Siwek相關的內容。

這一對比顯示出谷歌算法的強大,甚至可以說是智慧型,而這是通過反覆的修正實現的。看起來谷歌擁有解讀用戶需求的神奇力量——不論是多么生僻的搜尋,或是有拼寫錯誤。谷歌將這種能力稱為搜尋質量,並且多年來一直竭力完善算法,以產生精確的搜尋結果。

算法創始

谷歌算法始於PageRank,這是1997年拉里·佩奇(Larry Page)在史丹福大學讀研究生時開發的。佩奇的創新性想法是:基於入連結的數量和重要性對網頁進行評級,也就是通過網路的集體智慧確定哪些網站最有用。隨著谷歌迅速成為網際網路上最成功的搜尋引擎,佩奇和谷歌的另一名創始人塞吉·布林(Sergey Brin)將PageRank這一簡單概念看做谷歌的最根本創新。
但這並不是故事的全部。人們信賴PageRank是因為它是可以進行確認的,但要提供最有用的結果還需要其他技術。這涉及對某些信號、上下文的利用,這樣對於任何查詢,搜尋引擎都能將最有用的結果排在最前面。

背景知識

網路搜尋是一個多方過程。首先,谷歌機器人獲取每個可訪問網站的內容。這些數據將被分解成一個索引(通過文字進行組織,就像書本的目錄),這樣就可以根據內容找到任何頁面。每當用戶鍵入一個查詢,谷歌就會在索引中搜尋相關頁面,然後返回一個包含多達數百萬頁面的列表。最複雜的是對列表進行排序,也就是決定哪些頁面應該出現在最上面。
此時,上下文便有了用武之地。所有搜尋引擎都會引入上下文,但沒有一個像谷歌那樣引入得那樣多、套用那樣自如。PageRank本身也是一個信號,同時也是頁面的一個屬性(指其相對於其他網頁的重要性),該屬性可以幫助確定其與查詢內容的相關性,其中的一些信號在現在看來是顯而易見的。

最佳化搜尋

一直以來,谷歌算法都對頁面的標題給與特別的關注,因此標題成為確定相關性的重要信號。另一個重要技術是錨文本,指的是超連結中的可見文本。因此,“當你進行搜尋時,搜尋引擎總能給出正確的頁面,即使該頁面中沒有你找的關鍵字。”這是谷歌早期架構師斯科特·哈桑(Scott Hassa)的觀點,他曾與佩奇和布林一起在斯坦福工作。之後,搜尋引擎關注的信號還包括新鮮度(對於一些查詢,新近的頁面比較早的頁面更有價值)和地理位置(谷歌知道搜尋者的大致地理坐標,會將本地信息排在前面)等。谷歌目前使用200多種信號來幫助確定搜尋結果的排序。
谷歌工程師發現,一些最重要的信號可能來自谷歌本身。PageRank將受歡迎程度植入了搜尋引擎:成千上萬的網站民主地決定將連結指向哪些網站。但辛格表示,谷歌工程師還利用了另一種民主——成千上萬使用谷歌搜尋的用戶。用戶在搜尋過程中產生的數據被證明同樣很有價值,這些數據包括他們點擊哪些結果、不滿意時對關鍵字的更改、查詢關鍵字與所處地理位置的關係等。這一過程的最直接例子就是谷歌所說的“個性化搜尋”——這是一個可選功能,利用用戶的搜尋歷史和地理位置來確定他想要找的內容(使用這項功能需要先登錄谷歌賬號)。更通常的方法是,谷歌利用其收集的大量數據支持其算法,谷歌對此有極深的理解,可以解讀隱秘查詢的複雜意圖。

識別語義

谷歌以善於鼓勵這些創新而聞名,每年公司都會舉辦“瘋狂搜尋創意”內部展示活動,以便鼓勵那些離奇但有套用潛力的創新。但大多數時候,改進的過程是充滿艱辛的,需要矢志不渝的精神,需要面對嘗試過程中的打擊。有一個不成功的搜尋已經成為傳奇:2001年,辛格得知輸入“audrey fino”時無法搜到預期內容,而只是返回一些讚揚奧黛麗·赫本(Audrey Hepburn)的印度網頁,因為在印度語中“fino”是好的意思。辛格說:“我們知道audrey fino是個人名,但我們的系統沒這么聰明。”
這一失敗使辛格花了多年時間,試圖改進谷歌對姓名的搜尋結果——因為姓名占總搜尋量高達8%。為了解決這一問題,他不得不掌握“bi-gram拆分”,也就是將多個詞分割成獨立的單元。比如,“new york”合在一起組成一個bi-gram,指的是紐約。但也有三個字的情況,比如“new york times”,意思是紐約時報,很明顯二者指的不是同一樣東西。如果用戶輸入的是“new york times square”,意思又變成了紐約時代廣場。人類可以很容易做出區分,而谷歌不是由人工控制的,它依靠的是算法。
“Mike Siwek”這一搜尋可以解釋谷歌是如何解決這一問題的。辛格輸入顯示代碼的命令後,我們就可以看到信號是如何決定搜尋結果排序的:通過bi-gram可以確定mike siwek是一個人名,lawyer是一個同義詞,mi是一個地名。辛格說:“從工程師的角度進行解構,系統會對這些詞進行分割,它會發現lawyer不是姓氏,siwek不是中間名。同時lawyer也不是密西根的一個鎮,因此它是attorney的同義詞。”
這是谷歌從無數次搜尋中獲得的可貴知識。石頭可以是“rock”,可以是“stone”,還可以是“boulder”(漂石)。如果用戶輸入“rokc”,谷歌仍會知道他想找的是“rock”。但如果在“rokc”前加“little”,谷歌則會知道這是“Arkansas”(阿肯色州)的首府。“Arkansas”的縮寫是“ark”,與諾亞方舟同形,但谷歌會將二者區分開來。辛格說:“搜尋中最重要的是理解用戶的意圖,因此你不是在匹配詞語,而是在匹配意思。”
谷歌一直在不斷改進。近期,谷歌工程師莫琳·海曼斯(Maureen Heymans)發現了“Cindy Louise Greenslade”的搜尋結果的問題。用戶輸入這些單詞時,算法會認為應該找一個名叫Cindy Louise的人,於是在加利福尼亞的加登格羅夫市找到了一名心理學家,卻沒有把姓名為“Cindy Louise Greenslade”的人的網頁放在結果的前十名。海曼斯發現,這是因為“Cindy Louise Greenslade”習慣將名字縮寫成“Cindy L. Greenslade”。她表示:“我們的搜尋引擎應該更聰明一點。”於是她增加了一個信號,用來尋找中間名的縮寫。現在正確的結果已經被排在了第五位。

不斷創新

在任何時候,谷歌高效運轉的測試系統都會進行幾十個這種改進。谷歌在全世界專門僱傭了上百人,這些人坐在家裡的電腦前判斷更改後的結果是更好還是更差。但谷歌還有一個更大的測試團隊,這就是成千上萬的谷歌用戶,他們不知不覺地加入了這項長期的質量實驗。
每當工程師想測試一項技術調整時,他們會在一小批隨機用戶中運行這些算法,而絕大多數的用戶扮演的是參照組的角色。需要測試的更改太多,因此谷歌放棄了一次只測試一項技術調整的策略。搜尋質量工程師派屈克·賴利(Patrick Riley)表示:“在大多數搜尋過程中,你同時都處於多個‘實驗組’和‘參照組’之中。”但他隨後又做出了更正:“事實上,所有搜尋都被捲入了實驗之中,因此用戶每次用谷歌搜尋,都作了一次‘小白鼠’。”
這種靈活性——增加信號、更改代碼、立即測試的能力——就是谷歌團隊為什麼說他們可以應對來自必應、Twitter和Facebook的任何挑戰的原因。事實上,在過去的六個月中,谷歌進行了200多項改進,其中一些似乎在模仿(但超越了)它的競爭對手(谷歌表示這只是巧合,稱其多年來一直在增加新功能),其中之一就是實時搜尋。
佩奇數月前曾表示谷歌應該每一秒鐘都搜尋整個網路,因此使這一功能備受期待。當用戶搜尋具有時效性的話題時,谷歌結果頁面的10個藍色連結中會有一個“最新結果”框。該框帶有拖動條,顯示的是從新聞媒體、部落格和Twitter等獲得最新內容。同樣,谷歌使用信號來確保最有用的tweet(Twitter上發布的訊息)出現在實時信息框中。
除了實時搜尋,谷歌還引入了一項新功能,稱作“Goggles”。該功能可以將用戶手機上拍攝的照片視作搜尋請求。谷歌一直努力將搜尋變成一種隨時隨地的行為,“goggles”也是該努力的一部分。有了攝像和語音識別功能,智慧型手機就會變成你的眼睛和耳朵。只要找到正確的信號,任何東西都可以變成搜尋請求。

相關詞條

相關搜尋

熱門詞條

聯絡我們