我正在编写一个程序,将较小的游戏标题列表与许多游戏的主列表进行比较,以查看较小列表中的哪些游戏比其他游戏与主列表中的游戏标题更匹配。为了做到这一点,我一直在检查较小列表中的每个游戏与主列表中的每个游戏之间的编辑距离(以百分比形式),并取所有这些值中的最大值(最大百分比越低,游戏必须更加独特)同时使用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
Run Code Online (Sandbox Code Playgroud)