LSH Libraries in Java

2022-09-02 01:58:45

我正在寻找一个轻量级的Java库,它支持最近邻搜索通过局部敏感散列在具有数十万个数据点的高维(在我的例子中为32)数据集中几乎均匀分布的数据。

获取存储桶中用于查询的所有条目就足够了。然后,在考虑我的问题包括的一些过滤器参数的情况下,我可以以不同的方式处理我真正需要的那些。

我已经找到了类似的东西,但希望有一些更小的东西,不需要任何其他工具(比如类似情况下的Apache Hadoop)。


答案 1

也许这个:

“TarsosLSH是一个实现局部敏感哈希(LSH)的Java库,LSH是一种在亚线性时间内运行的多维向量的实用最近邻搜索算法。它支持多个局部敏感哈希 (LSH) 系列:欧几里得哈希家族 (L2)、城市街区哈希家族 (L1) 和余弦哈希家族。该库试图在足够有能力完成实际任务和足够紧凑以演示LSH的工作原理之间达到最佳平衡点。

代码可以在这里找到


答案 2

Apache Spark有一个LSH实现:https://spark.apache.org/docs/2.1.0/ml-features.html#locality-sensitive-hashingAPI)。

在玩过 tdebattyTarsosLSH 实现之后,我可能会使用 Spark,因为它支持稀疏向量作为输入。tdebatty 需要一个非稀疏的布尔值或 int 数组,而 TarsosLSH Vector 实现是一个非稀疏的双精度数组。这严重限制了人们可以合理支持的维度数量。

此页面提供更多项目的链接,以及相关论文和信息:https://janzhou.org/lsh/


推荐