【发布时间】:2018-01-09 02:57:40
【问题描述】:
我正在尝试在我的 python 应用程序中使用模糊逻辑库fuzzywuzzy 匹配字符串。我发现,即使得分相等,fuzzywuzzy 也没有给出适当的结果,它在第一个位置列出了错误的结果。
这是一个例子:
>>> d = ['John Welsh','Patrick Walsh','Jonathan Walsh']
>>> e = process.extract('jwalsh', d)
>>> e = sorted(e,key=lambda k:k[1],reverse=True)
>>> e
[('Patrick Walsh', 75), ('Jonathan Walsh', 75), ('John Welsh', 62)]
可以看到,字符串是jwalsh,最合适的结果是Jonathan Walsh,它应该在结果的第一个位置,而它在第二个位置。
请建议我如何更正结果并显示最合适的结果。由于这是相同得分的情况,因此存在得分较少的情况下可以得到适当的结果。
我该怎么做才能获得最佳输出?除了fuzzywuzzy,还有什么建议吗?请告诉我。
【问题讨论】:
-
你先
pip install python-levenshtein了吗? -
是的,我做到了。然后只有它向我显示了结果,否则有一个与安装`python-Levenshtein`相关的通知
-
先尝试将所有内容都设为小写。 jwalsh 实际上与 Jonathan Walsh 并没有比 Patrick Walsh 更接近,因为 'j' 和 'J' 是不同的。
-
我也试过了。仍然对结果排列没有影响。
-
这种模糊匹配问题有解决方案吗?
标签: python python-3.x string-matching fuzzy-search fuzzywuzzy