比较网站的文字内容

时间:2009-12-04 23:59:47

标签: c# algorithm optimization comparison plagiarism-detection

我正在尝试一些文本比较/基本抄袭检测,并希望在网站到网站的基础上尝试这一点。但是,我有点陷入寻找处理文本的正确方法。

您如何处理和比较两个网站的内容是否有抄袭?

我在想这样的伪代码:

// 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)中实现它。

我对你可能提出的任何意见或建议很感兴趣,所以请拍! :)

2 个答案:

答案 0 :(得分:2)

我解决这个问题的方法是谷歌搜索您试图保护其版权的特定,相当独特的文本块。

话虽如此,如果你想建立自己的解决方案,这里有一些评论:

  • 尊重robots.txt。如果他们将网站标记为“不抓取”,那么他们可能无法从您的内容中获利。
  • 当网站发生变化时,您需要不时刷新您存储的网站结构。
  • 您需要将文本与HTML标记和JavaScript正确分开。
  • 您基本上需要在页面的整个文本中执行全文搜索(删除标记/脚本)以查找要保护的文本。有很好的,已发布的算法。

答案 1 :(得分:1)

你可能会对片段检测更感兴趣。例如,很多页面上会有“home”这个词,你不在乎。但是很少有页面在整个页面上具有完全相同的单词。因此,您可能希望比较和报告具有长度为4,5,6,7,8等长度匹配的页面以及每个长度的计数。分配分数并对它们进行加权,如果超过“神奇数字”,则报告可疑的复印机。

对于C#,您可以使用webBrowser()来获取页面并轻松获取其文本。对不起,没有代码示例可以方便复制/粘贴,但MSDN通常有很好的样本。