【问题标题】:Getting Jaccard similarity between two columns in one dataframe在一个数据框中获取两列之间的 Jaccard 相似度
【发布时间】:2019-09-01 13:38:12
【问题描述】:

我想计算两列的 Jaccard 相似度,但我认为 PySpark 中没有类似的函数。我不确定计算它的最佳方法是什么。

例如,假设我们有 1 个如下所示的数据帧:

| str1 | str2 |
===============
|  hi  |   h  |
|  me  |   p  |

这些列都是字符串类型,最终结果应该是这样的:

| str1 | str2 | jaccard |
=========================
|  hi  |   h  |    0.5  |
|  me  |   p  |    0    |

我写了一个这样的udf,但它不起作用。我对 Spark 还是很陌生,所以它必须被打破。我愿意接受任何解决方案,只要它能准确计算 1 个数据帧中 2 列的 Jaccard sim。

jaccard = udf(lambda x, y: len(set(x).intersection(y))/len(set(x).union(y)))
candidates = candidates.withColumn("jaccard", jaccard(col("str1"), col("str2")))

【问题讨论】:

    标签: apache-spark pyspark pyspark-sql pyspark-dataframes


    【解决方案1】:

    我想我调试了自己的问题。以下代码返回 Jaccard 相似度。

    jac = f.udf(lambda x, y: float(len(set(x).intersection(y)))/float(len(set(x).union(y))))
    myDF = myDF.withColumn("jaccard", jac(myDF["str1"], myDF["str2"]))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-26
      • 2018-01-23
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-21
      • 2018-01-02
      相关资源
      最近更新 更多