搜索引擎原創(chuàng)識別與站內(nèi)權(quán)重繼承算法解析
有很多人問過我,說Mr.Zhao啊,百度如何判斷偽原創(chuàng)和原創(chuàng)?百度喜歡什么樣的文章?什么樣的文章比較例如獲得長尾詞排名?等等諸如此類的問題。面對這些問題,我常常不知如何回答。如果我給一個比較大方向一些的答案,例如要重視用戶體驗、要有意義等等,那么提問者會覺得我在應(yīng)付他,他們往往抱怨說這些太模糊。可是我也沒法再給出具體的內(nèi)容,畢竟我不是百度,具體算法我又何德何能的為你們指點江山呢?
為此,我開始寫這個“如果是我”系列的文章。在這一系列文章里,我假設(shè)如果是我絞盡腦汁的來為網(wǎng)民提供較好的搜索服務(wù),我會怎么做,我會怎么對待文章內(nèi)容、如何對待外鏈、如何對待網(wǎng)站結(jié)構(gòu)等等諸如此類的站點元素。當然,本人技術(shù)有限,我只能寫一點我稍微理解的東西。而百度以及其它的商業(yè)搜索引擎,他們有大量比我優(yōu)秀的人才,相信他們的算法以及處理問題的方式會比我完善很多,而我之所以寫這些,無外乎拋磚引玉,希望大家看后,心里有一個大概。畢竟在SEO的道路上走過一段時間后,沒有誰能夠當誰的老師,一些觀點僅供參考。
在此,我要鄭重聲明,這個系列文章中所有涉及到的思想、算法與程序,均非本人所寫,全部是我從一些公開的資料里搜集而得的。同時,相信大家也能理解,如果這些免費公開的東西都能做到如此程度,那么那些商業(yè)機密就更不用提了。
好的,現(xiàn)在開始。
如果是我,我會喜歡什么樣子的文章呢?我會喜歡我的用戶喜歡的文章,如果硬要加判定標準,那無外乎是兩種:1.原創(chuàng)且用戶喜歡。2.非原創(chuàng)且用戶喜歡。在這里,我的態(tài)度很明顯,偽原創(chuàng)就是非原創(chuàng)。那么用戶喜歡什么樣的文章呢?很顯然,一些新觀點、新知識往往是用戶喜歡的,也就是說通常原創(chuàng)文章都是用戶喜歡的,而且即便用戶不喜歡,原創(chuàng)站點作為新鮮內(nèi)容的制造者,也應(yīng)該受到一定的保護。那么非原創(chuàng)的文章用戶就一定不喜歡嗎?誠然否也。一些站點,其內(nèi)容往往是經(jīng)過搜集整理后聚合而成的,那么這些站點對用戶來說就是有價值的,其相對應(yīng)的文章理應(yīng)獲得較好的排名。
由此可見,我需要重視兩類文章即可。一是原創(chuàng)文章,二是有價值的信息聚合站點下的文章。
首先要明確一點,本文探討范圍僅限內(nèi)容頁,而非專題頁、列表頁和首頁。
那么我在甄別這兩類文章之前,我需要先進行信息的采集。本文對于spider程序部分不進行闡述。當spider程序下載下來網(wǎng)頁信息后,在內(nèi)容處理的模塊中,我需要先對內(nèi)容除噪。
內(nèi)容除噪,并非大家經(jīng)常性的誤以為僅僅除去代碼而已。對于我來說,我還要出去頁面部分非正文內(nèi)容的文字。比如導(dǎo)航條、比如底部文字以及各個文章列表。將它們的影響除去后,我將得到一段僅僅包含網(wǎng)頁正文內(nèi)容的文本段落。寫過采集規(guī)則站長朋友應(yīng)該知道,這個并不難。但搜索引擎畢竟是一款程序,不可能針對每個站寫個類似于的采集規(guī)則的東西,所以我需要建立一套除噪算法。
在此之前,我們先明確我們的目的。
上圖中很明顯內(nèi)容1是用戶最為需要的,內(nèi)容2是用戶可能感興趣的,其余均是無效的噪音。那么針對于此,我們可以發(fā)現(xiàn)如下幾特征:
1.所有的調(diào)用列表全部是在一個信息塊里,這個信息塊絕大部分是由標簽組成,即便有游離于標簽的內(nèi)容,其文字也基本是固定的,且在站內(nèi)頁面中存在大量重復(fù),較為容易判斷。
2.內(nèi)容2一般緊鄰著內(nèi)容1。而且內(nèi)容2中的鏈接錨文本,與內(nèi)容1存在相關(guān)性。
3.內(nèi)容1部分,是有文字文本內(nèi)容和標簽混合而成,且在通常情況下,文本文字內(nèi)容在網(wǎng)站網(wǎng)頁集合中具有唯一性。
那么,針對于此,我采用廣為人知的標簽樹方式,將內(nèi)容頁進行分解。
從網(wǎng)頁的標簽布局上來看,網(wǎng)頁是通過若干的信息塊來提供內(nèi)容的,而這些信息塊又是由特定的標簽規(guī)劃出來的,常見的標簽有div ul li p table tr td 等,我們依照這些標簽,將網(wǎng)頁費解為樹狀結(jié)構(gòu)。
上圖是我手繪的簡單的標簽樹,通過這種方式,我可以非常輕松的識別出各個信息塊。然后我設(shè)定一定闕值A(chǔ)為內(nèi)容比重闕值。內(nèi)容比重闕值為信息塊中文本字數(shù)與標簽出現(xiàn)此處的比值。我設(shè)定當網(wǎng)頁中信息塊內(nèi)容比重闕值大于A時,才會被我列為有效內(nèi)容塊(此舉是為了杜絕過分的多內(nèi)鏈,因為如果一篇文章布滿內(nèi)鏈,則不利于用戶體驗),然后我再比對內(nèi)容塊中的文本,當其具有唯一性時,此一個或多個內(nèi)容塊的集合,即為我所需要的“內(nèi)容1”。
那么內(nèi)容2我要如何處理呢?在講解處理內(nèi)容2之前,我先講解一下內(nèi)容2的意義。正如我先前所說,如果是一個注重用戶體驗的聚合性網(wǎng)站,那么他的作用是將現(xiàn)有的互聯(lián)網(wǎng)內(nèi)容經(jīng)過精心的分類與關(guān)聯(lián),來方便用戶更好、更有效的閱讀。針對這樣的站點,即便其文章不是原創(chuàng)而是從互聯(lián)網(wǎng)上摘抄的,我也會給予其足夠的重視與排名,因為它良好的聚合內(nèi)容往往更能滿足用戶的需求。
那么針對聚合站點,我可以通過“內(nèi)容2”來進行粗略的判斷。簡而言之,如果是一個良好的聚合站點,首先其內(nèi)容頁必須存在內(nèi)容2,同時內(nèi)容2必須占重要部分。
好了,識別內(nèi)容2很簡單,對于內(nèi)容比重闕值低于某個特定值的信息塊,我全部判斷為鏈接模塊。我將內(nèi)容1通過某些方式(具體方式本文后半部分講解),提取出主題B。我將鏈接模塊中的所有a標簽的錨文本分別進行分詞,如果所有的錨文本均與主題B相符,則將此鏈接模塊判定為內(nèi)容2。設(shè)定鏈接闕值C,鏈接闕值為內(nèi)容2中標簽出現(xiàn)次數(shù)除以所有鏈接模塊所出現(xiàn)的a標簽次數(shù)所得的比重,若大于C,則此網(wǎng)站可能為聚合網(wǎng)站,針對內(nèi)容排名計算時會引用聚合站點特定的算法。
拓展閱讀1開始:
我相信很多SEO從業(yè)者剛接觸這行時,就聽說過一件事,就是內(nèi)容頁面導(dǎo)出鏈接要具有相關(guān)性。還有一件事,就是頁面下面要有相關(guān)閱讀,來吸引用戶縱深點擊。同時應(yīng)該還聽人講過,內(nèi)鏈要適中,不可太多等。
但很少有人會說為什么,而越來越多的人因為不明其內(nèi)在道理,而漸漸忽視了這些細節(jié)。當然,以前的一些搜索引擎算法在內(nèi)容上的注重程度不夠,也起到了推波助瀾的作用。但是,如果從陰謀論的角度上來看,我可以假設(shè)出這么一個道理。
絕大部分用戶的搜索頁面,第一頁只有10個結(jié)果,除去我自家產(chǎn)品,往往僅剩下7個左右,一般用戶最多只會點擊到第3頁,那么我需要的優(yōu)質(zhì)站點其實不到30個就可以最大限度的滿足用戶體驗。那么經(jīng)過3-5年的布局,逐漸篩選出一些耐得住寂寞和認真做細節(jié)的站,這時候我再將這一部分算法進行調(diào)整,進而篩選出這些優(yōu)質(zhì)站點,推送給用戶。當然,在做的過程中還有更多的參考因素,比如域名年齡、JS數(shù)量,網(wǎng)站速度等。
拓展閱讀2開始:
你們說,為什么當站文章中有大量相同時,會快速引起搜索引擎懲罰呢?這里我說的不是摘抄與原創(chuàng)的問題,而是你站內(nèi)自己和自己的文章重復(fù)。之所以搜索引擎反應(yīng)這么快,同時懲罰嚴厲,根本原因就是在你的文章中,他提取不到內(nèi)容1。
好,經(jīng)過這一系列處理,我已經(jīng)獲得了內(nèi)容1與內(nèi)容2了,下面該進行原創(chuàng)識別的算法了。
現(xiàn)在基本上搜索引擎對于原創(chuàng)的識別,在大面上采用的是關(guān)鍵詞匹配結(jié)合向量空間模型來進行判斷。Google就是這么做的,在其官方博客有相應(yīng)的文章介紹。這里,我就做個大白話版本的介紹,爭取做到簡單易懂。
那么,我通過分析內(nèi)容1,得到內(nèi)容1中權(quán)重最高的關(guān)鍵詞k,那么按照權(quán)重大小進行排序,前N個權(quán)重最高的關(guān)鍵詞的集合我命名為K,則K={k1,k2,……,kn},則每一個關(guān)鍵詞都會對應(yīng)一個其在頁面中獲取到的權(quán)重特征值,我將k1對應(yīng)的權(quán)重特征值設(shè)定為t1,則前N個權(quán)重關(guān)鍵詞對應(yīng)的特征值集合則為T={t1,t2,……,tn},那么我們有了這個特征項,就能計算出其相對應(yīng)的特征向量W={w1,w2,……,wn}。接著我將K拼成字符串Z,同時MD5(Z)則表示字符串Z的MD5散列值。
那么假定我判定的兩個頁面分別是i與j。
則我計算出兩個公式。
1.當MD5(Zi)=MD5(Zj)時,頁面i與頁面j完全相同,判斷為轉(zhuǎn)載。
2.設(shè)定一個特定值α
當0≤α≤1的時候,我判定頁面相似為重復(fù)。
由此,對于原創(chuàng)文章的判斷就結(jié)束了。好了,苦逼煩悶的枯燥講解告一段落,下面我用大白話再重新復(fù)述一遍。
首先,你的內(nèi)容一模一樣,一個字都不帶改的,那肯定是摘抄的啊,這時候MD5散列值就能迅速的判斷出來。
其次,很多SEO他們懶,進行所謂的偽原創(chuàng),你說你偽原創(chuàng)時插入點自己的觀點與資料也成,結(jié)果你們就是改個近義詞什么的,于是我就用到了特征向量,通過特征向量的判斷,把你們這些低劣的偽原創(chuàng)抓出來。關(guān)于這個,判斷思想很簡單,你權(quán)重最高的前N個關(guān)鍵詞集合極為相似的時候,判斷為重復(fù)。這里所謂的相似包括但不僅僅局限于權(quán)重最高的前N個關(guān)鍵詞重合,于是構(gòu)建了特征向量,當對比的兩個向量夾角與長度,當夾角與長度的差異度小于某個特定值的時候,我將其定義為相似文章。
備注1開始:
一直關(guān)注google反作弊小組官方博客的朋友們,應(yīng)該看過google關(guān)于相似文章判斷算法的那篇博文,在那篇文章中,其主要使用的是余弦定理,就是主要計算夾角。不過后來Mr.Zhao又看了好幾篇文獻,覺得那篇博文應(yīng)該僅僅是被google拋棄后才解密的,現(xiàn)在大體算法的趨勢,應(yīng)該是計算夾角與長度,所以選擇現(xiàn)在給大家看的這個算法。
好的,這里我們注意到了幾個問題。
1.α被判定為重復(fù)時的取值范圍是否可變?
2.內(nèi)容中如何提取出關(guān)鍵詞?
3.內(nèi)容中關(guān)鍵詞的權(quán)重值是如何賦予的?
下面我來逐一解答。
注:相關(guān)網(wǎng)站建設(shè)技巧閱讀請移步到建站教程頻道。