【发布时间】:2018-06-12 23:11:22
【问题描述】:
我有一些数据,其中“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 为假
【问题讨论】:
-
如果没有your code,你希望得到什么样的答案?
-
@Piinthesky 我已经添加了上面的方法。为类和方法添加实际代码是没有意义的,因为它只是一些 nltk 标记器和 lemmitizer 以及一个模糊模糊的 partial_ratio。这与问题完全无关。问题是关于如何将函数应用于 pyspark 数据帧,是否可以使用布尔函数过滤行,以及 sql 或 python 是否是解决问题的最佳方法。
标签: python nlp pyspark pyspark-sql fuzzy-search