У меня есть большая коллекция имен людей (например, "john smith" ). Я хочу искать людей по имени в нем. Однако некоторые из запросов будут написаны с ошибкой (например, "jon smth", "johnsm ith" ). Существуют ли библиотеки коррекции орфографии с привязками Python, которые могут найти совпадения с исправлениями для меня?
Я знаю Whoosh и Python-aspell. Коррекция орфографии Whoosh не работает для меня, потому что она записывает коллекцию правильных написаний на диск, а не сохраняет их в памяти. Это делает поиск слишком медленным для моего приложения. Кажется, нет ничего странного в изменении этого поведения из-за того, как структурирован код. Кроме того, Whoosh не влияет на разные изменения персонажей по-разному, хотя, скажем, "y" гораздо более смущается с "i" ( "jim kazinsky" → "jim kazinski" ), чем "z",
Aspell не работает с именами людей, так как имена обычно содержат пробелы - Aspell считает это слово фундаментальной единицей исправления. Кроме того, насколько я понимаю, Aspell использует n-граммовую модель коррекции орфографии, а не модель изменения расстояния между символами. Хотя модель n-gram имеет смысл для словарных слов, она не подходит для имен: у людей "bob ruzatoxg" и "joe ruzatoxg" есть много редких триграмм, так как они имеют ту же самую редкую фамилию, Но они явно разные люди.
Следует также упомянуть, что я не могу просто сравнить каждый запрос со всеми записями в коллекции - это было бы слишком медленно. Некоторый индекс нужно заранее создать.
Спасибо!