from fuzzywuzzy import fuzz
from fuzzywuzzy import process
from fuzzyfinder import fuzzyfinder
title_list = [u"数据分析师", u"数据挖掘工程师", u"大数据开发工程师", u"机器学习工程师",
u"算法工程师", u"数据库管理", u"商业分析师", u"数据科学家", u"首席数据官",
u"数据产品经理", u"数据运营", u"大数据架构师", "Data Analyst"]
aa = process.extractOne(u"算法", title_list,scorer=fuzz.UWRatio) # 返回 ('算法工程师', 90)
print(aa)
suggestions = fuzzyfinder('数据分析师', ['具有数据类型分析能力的专业工程师','qux'])
result = list(suggestions)
print(result)
if len(result)>0:
print('yes')
运行结果:
('算法工程师', 90)
['具有数据类型分析能力的专业工程师']
yes
我想要查找一个句子的模糊匹配词,使用了两种fuzz和fuzzyfinder工具
其中fuzz是编辑距离匹配法则,这里不考虑了;
我想着重说第二个包 fuzzyfinder:
例如对于一个句子:具有数据类型分析能力的专业工程师
我想看看这个句子里面 是否有 数据分析师 这个词对应的每个字,如果有的话我就给出
标签 数据分析师,这里需要注意的是,数据分析师 中的每个字与句子中出现的‘数’,‘据’,‘分’,‘析’,‘师’顺序需要一致才能够匹配出来
我之前也写了一个类似的代码,并且代码里面还设置了查找窗口,不过可能没有这个工具好用,这里直接用这个工具来用了;
另外如果要查询百万甚至千万级别的基于编辑距离的字符串,可以使用bk树来进行查找,速度非常快 使用pybktree即可;