PySpark MinHashLSH的approxSimlarityJoin返回None,即使一个数据集中的短语存在于另一个数据集中。

问题描述 投票:0回答:1

我试图寻找两组包含字符串的数据之间的Jaccard距离,但是,即使数据集A中的文本存在于数据集B中,它总是返回None。以下是步骤,我已经试过了。

  • 试过用CountVectors代替HashingTF。
  • 尝试增加aboutSimilarityJoin的阈值。
  • 按照《Apache Spark中的高效字符串匹配》中的例子,我尝试了用CountVectors代替HashingTF。"Apache Spark中的高效字符串匹配
  • 试着在aboutSimilarityJoin中交换数据帧。

管道。

model = Pipeline(
            stages=[
                RegexTokenizer(pattern="", inputCol=input_column, outputCol="tokens", minTokenLength=1),
                NGram(n=2, inputCol="tokens", outputCol="ngrams"),
                HashingTF(inputCol="ngrams", outputCol="vectors"),
                MinHashLSH(inputCol="vectors", outputCol="lsh", numHashTables=5)
            ]
        ).fit(data_frame)

LSH生成。

数据集A。

第1行:[[1986870.0],[2.1903113E7],[1308692.0],[4186425.0],[6684366.0]]。

第2行:[[2.0131929E7],[2.1903113E7],[1308692.0],[4186425.0],[6684366.0]]

数据集B。

第1行:[[8.60015581E8],[3.28657332E8],[6.642221E7],[1.051655731E9],[8.350559E7]]

它应该给我两组之间的距离,而不是给我None。

apache-spark pyspark minhash lsh
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.