我们正在努力实现的更快的启发式方法称为相似性哈希,简称 simhash。simhash是一个 64 位无符号整数,同样以这样的方式计算:重复或近似重复的页面会产生相同或几乎相同的 simhash 值。页面之间的差异与两个数字中不同的位数成正比。
问题在于这两个指标非常不同:一个是 128 个值的向量,而另一个是单个值。由于这种差异,测量结果在它们如何看待页面差异方面可能会有所不同。由于一次抓取可能包含超过一百万个页面,因此我们需要比较大量的数字来确定新启发式方法的最佳阈值。
具体来说,我们需要设置启发 波斯尼亚和黑塞哥维那电话号码列表 式阈值,以检测尽可能多的重复和近似重复,同时尽量减少错误重复的数量。更重要的是绝对减少非重复页面对的数量,因此我们不会将页面作为重复删除,除非它实际上是重复的。这意味着我们需要能够检测以下页面:
这两个页面实际上并不是重复或近似重复,
当前的指纹启发式方法正确地将它们视为不同的,但是
simhash 启发式方法错误地将它们视为相似。
我们对此非常小心,以避免我们预料到的最负面的客户体验:对我们的重复检测启发式方法进行幕后更改,导致毫无明显原因地突然出现大量不正确的“重复页面”错误。
解决方案:可视化数据
我们需要在涉及许多数值量的情况下做出决策,这是数据可视化可以提供帮助的典型案例。我们的 SEOmoz 数据科学家Matt Peters建议,规范化这两个非常不同的页面内容度量的最佳方法是关注它们如何衡量现有页面之间的差异。考虑到这一点,我决定采用以下方法:
从随机选择的大约 25 个抓取数据中抽取大约 1000 万对页面样本。
对于每对采样的页面,在横轴上绘制用传统指纹启发式方法测量的差异(0 到 128),在纵轴上绘制用 simhash 测量的差异(0 到 64)。
用这种方法得到的图如下所示: