Shingle網(wǎng)頁去重算法對(duì)SEO聚合頁的影響
頁去重算法對(duì)SEO聚合頁的影響.jpg)
Shingle算法是搜索引擎去掉相同或相似頁面的其中一種基本算法,做SEO聚合頁面的時(shí)候如何讓頁面之間不重復(fù)?如何處理重復(fù)度的問題?可以反推Shingle算法得到一些啟發(fā)。
Shingle在英文中表示相互覆蓋的瓦片。先通過一個(gè)例子來說明Shingle算法:
假設(shè)有A、B兩個(gè)文檔的標(biāo)題,A文檔的標(biāo)題是:明起電話訂火車票可全國(guó)通取取票時(shí)間延12小時(shí);B文檔的標(biāo)題是:火車票電話訂票實(shí)現(xiàn)全國(guó)通取網(wǎng)上預(yù)售期延長(zhǎng)。
搜索引擎如何知道這兩篇文檔標(biāo)題是否是重復(fù)的?比如我們可以以2個(gè)漢字切為一個(gè)Shingle的方法:
對(duì)于長(zhǎng)度L的文檔,每隔N個(gè)漢字切一個(gè)Shingle,這樣一共切到L-N+1個(gè)shingle,A文檔標(biāo)題切成了L-N+1=21-2+1=20個(gè)Shingle,B文檔標(biāo)題切成了L-N+1=20-2+1=19個(gè)Shingle。
A、B兩個(gè)文檔標(biāo)題共同的Shingle有圖上7個(gè)加粗的:電話、話訂、火車、車票、全國(guó)、國(guó)通、通取。
A、 B兩個(gè)文檔標(biāo)題一共有20+19-7=32個(gè)Shingle。
然而,A、B兩個(gè)文檔標(biāo)題共同的Shingle,除以,A、B兩個(gè)文檔標(biāo)題一共有的Shingle,就是這兩個(gè)文檔標(biāo)題的Jaccard系數(shù),可以用來判斷A、B兩個(gè)文檔標(biāo)題的相似度。
A、 B兩個(gè)文檔標(biāo)題的Jaccard系數(shù)=7/(20+19-7)=0.21875
從兩個(gè)文檔的標(biāo)題,可以延伸到兩個(gè)頁面文檔,再延伸到N個(gè)頁面,通過Jaccard系數(shù)是否達(dá)到相似所需要的標(biāo)準(zhǔn)來判斷頁面與頁面是否相似。
這就是Shingle算法,兩個(gè)集合的交集除以兩個(gè)集合的并集,得到Jaccard系數(shù),通過判斷Jaccard系數(shù)是否大于某個(gè)數(shù),來判斷兩個(gè)集合是否重復(fù)。
反推Shingle算法,如果Jaccard系數(shù)小于某個(gè)數(shù),就不重復(fù)了,先給每個(gè)文檔集合拆分成若干個(gè)Shingle,再兩兩計(jì)算Jaccard系數(shù),如果小于某個(gè)數(shù),生成頁面即可。
我之前做的一個(gè)項(xiàng)目使用的一個(gè)方法,雖然比較笨,也還算實(shí)用,分享一下:
假設(shè)北京電影品類有100個(gè)團(tuán)購(gòu)單子,現(xiàn)在要為下圖右邊這些詞設(shè)計(jì)聚合頁面,每個(gè)頁面展示10個(gè)單子,假設(shè)jaccard系數(shù)大于0.3判定為頁面重復(fù),怎么生成不重復(fù)頁面?
如下圖展示單子的標(biāo)題和長(zhǎng)標(biāo)題(假設(shè)seo聚合頁用的長(zhǎng)標(biāo)題,因?yàn)殚L(zhǎng)標(biāo)題文字不單一,文字量也大):
每個(gè)id是唯一的,每個(gè)id對(duì)應(yīng)的標(biāo)題和長(zhǎng)標(biāo)題可以近似于唯一,那就可以簡(jiǎn)化成允許相同id的單子數(shù)來解決重復(fù)的問題。
意思是,每個(gè)頁面展示10個(gè)單子,每?jī)蓚€(gè)頁面不能有=3.33個(gè)id是一樣的,即兩兩頁面id比較,所有的id都不同可以頁面,只有1個(gè)id相同可以生成頁面,只有2個(gè)id相同可以生成頁面,只有3個(gè)id相同可以生成頁面,如果有大于等于4個(gè)id相同就不生成頁面。