是否在C/C++/Java/C#中有相对简单易懂(且易于实现)的局部敏感哈希示例?
我想了解更多关于此概念的知识,因此想尝试在几个文本文件上实现它,只是为了看看它是如何工作的,所以我不需要高性能或其他任何东西...只需要一个返回类似输入的相似哈希的哈希函数示例。之后我可以通过示例学习更多知识。:)
是否在C/C++/Java/C#中有相对简单易懂(且易于实现)的局部敏感哈希示例?
我想了解更多关于此概念的知识,因此想尝试在几个文本文件上实现它,只是为了看看它是如何工作的,所以我不需要高性能或其他任何东西...只需要一个返回类似输入的相似哈希的哈希函数示例。之后我可以通过示例学习更多知识。:)
对于字符串,您可以使用近似匹配算法。
如果这些字符串与参考字符串的距离相等,则它们很可能彼此相似。因此,您可以为一系列距离创建不同的哈希桶。
编辑:您可以尝试其他变体的字符串距离算法。一个更简单的算法只需返回两个字符串之间的公共字符数。
这里有一篇在MSDN博客中的优秀介绍文章:http://blogs.msdn.com/b/spt/archive/2008/06/11/locality-sensitive-hashing-lsh-and-min-hash.aspx
此外,至少有一个C++库可以查看其源代码,该库位于此处:http://sourceforge.net/projects/lshkit/
此外,Hadoop上还有一个Java实现,它在处理文档方面表现良好。
它被称为LikeLike
目前,LikeLike仅支持最小哈希值独立排列。最小哈希值独立排列已应用于Google News的推荐。