瀉葯,人在美國剛下飛機
在知乎看到這么一個問題
因為自己小組是做電商平台的,在對商品進行搜索的時候自然也會用到模糊搜索算法,所以對這個問題比較感興趣,然后看到了這么一個回答
搜索引擎如何做到模糊匹配? - 陳運文的回答 - 知乎 https://www.zhihu.com/question/22855572/answer/288432579
哇,不明嚼栗,有很多不懂的地方,想一個個地了解一下(才不是開坑),首先就是從PageRank開始
搜索引擎的根本用途在於根據用戶的查詢,快速而准確地從網絡的海洋中找到用戶最需要的網頁。這是針對網頁的一類特殊的信息檢索過程。它主要有以下兩個特點:
- 搜索的數據量相當大
- 搜索的數據之間質量參差不齊
因此,基本的解決思路是根據查詢,對這些網頁進行排序,按照對用戶搜索目的的判斷,將最符合用戶需求的網頁依次排在最前面。也就是說,搜索引擎要解決的最主要問題是對網頁排序模型的設計。
佩奇和布林(google的創始人!不是你們想的那個佩奇)兩個人開始這項研究的緣由來自於導師的提議,因為當時搜索引擎的發展遇到了瓶頸——缺乏合理的排序算法。在1998年之前(也就是PageRank正式問世的那一年之前),即便是當時最先進的搜索引擎,也是主要依靠以關鍵詞詞頻為核心的排序技術(這一點在文檔檢索中保持了旺盛的生命力,我們到現在還主要依靠”TF(詞頻)×IDF(逆向文件頻率)TF(詞頻)×IDF(逆向文件頻率)”模型為搜索結果排序)。但是在搜索引擎技術中,依賴於詞頻的模型有其天然缺陷:網頁排序的結果僅僅考慮了基於關鍵詞的相關度判斷,而未考慮網頁本身的質量。顯而易見的是,海量的網頁來自不同的制造者,質量一定是參差不齊的。可以想象,如果有一些低質量的網頁對於某些詞的詞頻很高,這相當於是一個人一直在無意義的絮叨某句話,雖然毫無信息量可言的垃圾,卻在基於關鍵詞的模型下如魚得水,一旦其中某個詞被查到,立即能“嶄露頭角”。這一點在當時正是阻礙搜索引擎發展的最大困難。比如,令人感到諷刺的是,在1997年,堪稱早期互聯網巨子的當時四大搜索引擎在搜索自己公司的名字時, 居然只有一個能使之出現在搜索結果的前十名內,其余全被這種垃圾網頁擠到后面去了[1]。
總結一下,網頁排序的任務中,最核心的難點在於判別網頁質量。如果網頁數量很少,這件事就簡單了,靠人工賦予其得分即可,但實際情況是:互聯網山網頁如大海般浩瀚,且新的網頁不斷產生,舊的網頁也在不停變化,這是人工所不可能完成的任務。我們只能依靠計算機和算法,自動評估網頁質量。於是,當時正在讀博的佩奇和布林想到了學術論文的質量判別方法:依靠文章的引用情況。一篇論文的好壞當然與它的引用直接相關,有多少文章引用,什么樣級別的文章在引用,才是判斷一個文章質量最“靠譜”的標准。這一點放在網頁排序上也是一樣,論文的引用相當於就是網頁的鏈接,不論某個網頁再怎么在關鍵詞方面做“手腳”,沒人願意鏈接你,那還是白扯。於是,作為一門學問的“鏈接分析”就此產生了,這一點也是PageRank算法最基本的原理。
鏈接分析
根據上面的分析,我們可以將互聯網上的網頁模擬為一個節點,而這個網頁的“出鏈”看做是指向其他節點的一條“有向邊”,而“入鏈”則是其他節點指向這個節點的有向邊。這樣整個網絡就變成了一張有向圖。事情到此就顯得容易解決了,因為我們用圖論中最普通的有向圖模型,完成了對此類問題的建模。具體的說,網頁質量的評估是遵循以下兩個假設的:
- 數量假設:一個節點(網頁)的入度(被鏈接數)越大,頁面質量越高
- 質量假設:一個節點(網頁)的入度的來源(哪些網頁在鏈接它)質量越高,頁面質量越高
但是現在還面臨着一個問題,就是既然一個網頁A的質量與鏈接它的頁面質量相關,而鏈接A的那些頁面(我們記為B)的質量又與鏈接B們的頁面相關。以此類推下去,好像進入了一個無窮無盡的死循環。為了解決這個問題,兩顆聰明的大腦又想到,也許可以用數學中隨機過程的“隨機游走模型”解決這個問題。隨機游走模型又稱“醉漢模型”,指的是事物當前的狀態只與其上一個狀態有關,而與其再之前的狀態無關。就好比一個醉漢,他這一步走到哪里只跟他上一步在哪里有關,這有點接近於物理學中常講的“布朗運動”。用戶上網也可以看做是一個類似的過程。我們可以假設,初始狀態時,用戶訪問所有頁面的概率都是等大的,而每次訪問過后,用戶會依照此時該頁面中給出的鏈接以相等概率訪問鏈接所指向的頁面,那這就好比是用戶在剛剛我們所說的有向圖上做“隨機游走”。所以,通過對這種隨機游走的概率分析,我們就能得到用戶在上網時,停留在哪一個網頁上的概率要大一些,概率越大的,表示其質量越高。
PageRank
假設我們現在有這么一張網絡圖,ABCD分別表示一個網站,箭頭表示可以鏈接到的下一個網站
在一開始,用戶訪問每個網站的概率都是一樣的,即訪問ABCD的概率都是1/4,(1/4,1/4,1/4,1/4)就是初始概率向量,記為V0
對於A,它可以鏈接到BCD,所以其概率向量是(0,1/3,1/3,1/3),同理我們可得BCD的概率向量分別是(1/2,0,0,1/2)、(1,0,0,0)、(0,1/2,1/2,0)
我們將這些向量轉置后合起來,就得到了一個隨機過程中經典的概率轉移矩陣,記為T:
將T和V0相乘,我們得到了經過一次跳轉后訪問到各網站的概率向量V1:
由此類推,我們得到了跳轉n次后的概率向量Vn的計算公式:
佩奇和布林發現,當n→+∞,且概率轉移矩陣T滿足以下3個條件時,limn→+∞Vn最終收斂,保持在一個穩定值附近。
- T為隨機矩陣。即所有T[i][j]≥0,且的所有列向量的元素加和為1,∑ni=1T[i][j]=1
- T是不可約的。所謂不可約是說T所對應的圖是強連通的,即圖中任何一個節點都可以達到其他任何一個節點,它要求概率轉移矩陣不存在某些特殊情況,比如某個列向量都為0,即有一個網頁沒有鏈接到任何其他網頁,我們把這類情況又稱為終止點;或者是在概率轉移矩陣的主對角線上,存在有一個元素為1的情況,即這個網頁鏈接只鏈接它自己,我們把這類情況又稱為陷阱。這兩類特殊的情形在后面會詳細說。
- T是非周期的。所謂周期性,體現在Markov鏈的周期性上。即若A是周期性的,那么這個Markov鏈的狀態就是周期性變化的。因為A是素矩陣(素矩陣指自身的某個次冪為正矩陣的矩陣),所以A是非周期的
比如上面這個例子中,limn→+∞Vn=limn→+∞Tn⋅V0=(3/9,2/9,2/9,2/9)T
這表明,經過足夠多次的網頁跳轉,用戶停留在網頁A的概率要比停留在B, C, D的概率高,而后三者基本是等概率的。經過這樣的計算得到的每個網頁的概率值也叫PR值,是評估網頁質量的依據。也就是說,在我們使用搜索引擎時,在保持網頁與查詢一定相關度的基礎上,PR值可以提供非常不錯的排序依據