2009-12-04 96 views
1

我正在試驗一下文本比較/基本抄襲檢測,並希望在網站到網站的基礎上嘗試。然而,我有點卡住尋找處理文本的正確方法。比較網站的文本內容

你會如何處理和比較兩個網站的抄襲內容?

我想是這樣的僞代碼:

// extract text 
foreach website in websites 
    crawl website - store structure so pages are only scanned once 
    extract text blocks from all pages - store this is in list 

// compare  
foreach text in website1.textlist 
    compare with all text in website2.textlist 

我意識到,這個解決方案很可能迅速積累了大量的數據,所以它可能只可能使其具有非常小的網站工作。

我還沒有決定實際的文字比較算法,但現在我更感興趣的是讓實際的工藝算法先行工作。

我想這是一個好主意,作爲單獨的文本塊(從段落,表格,標題等)提取所有文本,因爲文本可以在頁面上移動。

我正在C#(也許是ASP.NET)中實現它。

我對任何意見或建議都很感興趣,所以請拍! :)

+1

也可以使用第三方服務來使用你自己的邏輯推動這個流氓。我可以在https://api.copyleaks.com上推薦您使用.NET實現(通過Nuget或Github)。閱讀更多:https://github.com/Copyleaks/.NET-Plagiarism-Checker – No1Lives4Ever 2016-04-22 09:52:57

回答

2

我對這個問題的處理方法是Google爲您試圖保護的版權的特定,相當獨特的文本塊。

說了這麼多,如果你想建立自己的解決方案,這裏有一些評論:

  • 尊重的robots.txt。如果他們將該網站標記爲「不抓取」,那麼他們很可能無法從您的內容中獲利。
  • 隨着網站變更,您需要刷新您隨時存儲的網站結構。
  • 您將需要正確地將文本從HTML標記和JavaScript中分離出來。
  • 您將基本上需要在頁面的整個文本中進行全文搜索(標籤/腳本已移除)以查看您希望保護的文本。有很好的,公開的算法。
+0

+1感謝您的建議。我會尊重robots.txt(或者至少有一個選項可以打開/關閉)。我使用HtmlAgilityPack來清理和解析html,並從標籤中提取文本。這使得提取文本變得非常容易。對於實際的比較,我更多地考慮了歸一化壓縮距離,儘管我還沒有徹底檢查算法。 – 2009-12-05 10:13:38

+0

這不是我尋找的答案,但是因爲您獲得的選票最多,而且您的答案很有幫助,所以我會接受它作爲答覆,謝謝您的評論:) – 2009-12-15 15:49:39

1

您可能會對片段檢測更感興趣。例如,很多頁面上都會有「home」這個詞,而且你不在乎。但是很可能很多頁面在整個頁面上都會有完全相同的單詞。所以你可能想要比較和報告具有長度4,5,6,7,8等詞的匹配的頁面並計數每個長度。指定一個分數並加權,如果超過了你的「魔法數字」,則報告可疑的打印機。

對於C#,您可以使用webBrowser()獲取頁面並相當容易地獲取其文本。對不起,沒有代碼示例方便複製/粘貼,但MSDN通常有很好的示例。

+0

+1感謝您的意見和建議。在大量文本的情況下,您的字數解決方案可能是更輕的選擇。我認爲你的意思是HttpWebRequest.create(Uri)創建一個webrequest,但是這個部分工作得很好。 – 2009-12-05 10:15:08

+0

由於文字往往會移動(至少在我的經驗中),所以我會根據文本片段而不是頁面進行比較。 – 2009-12-05 10:16:46