Я пишу программу, которая сравнивает меньший список названий игр с основным списком многих игр, чтобы увидеть, какие игры в меньшем списке более точно соответствуют названиям игр в основном списке, чем другие. Чтобы сделать это, я проверил расстояние Левенштейна (в процентах) между каждой игрой в меньшем списке и каждой игрой в основном списке и взял максимум всех этих значений ( чем ниже максимальный процент, тем более уникальной должна быть игра) с использованием модулей difflib
и fuzzywuzzy
. Проблема, с которой я сталкиваюсь, состоит в том, что обычный поиск с использованием process.extractOne()
или difflib.get_close_matches()
занимает около 5+ секунд на игру (с 38000 строк в главном списке), и у меня есть около 4500 игр для поиска (5 * 4500 - это около 6 часов 15 минут, на что у меня нет времени).
В надежде найти лучший и более быстрый способ поиска по списку строк, я спрашиваю, что это за Самый быстрый метод в python поиска наибольшего процентного расстояния Левенштейна между строкой и списком строк - это. Если нет лучшего способа, чем использовать две функции, описанные выше, или написать какой-то другой код зацикливания, скажите, пожалуйста.
metric = process.extractOne(name, master_names)[1] / 100
metric = fuzz.ratio(name, difflib.get_close_matches(name, master_names, 1, 0)[0]) / 100