问题标签 [minhash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
95 浏览

scala - 在 spark 中转换 minHashLSH 的数据帧

我有这个数据框:

我想将其转换为以下形式:

我想这样做,以便我可以使用 MinHashLSH 转换(https://spark.apache.org/docs/2.2.3/api/scala/index.html#org.apache.spark.ml.feature.MinHashLSH) .

我尝试使用 UDF 如下但没有成功:

有人可以帮我吗?

0 投票
0 回答
83 浏览

apache-spark - spark中的minHashLSH实现解释

spark mllib 中 minhashLSH 的拟合实际上有什么作用?据我了解,它会生成一组散列函数。这些函数是随机生成的吗?我们在这里用输入数据拟合什么?

我使用过的代码参考

上面生成的哈希函数可以在两个数据集上的 appx.similiarityjoin 中使用以生成哈希,并在这些哈希上计算 jaccard 距离。如果我在这里遗漏了什么,请告诉我。

0 投票
0 回答
57 浏览

python - 我在 python 中运行这段代码,但我给出了一个错误,重复检测 LSH

我在 python 中为 minhash 和 shingle 运行此代码以检测重复的文本,但它给了我一个错误。用于绘图。我有一些错误。它说“float() 参数必须是字符串或数字,而不是 'dict_keys'”。我试图列出它,但它绘制错误。此外,字典的键和值是数字。

0 投票
1 回答
93 浏览

python - 将列表与 pyspark 列中的每个元素进行比较

我有一个列表 minhash_sig = ['112', '223'],我想找到这个列表和 pyspark 数据框列中每个元素之间的 jaccard 相似性。不幸的是,我不能这样做。

我尝试使用 array_intersect 以及 array_union 来尝试进行比较。但是,当我收到消息时,这不起作用Resolved attribute missing

这是我到目前为止创建的 pyspark 数据框。

这是我用来尝试将列表与 pyspark 列元素进行比较的代码。

df.withColumn('minhash_sim',size(array_intersect(df2.c1, df.minhash)))

有谁知道我如何在没有此错误的情况下进行此比较?

0 投票
1 回答
88 浏览

pairing - 关于 LSH(Locality-sensitive hashing)和 minihash 实现的问题

我正在尝试实施这篇论文

浏览器指纹编码方法提高网络流量中用户识别的有效性

我有几个关于 LHS 算法和建议实现的问题:

  • LSH 算法仅在您有很多文档要相互比较时使用(因为它应该将相似的文档放在我得到的相同存储桶中)。例如,如果我有一个新文档并且我想计算与其他文档的相似度,我必须从头开始重新启动 LHS 算法,包括新文档,对吗?

  • 在“海量数据集的挖掘,第 3 章”中,据说对于 LHS,我们应该在每个波段使用一个哈希函数。每个哈希函数创建 n 个桶。所以,对于第一个波段,我们将有 n 个桶。对于第二个频段,我应该继续使用相同的哈希函数(这样我就可以继续使用与以前相同的存储桶)还是另一个(以 m>>n 存储桶结束)?

  • 这个问题与上一个问题有关。如果我对所有波段使用相同的哈希函数,那么我将有 n 个桶。这里没问题。但是如果我必须使用更多的哈希函数(每行一个不同的函数),我最终会得到很多不同的桶。我应该测量每个桶中每一对的相似度吗?(如果我必须只使用一个哈希函数,那么这不是问题)。

  • 在论文中,我理解了算法的大部分内容,除了它的结尾。基本上,通过 minhashing 创建了两个签名矩阵(一个用于稳定特征,一个用于不稳定特征)。然后,他们在第一个矩阵上使用 LSH 来获得候选对列表。到目前为止,一切都很好。最后会发生什么?他们在第二个矩阵上执行 LHS 吗?如何使用第一个 LHS 的结果?我看不到第一个和第二个 LHS 之间的关系。

  • 最后一步的输出应该是配对候选列表,对吗?我所要做的就是对它们执行 Jaccard 相似性并设置阈值,对吗?

感谢您的回答!

0 投票
0 回答
123 浏览

apache-spark - 用于 minhashLSH 的 Pyspark 预处理(Jaccard 相似度)

我正在使用 spark 创建一个数据集,以使用 pyspark.ml 中的 minhashLSH 算法。

我有一张这样的桌子:

基本上,我的目标是创建一个这样的表:

...等等。

基本上,我想将值放在行上,将用户放在列上。每个特征都有不同的唯一值。

如果用户 1 在特征 1 中有 value_1_1,则取值为 1,否则为 0。如果用户 2 在特征 2 中有 value_2_1,则取值为 1,否则为 0

... 等等。

我这样做基本上是因为我想在 pyspark 中使用 minhashLSH 算法计算 jaccard 相似度。

有什么建议吗?

谢谢,祝你有美好的一天!

PS 以上数值只是一个例子!!!这不是我现在的 DF

0 投票
0 回答
59 浏览

python - MinHash LSH - 如何在 PySpark 中计算输出列?

我已经阅读了很多关于 MinHash LSH 的实现,但我不明白输出结果。

例如,在这里,为什么所有的值都是负数?怎么可能?它是如何计算的?

使用 MinHashLSH 的结果示例

https://databricks.com/fr/blog/2017/05/09/detecting-abuse-scale-locality-sensitive-hashing-uber-engineering.html

在我的程序中,我只有一个 100 行的表和另一个 200 行的表,在 RegexTokenizer 和 NGram(n=3) 之后,MinHashLSH 输出列充满了 -2580000000、-1808000058 等值。

另一个例子 :

提前致谢!

0 投票
1 回答
77 浏览

elasticsearch - 如何选择 Elastiknn LSH Jaccard 相似性指标参数 L 和 k ?在我的情况下,我的 minhash 大小 = 100,并且 jaccard Similarity = 0.8

我正在尝试使用 Elasticknn 插件检测近乎重复的内容。

我创建了文本文档的 minhash,Minhash 设置大小 = 100

我想使用 Elasticknn 插件应用具有 Jaccard 相似性的 LSH(因为它有这种类型的索引可用,)

根据我对 LSH、Minhash 重复检测算法的了解,根据所需的 jaccard 相似度级别(比如 0.8),我们必须选择

  1. 桶数b
  2. 桶大小r

Elastiknn 提供了一些不同的参数 https://elastiknn.com/api/#jaccard-lsh-mapping

  1. L - 哈希表的数量。一般来说,增加这个值会增加召回率。
  2. k - 组合成单个散列值的散列函数的数量

我不确定Lk是否实际上是br

谁能解释如何从 Elastiknn 调整 L 和 k 以获得所需级别的 jaccard 类似文档的最大准确性?

0 投票
0 回答
20 浏览

python - PySpark MinHashLSH - 获取每个桶的大小

有没有办法在 PySpark 中获取 MinHashLSH 中每个桶的大小?

例如,如果我正在做类似的事情:

这让我得到了 Jaccard 距离为 0.3 的结果,但是无论如何可以查看使用的不同存储桶的大小?

0 投票
0 回答
104 浏览

python - 用于 Jaccard 相似度的 Python MinHash

Jaccard 相似度用于估计两个集合之间的相似度。但是,如果我们想找到最相似的文档对,则需要 O(n^2)。如果使用 minhashing,它可以做得更快(http://infolab.stanford.edu/~ullman/mmds/ch3n.pdfhttps://www.fatalerrors.org/a/text-similarity-calculation-minhash -and-lsh-algorithm.html)。我想知道如何实现 minhashing 来估计两组之间的相似性,比如说s1={1, 2, 3}s2={1, 2, 4}(从头开始)