【发布时间】:2020-03-01 04:55:02
【问题描述】:
我正在编写一个程序,将较小的游戏标题列表与许多游戏的主列表进行比较,以查看较小列表中的哪些游戏与主列表中的游戏标题匹配度更高。为了做到这一点,我一直在检查较小列表中的每个游戏与主列表中的每个游戏之间的 Levenshtein 距离(以百分比形式),并取所有这些值中的最大值(最大百分比越低,游戏必须越独特)同时使用difflib 和fuzzywuzzy 模块。我遇到的问题是,使用process.extractOne() 或difflib.get_close_matches() 的典型搜索每场比赛大约需要 5 秒以上(主列表中有 38000 多个字符串),我有大约 4500 场比赛要搜索(5 * 4500 大约是 6 小时 15 分钟,我没有时间)。
为了找到一种更好更快的搜索字符串列表的方法,我在这里询问在 python 中搜索字符串和字符串列表之间的最高百分比 Levenshtein 距离的最快方法是什么。如果没有比使用上面的两个函数或编写一些其他循环代码更好的方法,那么请说出来。
我专门用于搜索最高距离的两个函数是:
metric = process.extractOne(name, master_names)[1] / 100
metric = fuzz.ratio(name, difflib.get_close_matches(name, master_names, 1, 0)[0]) / 100
【问题讨论】:
标签: python fuzzy-search