Shingle演算法對SEO聚合頁面的一點啟發

來源:互聯網
上載者:User

仲介交易 HTTP://www.aliyun.com/zixun/aggregation/6858.html">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個加粗的:電話、話訂、火車、車票、全國、國通、通取。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.