1. 類似於搜索引擎的 對搜索結果排序的演算法急求。
理論上,我們可以根據任意的規則對搜索引擎結果進行排序,比如按照訪問量排序等,然而在Google使用的排序演算法問世後,上述的排序方試都被證明並不適用於互聯網。 Google是目前為止最流行的一個通用的搜索引擎,最初只是兩個斯坦福大學學生的科研項目,Sergey和Larry Page希望讓絕大部分使用搜索引擎的人都能搜索結果的第一頁找到他想要的結果,為了達到這個目的他們發明了開創時代的PageRank(據說名字來源於LarryPage)排序演算法,並將此發表在論文《The Anatomy of a Large-Scale Hypertextual Wed Search Engine》中,之後的實踐證明,PageRank對搜索結果的排序優於其他演算法。 PageRank的原理類似於科技論文中的引用機制:誰的論文被引用次數多,誰就是權威。在互聯網上,鏈接就相當於「引用」,在B網頁中鏈接了A,相當於B引用了A,如果在C、D、E、F中都鏈接了A,則說明A網頁重要,A網頁的PageRank值也就高。 計算PR值有一個簡單的公式: 網頁A級別=(1-系數)+系數*(網頁1級別/網頁1鏈出個數+網頁2級別/網頁2鏈出個數+++++ 網頁N級別/網頁鏈出個數)其中系數為一個大於0小於1的數。一般設置為0.85。網頁1、網頁N表示所有鏈接指向A的網頁。 由以上公式可以看出如下三點。 1、鏈指向A的網頁越多,A的級別越高。即A的級別和指向A的網頁個數成正比,在公式中表示,N越大,A的級別越高。 2、鏈指向A的網頁,其網頁級別越高,A的級別也越高。即A的級別成正比,在網頁中表示,網頁N級別越高,A的級別也越高。 3、鏈指向A的網頁,其鏈出的個數越多,A的級別越低。即A的級別和指向A的網頁的鏈出個數成反比,在公式中表示,網頁N鏈出個數越多,A的級別越低。 通俗的講,從網頁A導向網頁B的鏈接,可以看作是網頁A對頁面B 的支持投票,Google根據這個投票數來判斷頁面的重要性,但Google看了投票數之後還對投票者(鏈接的頁面)進行了分析、重要性較高的鏈接所投的票的價值會更高,比如新浪、雅虎、微軟的首頁都有某頁面的鏈接,可能比其在另外網站取得的30個鏈接都要有效。 通過上面公式,可以形成一個巨大的方程組,對這個方程組求解,就得到每個網頁的PR值。當然互聯網有數百億個網頁,那麼這個方程組就有數百億個未知數,方程組雖然是有解,但計算非常復雜。 每個網頁都有PR值。下載Google的免費工具欄後,沒打開一個網頁都可以清楚地看見其PR值(大概) 國內的網路是全球最重要的的搜索引擎,其創始人李彥宏在1996年申請了名為「超鏈分析」的專利。「超鏈分析」的原理和PR的原理類似,所以在搜索引擎的演算法上,兩種搜索引擎的主體很相近。 除了用PR演算法衡量網頁的重要程度意外,還有上百種因素參與排序。現在常用的演算法有如下3中: (1)HillTop演算法,HillTo是搜索引擎結果排序演算法,由Google工程師Bharat在2001年提出並獲得專利。Google自誕生之日起,其排序規則就經常變化,但變化最大的一次就是基於HillTo演算法進行的改進。 HillTo演算法的指導思想和PR是一致的,都是通過網頁被鏈接的數量和鏈接質量來確定搜索結果的排序權重,但HillTo認為只計算來自具有相同主題的相關文檔鏈接對搜索者的價值會更大:即主題相關網頁之間的鏈接對於權重計算的貢獻比主題不相關的鏈接價值要更高。如果網站是介紹服裝的,有10個鏈接都是從「服裝」相關網站鏈接過來,則這10個鏈接比另外10個從「電器」網站鏈接過來的貢獻大。Bharat稱這種對主題有影響的文檔為「專家」文檔,從這些專家文檔頁面到目標文檔的鏈接決定了被鏈接網頁的重要性。 PR與HillTop演算法結合後,在排序過程中就能更好的提現文檔與搜索關鍵詞之間的匹配程度,在兩個具有同樣主題且PR相近的網頁排序中,HillTop演算法顯得非常重要。HillTop同時也避免了許多想通過增加無效鏈接來提高網頁PR值的作弊方法。 (2)錨文本。錨文本就是鏈接文本。錨文本可以作為其所在內容的評估。正常來講,頁面中增加的鏈接都會個頁面本身的內容有一定關系。如服裝的行業網站上會增加一些同行網站的鏈接或者一些做服裝的致命企業的鏈接。另一方面,錨文本能作為所指向頁面的評估。錨文本能耐精確地描述所指向的內容,如個人網站上你增加Google的鏈接,則錨文本顯示問「搜索引擎」。這樣通過錨文本本身就能知道,Google是搜索引擎。 由此可見,在網頁中選擇合適的錨文本,則可讓所在網頁和所指向的網頁的重要程度有所提升。 (3)頁面板式。每個網頁都有板式,包括標題、字體、標簽等。搜索引擎也會利用這些板式來識別搜索詞也頁面內容的相關程度。以靜態的html格式的網頁為例,搜索引擎通過蜘蛛把網頁抓取下來後,需要圖區裡面的正文內容,過濾其他HTML代碼。在提取內容時,搜索引擎就可以記錄所有板式信息,包括:哪些詞在標題中出現,哪些詞在正文中出現,哪些詞比其他字體大,哪些詞加粗過,哪些詞用KeyWord表示過的等,這樣在搜索過程中就可以根據這些信息來確定所搜索詞的相關程度。 對於排序演算法的真正實現細節,Google等搜索引擎不會透露,但我們能掌握一些原則。MattCutts是一位Google的雇員,他在其博客上說「SEM工作中最明智的選擇是從下面這個問題得來的:對用戶最有用的是什麼?」而DannySullivan,這位當今搜索領域非常致命的權威人士,在回答「如何考慮SEO的真諦」這個問題事表示「好的Html標題。優秀的頁面正文、高價值的內容,同時還要確保蜘蛛能夠順利訪問網站,這些准則已經發揮了將近二十年的作用」。
2. 搜索引擎演算法體系簡介——排序和意圖篇
以下是對劉老師在DataFun Talk演算法架構系列活動中關於搜索引擎演算法體系——排序和意圖篇的簡化整理。劉老師重點講解了搜索引擎演算法在排序和意圖識別領域的應用,隨著技術發展,搜索演算法經歷了從簡單模型到深度學習的演變。
早期,2010年前的搜索演算法主要依賴簡單模型如貝葉斯、LR和決策樹,雖效果良好,但數據量小。進入2010年至2013年,復雜演算法如貝葉斯網路、點擊模型等開始應用,如GBDT/RF用於排序,深度學習如CNN、RNN得到廣泛應用。現在的搜索引擎不僅演算法提升,還引入監督、非監督學習和強化學習,嘗試將這些理論應用於實際場景。
搜索引擎框架經歷了三個階段:初始階段依賴用戶手動查找;第二階段引入開放平台,要求演算法精準定位用戶需求;第三階段是知識圖譜和精準問答,涉及實體識別和關系挖掘。搜索引擎開發框架中,查詢分析包括查詢詞分析和意圖識別,文章排序則有多種模型,如LTR、點擊模型和個性化模型。
在演算法部分,查詢分析主要通過規則、分類器(如神經網路)和深度學習進行,文章排序則涉及LTR、點擊模型和個性化模型的結合。意圖識別則運用規則挖掘和機器學習模型,如Bayes、LR和深度學習模型。這些模型各有優缺點,如規則識別演算法簡單高效,深度學習模型計算速度快但需要大量數據。
最後,劉老師提到的未來趨勢包括使用用戶行為數據的增強學習和對抗網路模型,以及結合人工標注數據的Ubias LTR,以優化排序策略和用戶體驗。如果你想深入了解這些演算法,可以查閱相關論文和進一步探討。
3. 搜索引擎的排名原理是怎樣的
要了解搜索引擎優化,首先了解搜索引擎的基本工作原理。搜索引擎排名大致上可以分為四個步驟。 爬行和抓取
搜索引擎派出一個能夠在網上發現新網頁並抓取文件的程序,這個程序通常被稱為蜘蛛或機器人。搜索引擎蜘蛛從資料庫中已知的網頁開始出發,就像正常用戶的瀏覽器一樣訪問這些網頁並抓取文件。
並且搜索引擎蜘蛛會跟蹤網頁上的鏈接,訪問更多網頁,這個過程就叫爬行。當通過鏈接發現有新的網址時,蜘蛛將把新網址記錄入資料庫等待抓取。跟蹤網頁鏈接是搜索引擎蜘蛛發現新網址的最基本方法,所以反向鏈接成為搜索引擎優化的最基本因素之一。沒有反向鏈接,搜索引擎連頁面都發現不了,就更談不上排名了。
搜索引擎蜘蛛抓取的頁面文件與用戶瀏覽器得到的完全一樣,抓取的文件存入資料庫。 索引
搜索引擎索引程序把蜘蛛抓取的網頁文件分解、分析,並以巨大表格的形式存入資料庫,這個過程就是索引。在索引資料庫中,網頁文字內容,關鍵詞出現的位置、字體、顏色、加粗、斜體等相關信息都有相應記錄。
搜索引擎索引資料庫存儲巨量數據,主流搜索引擎通常都存有幾十億級別的網頁。 搜索詞處理
用戶在搜索引擎界面輸入關鍵詞,單擊「搜索」按鈕後,搜索引擎程序即對輸入的搜索詞進行處理,如中文特有的分詞處理,對關鍵詞詞序的分別,去除停止詞,判斷是否需要啟動整合搜索,判斷是否有拼寫錯誤或錯別字等情況。搜索詞的處理必須十分快速。 排序
對搜索詞進行處理後,搜索引擎排序程序開始工作,從索引資料庫中找出所有包含搜索詞的網頁,並且根據排名計演算法計算出哪些網頁應該排在前面,然後按一定格式返回「搜索」頁面。
排序過程雖然在一兩秒之內就完成返回用戶所要的搜索結果,實際上這是一個非常復雜的過程。排名演算法需要實時從索引資料庫中找出所有相關頁面,實時計算相關性,加入過濾演算法,其復雜程度是外人無法想像的。搜索引擎是當今規模最大、最復雜的計算系統之一。
但是即使最好的搜素引擎在鑒別網頁上也還無法與人相比,這就是為什麼網站需要搜索引擎優化。