Shingle算法對SEO聚合葉面的一點兒啟示

  Shingle算法是搜索引擎網站去掉相同或相仿頁面的那裡面一種基本算法,做SEO聚合葉面的時刻怎麼樣讓頁面之間不重復?怎麼樣處置重復度的問題?可以反推Shingle算法獲得一點啟示。

  Shingle [ˈʃɪŋgəl]在英文中表達互相遮蓋的瓦片。先經過一個例子來解釋明白Shingle算法:

  如果有A、B兩個文檔的題目,A文檔的題目是:明起電話訂火車票可全國通取取票時間延12鍾頭;B文檔的題目是:火車票電話訂票成功實現全國通取網上預售期延長。

  搜索引擎網站怎麼樣曉得這兩篇文檔題目是否是重復的?譬如我們可以以2個中文切為一個Shingle的辦法:

  


  對於長度L的文檔,每隔N個中文切一個Shingle,這麼總共切到L-N+1個shingle,A文檔題目切成了L-N+1=21-2+1=20個Shingle,B文檔題目切成了L-N+1=20-2+1=19個Shingle。

  A、B兩個文檔題目並肩的Shingle有圖上7個加粗的:電話、話訂、火車seo、車票、全國、國通、通取。

  A、 B兩個文檔題目總共有20+19-7=32個Shingle。

  不過,A、B兩個文檔題目並肩的Shingle,除以,A、B兩個文檔題目總共有的Shingle,就是這兩個文檔題目的Jaccard系數,可以用來判斷A、B兩個文檔題目的相仿度。

  A、 B兩個文檔題目的Jaccard系數=7/(20+19-7)=0.21875

  從兩個文檔的題目,可以延伸到兩個頁面文檔,再延伸到N個頁面,經過Jaccard系數是否達到相仿所需求的標准來判斷頁面與頁面是否相仿。

  這就是Shingle算法,兩個聚齊的交集除以兩個聚齊的並集,獲得Jaccard系數,經過判斷Jaccard系數是否大於某個數,來判斷兩個聚齊是否重復。


  反推Shingle算法,假如Jaccard系數小於某個數,就不重復了,先給每個文檔聚齊拆分成多少個Shingle,再兩兩計算Jaccard系數,假如小於某個數,生成頁面即可。

  我之前做的一個項目運用的一個辦法,固然比較笨,也還算實用,分享一下子:

  如果北京電影種類有100個團購名單,如今要為下圖右面這些個詞預設聚合葉面,每個頁面展覽10個名單,如果jaccard系數大於0.3分辨斷定為頁面重復,怎麼生成不重復頁面?

  如下所述圖展覽名單的題目和長題目(如果seo聚合葉用的長題目,由於長題目書契不僅一,書契量也大):


  每個id是惟一的,每個id對應的題目和長題目可以近似於惟一,那就可以簡化成准許相同id的名單數來解決重復的問題。

  意思是,每個頁面展覽10個名單,每兩個頁面來不得>=3.33個id是同樣的,即兩兩頁面id比較,全部的id都不一樣可以生成頁面,只有1個id相同可以生成頁面,只有2個id相同可以生成頁面,只有3個id相同可以生成頁面,假如有大於等於4個id相同就不生成頁面。

  往後會把大多業餘時間花在算法、技術、seo交流上,希望有更多好的物品分享給大家。

  有問題熱烈歡迎私信美團陳慧微博:http://1.t.qq.com/chenhui8com