有哪些技术可以检测网页是否与另一个网页相同?
同样,我不是指char-for-char等价物(这很容易),但足够强大,可以忽略页面上当前日期/时间等内容.
例如,去雅虎!新闻文章加载页面,10分钟后在另一个浏览器中打开同一页面.Baring重写,这些页面会有一些差异(时间戳,可能是广告之类的东西,可能是相关故事之类的东西),但人类可以看看这两个并说它们是相同的.
注意我不是要修复(或依赖)URL规范化.即,弄清楚foo.html&foo.html?bar = bang是一样的.
听起来你正在采用一种强有力的方法来衡量两个页面的相似性.
鉴于页面的结构不会发生太大变化,我们可以将问题减少到测试页面上的文本是否大致相同.当然,通过这种方法,nickf提到的有关摄影师页面的问题仍然存在,但如果你主要关注雅虎!新闻或类似这应该没问题.
要与页面进行比较,您可以使用称为"字符串内核"的机器学习方法.这是一篇早期论文,最近在R包和视频讲座上放了一组幻灯片.
非常粗略地说,字符串内核会查找两个文档共有多少个单词,一对单词,三元组等.如果A和B是两个文档而k是字符串内核,那么k(A,B)的值越高,两个文档越相似.
如果设置一个阈值t并且只说两个文件对于k(A,B)> t是相同的,那么你应该有一个合理的方法来做你想要的.当然,您必须调整阈值以获得应用程序的最佳结果.
您可以通过使用某种相似性度量(例如余弦相似性)来检测两个页面是否相同.然后,您必须定义一个最小阈值,您可以使用该阈值来接受两个文档是否相同.例如,在应用余弦度量时,我会选择一个最接近1的值,因为它的范围从-1到完全不同,1对于相同.
对于这类问题,我发现通过学术论文搜索比要求StackOverflow要好得多,在处理具体细节时,专家通常比人群更聪明.
每个webcrawler或搜索引擎都有这个问题并解决了它.使用基于内核的方法可能是一种很好的方法,就像接受的答案所暗示的那样,但是你可能希望从已知运行良好的简单技术开始.之后您可以转到内核方法并进行测试,看看它们是否会改善您的结果.
你最好的选择是阅读Henzinger 2006年的论文"寻找近似重复的网页:大规模的算法评估"
而且你可能正在研究生成一个Rabin指纹,这是"随机多项式指纹识别"Rabin 1986的第一步.