首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模糊匹配火花放电数据字符串中的一个单词

模糊匹配火花放电数据字符串中的一个单词
EN

Stack Overflow用户
提问于 2018-01-03 09:32:07
回答 1查看 7.4K关注 0票数 6

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

我的问题是,我不能正确地将函数映射到dataframe。我是不是不正确地处理这个问题?我应该尝试通过某种SQL查询来进行模糊匹配,还是使用RDD呢?

我对火种很陌生,所以我觉得这个问题以前肯定有人回答过,但我在任何地方都找不到答案。我从未对SQL做过任何NLP操作,也从未听说过SQL能够模糊匹配子字符串。

更新#1

该函数看起来如下:

代码语言:javascript
复制
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是假的

EN

回答 1

Stack Overflow用户

发布于 2018-01-03 21:26:23

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

代码语言:javascript
复制
(
    spark.createDataFrame([("apple",), ("aple",), ("orange",), ("pear",)], ["fruit"])
    .withColumn("substring", func.lit("apple"))
    .withColumn("levenstein", func.levenshtein("fruit", "substring"))
    .filter("levenstein <= 1")
    .toPandas()
)

返回

代码语言:javascript
复制
   fruit substring  levenstein
0  apple     apple           0
1   aple     apple           1

如果您想使用普通的Python函数,就像NLTK包中的东西一样,您必须定义一个接受字符串并返回布尔值的UDF。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48074642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档