我对检测相似文档的技术有一个合理的理解,该技术首先计算它们的 minhash 签名(从它们的 shingles 或 n-gram),然后使用基于 LSH 的算法来有效地对它们进行聚类(即避免二次复杂度,这将需要一个简单的成对穷举搜索)。
我正在尝试做的是桥接三种不同的算法,我认为这些算法都与这个 minhash + LSH 框架有关,但以非显而易见的方式:
(1) Mining of Massive Datasets(Rajaraman and Ullman)一书第3章第3.4.3节勾勒的算法,似乎是minhashing的规范描述
(2) Ryan Moulton 的Simple Simhashing文章
(3)Charikar所谓的SimHash算法,本文介绍
我觉得这很令人困惑,因为我假设虽然 (2) 使用术语“simhashing”,但它实际上是以类似于 (1) 的方式进行 minhashing,但关键区别在于集群只能由单个签名表示(甚至可能涉及复杂的多个哈希函数),而两个文档有更多与(1)相似的机会,因为签名可以在多个“带”中发生冲突。(3) 似乎完全不同,因为签名是根据它们的汉明距离进行比较的,而 LSH 技术意味着对签名进行多次排序,而不是对它们进行捆绑。我还看到(在其他地方)最后一种技术可以包含加权的概念,它可以用来更加强调某些文档部分,而这似乎在 (1) 和 (2) 中缺乏。
所以最后,我的两个问题:
(a) 是否有一种(令人满意的)方法可以连接这三种算法?
(b) 有没有办法将权重概念从 (3) 导入到 (1)?