以求醫為例談搜尋引擎排序演算法的基礎原理

2022-04-04 20:53:57 字數 1135 閱讀 6926

我們向搜尋引擎提交乙個查詢,搜尋引擎會從先到後列出大量的結果,這些結果排序的標準是什麼呢?這個看似簡單的問題,卻是資訊檢索專家們研究的核心難題之一。

怎樣的醫生呢?假設我只有三種選擇:

a醫生,既治眼病,又治胃病;

b醫生,既治牙病,又治胃病,還治眼病;

c醫生,專治牙病。

a醫生肯定不在考慮之列。b醫生和c醫生之間,貌視更應該選擇c醫生,因為他更專注,更適合我的病情。假如再加乙個條件:b醫生經驗豐富,有二十年從醫經歷,醫術高明,而c醫生只有五年從醫經驗,這個問題就不那麼容易判斷了,是優先選擇更加專注的c醫生,還是優先選擇醫術更加高明的b醫生,的確成了乙個需要仔細權衡的問題。

至少,我們得到了乙個結論,擇醫需要考慮兩個條件:醫生的專長與病情的適配程度;醫生的醫術。大家肯定覺得這個結論理所當然,而且可以很自然地聯想到,搜尋引擎排序不也是這樣嗎,既要考慮網頁內容與使用者查詢的匹配程度,又要考慮網頁本身的質量。但是,怎麼把這兩種因素結合起來,得到乙個,而不是兩個或多個排序標準呢?假如我們把這兩種因素表示成數值,最終的排序依據是把這兩個數值加起來,還是乘起來,或是按決策樹的辦法把它們組織起來?如果是加起來,是簡單相加,還是帶權重加呢?

我們可以根據直覺和經驗,通過試錯的辦法,把這兩個因素結合起來。但更好的辦法是我們能找到乙個明確的依據,最好能跟數學這樣堅實的學科聯絡起來。說起來,依據樸素的經驗,人類在古代就能建造出高樓;但要建造出高達數百公尺的 摩天大廈,如果沒有建築力學、材料力學這樣堅實的學科作為後盾,則是非常非常困難的。同理,依據樸素的經驗構建的搜尋引擎演算法,用來處理上萬的網頁集合應該是沒問題的;但要檢索上億的網頁,則需要更為牢固的理論基礎。

求醫,病人會優先選擇診斷準確、**效果好的醫生;對於搜尋引擎來說,一般按網頁滿足使用者需求的概率從大到小排序。如果用q表示使用者給出了乙個特定的查詢,用d表示乙個特定的網頁滿足了使用者的需求,那麼排序的依據可以用乙個條件概率來表示:

p(d|q)

這個簡單的條件概率,將搜尋引擎排序演算法與概率論這門堅實的學科聯絡了起來,這就像在大海中航行的船隻裝備了指南針一樣。利用貝葉斯公式,這個條件概率可以表示為:

可以清楚地看到,搜尋引擎的排序標準,是由三個部分組成的:查詢本身的屬性p(q);網頁本身的屬性p(d);兩者的匹配關係p(q|d)。對於同一次查詢來說,所有網頁對應的p(q)都是一樣的,因此排序時可以不考慮,即

以求醫為例談搜尋引擎排序演算法的基礎原理

為了說明這個問題,我們來研究乙個比搜尋引擎更加古老的話題 求醫。比如,如果我牙疼,應該去看怎樣的醫生呢?假設我只有三種選擇 a醫生肯定不在考慮之列。b醫生和c醫生之間,貌視更應該選擇c醫生,因為他更專注,更適合我的病情。假如再加乙個條件 b醫生經驗豐富,有二十年從醫經歷,醫術高明,而c醫生只有五年從...

以求醫為例談搜尋引擎排序演算法的基礎原理

我們向搜尋引擎提交乙個查詢,搜尋引擎會從先到後列出大量的結果,這些結果排序的標準是什麼呢?這個看似簡單的問題,卻是資訊檢索專家們研究的核心難題之一。為了說明這個問題,我們來研究乙個比搜尋引擎更加古老的話題 求醫。比如,如果我牙疼,應該去看怎樣的醫生呢?假設我只有三種選擇 a醫生肯定不在考慮之列。b醫...

以求醫為例談搜尋引擎排序演算法的基礎原理

以求醫為例談搜尋引擎排序演算法的基礎原理 2011 1 27 08 01 02 標籤 分類 搜尋技術 我們向搜尋引擎提交乙個查詢,搜尋引擎會從先到後列出大量的結果,這些結果排序的標準是什麼呢?這個看似簡單的問題,卻是資訊檢索專家們研究的核心難題之一。為了說明這個問題,我們來研究乙個比搜尋引擎更加古老...