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

python中搜索字符串和字符串列表之间最大百分比Levenshtein距离的最快方法是什么?,python,fuzzy-search,Python,Fuzzy Search,我正在编写一个程序,将一个较小的游戏名称列表与许多游戏的主列表进行比较,以查看较小列表中的哪些游戏与主列表中的游戏名称比其他游戏更接近。为了做到这一点,我一直在使用difflib和fuzzyfuzzy模块检查较小列表中的每个游戏和主列表中的每个游戏之间的Levenshtein距离(百分比形式),并取所有这些值中的最大值(最大百分比越低,游戏就越独特)。我遇到的问题是,使用process.extractOne()或difflib.get\u close\u matches()的典型搜索每场游戏大约

我正在编写一个程序,将一个较小的游戏名称列表与许多游戏的主列表进行比较,以查看较小列表中的哪些游戏与主列表中的游戏名称比其他游戏更接近。为了做到这一点,我一直在使用
difflib
fuzzyfuzzy
模块检查较小列表中的每个游戏和主列表中的每个游戏之间的Levenshtein距离(百分比形式),并取所有这些值中的最大值(最大百分比越低,游戏就越独特)。我遇到的问题是,使用
process.extractOne()
difflib.get\u close\u matches()
的典型搜索每场游戏大约需要5秒以上的时间(主列表中有38000多个字符串),我要搜索大约4500个游戏(5*4500大约是6小时15分钟,我没有时间)

为了找到一种更好更快的搜索字符串列表的方法,我在这里询问python中搜索字符串和字符串列表之间最大百分比Levenshtein距离的最快方法是什么。如果没有比使用上述两个函数或编写其他循环代码更好的方法,那么请这样说

我在特定情况下用于搜索最高距离的两个函数是:

metric=process.extractOne(名称、主机名)[1]/100
metric=fuzz.ratio(name,difflib.get\u close\u匹配项(name,master\u name,1,0)[0])/100

通过实验和进一步研究,我发现检查Levenshtein比率的最快方法是通过
python Levenshtein
库本身。函数
Levenshtein.ratio()
比在fuzzyfuzzy或difflib中使用任何函数都要快得多(对于一个游戏,整个搜索平均只需要0.05秒),这可能是因为它的简单性和C实现。我在for循环中使用此函数,对主列表中的每个名称进行迭代,以获得最佳答案:

来自Levenshtein的进口比率
公制=0
对于主控单元名称中的主控单元名称:
新指标=比率(名称、主指标名称)
如果(新度量>度量):
度量=新的度量

总之,我说搜索字符串和字符串列表之间最大百分比Levenshtein距离的最快方法是迭代字符串列表,使用
Levenshtein.ratio()
获得每个字符串与第一个字符串的比率,然后在每次迭代中检查最高的值比率。

通过实验和进一步研究,我发现检查Levenshtein比率的最快方法是通过python Levenshtein库本身。函数
Levenshtein.ratio()
比在fuzzyfuzzy或difflib中使用任何函数都要快得多(对于一个游戏,整个搜索平均只需要0.05秒),这可能是因为它的简单性和C实现。我在for循环中使用此函数,对主列表中的每个名称进行迭代,以获得最佳答案:

来自Levenshtein的进口比率
公制=0
对于主控单元名称中的主控单元名称:
新指标=比率(名称、主指标名称)
如果(新度量>度量):
度量=新的度量
总之,我说搜索字符串和字符串列表之间最大百分比Levenshtein距离的最快方法是迭代字符串列表,使用
Levenshtein.ratio()
获得每个字符串与第一个字符串的比率,然后检查每个迭代中的最高值比率