问题标签 [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.
scala - 在 spark 中转换 minHashLSH 的数据帧
我有这个数据框:
我想将其转换为以下形式:
我想这样做,以便我可以使用 MinHashLSH 转换(https://spark.apache.org/docs/2.2.3/api/scala/index.html#org.apache.spark.ml.feature.MinHashLSH) .
我尝试使用 UDF 如下但没有成功:
有人可以帮我吗?
apache-spark - spark中的minHashLSH实现解释
spark mllib 中 minhashLSH 的拟合实际上有什么作用?据我了解,它会生成一组散列函数。这些函数是随机生成的吗?我们在这里用输入数据拟合什么?
我使用过的代码参考
上面生成的哈希函数可以在两个数据集上的 appx.similiarityjoin 中使用以生成哈希,并在这些哈希上计算 jaccard 距离。如果我在这里遗漏了什么,请告诉我。
python - 我在 python 中运行这段代码,但我给出了一个错误,重复检测 LSH
我在 python 中为 minhash 和 shingle 运行此代码以检测重复的文本,但它给了我一个错误。用于绘图。我有一些错误。它说“float() 参数必须是字符串或数字,而不是 'dict_keys'”。我试图列出它,但它绘制错误。此外,字典的键和值是数字。
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)))
有谁知道我如何在没有此错误的情况下进行此比较?
pairing - 关于 LSH(Locality-sensitive hashing)和 minihash 实现的问题
我正在尝试实施这篇论文
我有几个关于 LHS 算法和建议实现的问题:
LSH 算法仅在您有很多文档要相互比较时使用(因为它应该将相似的文档放在我得到的相同存储桶中)。例如,如果我有一个新文档并且我想计算与其他文档的相似度,我必须从头开始重新启动 LHS 算法,包括新文档,对吗?
在“海量数据集的挖掘,第 3 章”中,据说对于 LHS,我们应该在每个波段使用一个哈希函数。每个哈希函数创建 n 个桶。所以,对于第一个波段,我们将有 n 个桶。对于第二个频段,我应该继续使用相同的哈希函数(这样我就可以继续使用与以前相同的存储桶)还是另一个(以 m>>n 存储桶结束)?
这个问题与上一个问题有关。如果我对所有波段使用相同的哈希函数,那么我将有 n 个桶。这里没问题。但是如果我必须使用更多的哈希函数(每行一个不同的函数),我最终会得到很多不同的桶。我应该测量每个桶中每一对的相似度吗?(如果我必须只使用一个哈希函数,那么这不是问题)。
在论文中,我理解了算法的大部分内容,除了它的结尾。基本上,通过 minhashing 创建了两个签名矩阵(一个用于稳定特征,一个用于不稳定特征)。然后,他们在第一个矩阵上使用 LSH 来获得候选对列表。到目前为止,一切都很好。最后会发生什么?他们在第二个矩阵上执行 LHS 吗?如何使用第一个 LHS 的结果?我看不到第一个和第二个 LHS 之间的关系。
最后一步的输出应该是配对候选列表,对吗?我所要做的就是对它们执行 Jaccard 相似性并设置阈值,对吗?
感谢您的回答!
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
python - MinHash LSH - 如何在 PySpark 中计算输出列?
我已经阅读了很多关于 MinHash LSH 的实现,但我不明白输出结果。
例如,在这里,为什么所有的值都是负数?怎么可能?它是如何计算的?
在我的程序中,我只有一个 100 行的表和另一个 200 行的表,在 RegexTokenizer 和 NGram(n=3) 之后,MinHashLSH 输出列充满了 -2580000000、-1808000058 等值。
另一个例子 :
提前致谢!
elasticsearch - 如何选择 Elastiknn LSH Jaccard 相似性指标参数 L 和 k ?在我的情况下,我的 minhash 大小 = 100,并且 jaccard Similarity = 0.8
我正在尝试使用 Elasticknn 插件检测近乎重复的内容。
我创建了文本文档的 minhash,Minhash 设置大小 = 100
我想使用 Elasticknn 插件应用具有 Jaccard 相似性的 LSH(因为它有这种类型的索引可用,)
根据我对 LSH、Minhash 重复检测算法的了解,根据所需的 jaccard 相似度级别(比如 0.8),我们必须选择
- 桶数b和
- 桶大小r
Elastiknn 提供了一些不同的参数 https://elastiknn.com/api/#jaccard-lsh-mapping
- L - 哈希表的数量。一般来说,增加这个值会增加召回率。
- k - 组合成单个散列值的散列函数的数量
我不确定L和k是否实际上是b和r。
谁能解释如何从 Elastiknn 调整 L 和 k 以获得所需级别的 jaccard 类似文档的最大准确性?
python - PySpark MinHashLSH - 获取每个桶的大小
有没有办法在 PySpark 中获取 MinHashLSH 中每个桶的大小?
例如,如果我正在做类似的事情:
这让我得到了 Jaccard 距离为 0.3 的结果,但是无论如何可以查看使用的不同存储桶的大小?
python - 用于 Jaccard 相似度的 Python MinHash
Jaccard 相似度用于估计两个集合之间的相似度。但是,如果我们想找到最相似的文档对,则需要 O(n^2)。如果使用 minhashing,它可以做得更快(http://infolab.stanford.edu/~ullman/mmds/ch3n.pdf,https://www.fatalerrors.org/a/text-similarity-calculation-minhash -and-lsh-algorithm.html)。我想知道如何实现 minhashing 来估计两组之间的相似性,比如说s1={1, 2, 3}
和s2={1, 2, 4}
(从头开始)