gpt4 book ai didi

python - 模糊匹配 pyspark 数据帧字符串中的单词

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:28 31 4
gpt4 key购买 nike

我有一些数据,其中“X”列包含字符串。我正在使用 pyspark 编写一个函数,其中传递了一个 search_word,并且过滤掉列“X”字符串中不包含子字符串 search_word 的所有行。该函数还必须允许单词的拼写错误,即模糊匹配。我已将数据加载到 pyspark 数据帧中,并使用 NLTK 和 fuzzywuzzy python 库编写了一个函数,以在字符串包含 search_word 时返回 True 或 False。

我的问题是我无法将函数正确映射到数据框。我是否错误地处理了这个问题?我应该尝试通过某种 SQL 查询还是使用 RDD 来进行模糊匹配?

我是 pyspark 的新手,所以我觉得这个问题之前肯定已经回答过,但我无法在任何地方找到答案。我从未用 SQL 做过任何 NLP,也从未听说过 SQL 能够模糊匹配子字符串。

更新#1

函数如下所示:

wf = WordFinder(search_word='some_substring')
result1 = wf.find_word_in_string(string_to_search='string containing some_substring or misspelled some_sibstrung')
result2 = wf.find_word_in_string(string_to_search='string not containing the substring')

结果 1 为真

结果 2 为假

最佳答案

一种简单的方法是使用内置的 levenstein 函数。例如,

(
spark.createDataFrame([("apple",), ("aple",), ("orange",), ("pear",)], ["fruit"])
.withColumn("substring", func.lit("apple"))
.withColumn("levenstein", func.levenshtein("fruit", "substring"))
.filter("levenstein <= 1")
.toPandas()
)

返回

   fruit substring  levenstein
0 apple apple 0
1 aple apple 1

如果你想使用普通的 Python 函数,比如 NLTK 包中的函数,你必须定义一个 UDF,它接受一个字符串并返回一个 bool 值。

关于python - 模糊匹配 pyspark 数据帧字符串中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48074642/

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