【发布时间】:2011-08-11 19:32:28
【问题描述】:
在 C/C++/Java/C# 中有没有相对容易理解(并且易于实现)的局部敏感哈希示例?
我想了解更多关于这个概念的信息,所以想在几个文本文件上尝试一个实现,看看它是如何工作的,所以我不需要任何高性能或任何东西......只是一个例子一个散列函数,它为相似的输入返回相似的散列。之后我可以通过示例从中学到更多。 :)
【问题讨论】:
标签: c# java c hash locality-sensitive-hash
在 C/C++/Java/C# 中有没有相对容易理解(并且易于实现)的局部敏感哈希示例?
我想了解更多关于这个概念的信息,所以想在几个文本文件上尝试一个实现,看看它是如何工作的,所以我不需要任何高性能或任何东西......只是一个例子一个散列函数,它为相似的输入返回相似的散列。之后我可以通过示例从中学到更多。 :)
【问题讨论】:
标签: c# java c hash locality-sensitive-hash
对于字符串,您可以使用近似匹配算法。
如果字符串与参考字符串等距,那么它们很可能彼此相似。这样你就有了一个字符串的局部敏感哈希实现。
您可以为一系列距离创建不同的哈希桶。
编辑:您可以尝试其他的字符串距离变化。一个更简单的算法只会返回 no。两个字符串之间的公共字符。
【讨论】:
"abcd" 和"xyzw" 与"6pGO" 这样的随机字符串的距离都为4,但它们完全不同。这是如何运作的? (对于长度为 4 的几乎 any 随机字符串,它是 4...)
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 仅支持 Min-Wise 独立排列。 Min-Wise 独立排列是 适用于推荐 谷歌新闻
【讨论】:
我知道您明确要求使用 C/C++/C#,但 a Python port 中的 nilsimsa hash 可能比其他更大的库更容易理解。
【讨论】: