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

我对您可能有的任何意见或建议非常感兴趣,所以请拍摄!:)

4

2 回答 2

2

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

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

  • 尊重 robots.txt。如果他们将该网站标记为“请勿抓取”,那么他们很可能不会试图从您的内容中获利。
  • 随着网站的变化,您将需要不时刷新您存储的网站结构。
  • 您需要正确地将文本与 HTML 标记和 JavaScript 分开。
  • 您基本上需要在页面的整个文本中进行全文搜索(删除标签/脚本)以查找要保护的文本。有很好的,已发布的算法。
于 2009-12-05T00:12:45.507 回答
1

您可能会对片段检测更感兴趣。例如,很多页面上都会有“家”字样,而您不在乎。但是,很多页面不太可能在整个页面上有完全相同的单词。因此,您可能想要比较和报告长度为 4、5、6、7、8 等字词的精确匹配的页面,并针对每个长度进行计数。给它们打分并加权,如果你超过了你的“神奇数字”,就报告可疑的复印机。

对于 C#,您可以使用 webBrowser() 来获取页面并相当容易地获取其文本。抱歉,没有方便复制/粘贴的代码示例,但 MSDN 通常有很好的示例。

于 2009-12-05T00:09:54.447 回答