我有一些数据,其中列“X”包含字符串。我正在编写一个函数,其中传递一个search_word,并且在列'X‘字符串中不包含子字符串search_word的所有行都被过滤掉。该函数还必须允许单词拼写错误,即模糊匹配。我已经将数据加载到pyspark中,并使用NLTK和fuzzywuzzy库编写了一个函数,如果字符串包含search_word,则返回True或False。
我的问题是,我不能正确地将函数映射到dataframe。我是不是不正确地处理这个问题?我应该尝试通过某种SQL查询来进行模糊匹配,还是使用RDD呢?
我对火种很陌生,所以我觉得这个问题以前肯定有人回答过,但我在任何地方都找不到答案。我从未对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')
result1是真的
result2是假的
618夏日盛惠
2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…
一个简单的方法是使用内置的 levenstein 函数。例如,
levenstein
( spark.createDataFrame([("apple",), ("aple",), ("orange",), ("pear",)], ["fruit"]) .withColumn("substring", func.lit("apple"))