gpt4 book ai didi

apache-spark - 使用 Spark Dataframe 以相反的顺序删除相同的单词作为重复项

转载 作者:行者123 更新时间:2023-11-30 09:15:32 28 4
gpt4 key购买 nike

我能够使用 Spark Dataframe 方法 dropDuplicates 成功删除重复项,该方法将严格顺序的 100% 匹配视为重复项。例如,如果我们有两个“红色玩具”,其中之一将被视为重复并被过滤掉。

现在新的要求规定,我们需要将相同的单词以相反的顺序也视为重复。因此,引用上面的示例,如果我们有 “redtoys”“toysred”,它们将被视为重复,应将其删除。此要求仅适用于 2 个单词的短语。

有人可以建议在 Spark 中采取的方法吗?另外,想知道这是否是机器学习NLP的用例。

最佳答案

最直接的解决方案是将句子拆分为单词数组,对数组进行排序,然后根据这个新列删除重复项。

Spark 2.4.0+ 中,可以使用 array_sort 来完成此操作和 split 如下:

df.withColumn("arr", array_sort(split($"words", " ")))
.dropDuplicates("arr")

新的arr可以使用 .drop(arr) 删除列如果需要的话。

<小时/>

使用较旧的 Spark 版本或者如果需要使用更复杂的逻辑(例如,仅考虑两个单词短语进行反向删除),则 UDF需要使用。例如,要仅考虑两个单词短语,我们可以使用:

val sort_udf = udf((arr: Seq[String]) => {
if (arr.size == 2) arr.sorted else arr
})

df.withColumn("arr", sort_udf(split($"words", " ")))
.dropDuplicates("arr")

关于apache-spark - 使用 Spark Dataframe 以相反的顺序删除相同的单词作为重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56881323/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com