在python中搜索字符串和字符串列表之间的最高Levenshtein距离的最快方法是什么?

问题描述 投票:0回答:1

我正在编写一个程序,将游戏标题的较小列表与许多游戏的主列表进行比较,以查看较小列表中的哪些游戏与其他列表中的游戏标题更匹配。为此,我一直在检查较小列表中的每个游戏与主列表中的every游戏之间的Levenshtein距离(以百分比形式),并采用所有这些值中的最大值(最大百分比,则必须同时使用difflibfuzzywuzzy模块。我遇到的问题是,使用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
1个回答
1
投票

[通过实验和进一步的研究,我发现检查Levenshtein比率的最快方法是通过python-Levenshtein库本身。与在Fuzzywuzzy或difflib中使用任何功能相比,功能Levenshtein.ratio()的速度明显更快

© www.soinside.com 2019 - 2024. All rights reserved.