据我所知,NLP领域的科学共识是,对于大规模科学文档集合(超过10亿文档)的近似重复检测,最有效的方法是这里提到的方法:
http://infolab.stanford.edu/~ullman/mmds/ch3.pdf
该方法可以简要描述为:
a) 对文档进行分片 b) 通过minhashing获得分片的最小哈希签名 c) 使用局部敏感哈希,避免对所有签名进行成对相似度计算,而是仅关注桶内的成对签名。
我准备在Map-Reduce或Spark中实现这个算法,但由于我刚进入这个领域(我已经研究了大约两周的大规模近似重复检测),而且上述方法发表的时间已经比较久了,我想知道这个算法是否有已知的局限性,以及是否有更有效的不同方法(提供更吸引人的性能/复杂度权衡)。
提前感谢!
回答:
关于第二步b),最近有了一些显著加速签名计算的进展:
- 最优密集化用于快速且准确的最小哈希,2017年,https://arxiv.org/abs/1703.04664
- 快速相似性草图,2017年,https://arxiv.org/abs/1704.04370
- SuperMinHash – 一种用于Jaccard相似度估计的新型最小哈希算法,2017年,https://arxiv.org/abs/1706.05698
- ProbMinHash – 一类用于(概率)Jaccard相似度的局部敏感哈希算法,2019年,https://arxiv.org/pdf/1911.00675.pdf