Для чего бы это ни стоило, следующий результат даст ожидаемый матч:
print(process.extractOne(str, L, scorer=fuzz.token_set_ratio))
В этом случае вы получите:
('Mr Mark Longfield', 79)
В этом сценарии оценка Лоуренса Буда равна 43 .
Я говорю за то, что оно стоит , потому что я не смог найти подробностей о том, как это работает, за исключением просмотра исходного кода (ссылка ниже).
Кроме того, вам, конечно, нужно проверить, насколько хорошо это работает для вашей большой группы населения.
Существуют и другие варианты с оценщиком, с которыми вы можете протестировать. Один из них может быть даже лучше подходит. Подробнее см. здесь .
Я использовал token_set_ratio
в Java порту этой библиотеки некоторое время go, для сопоставления названий mov ie. Если я помню, это работало достаточно хорошо для моих нужд, но были определенные случаи, когда я получал ложные срабатывания - но это было связано с природой некоторых названий mov ie. Это, вероятно, не относится к вашему сценарию.
Надеюсь, это поможет.
Обновление
Некоторые заметки из комментариев в источнике:
A token_set - это набор alphanumeri c токены в строке (расщепление по пробелам).
Функции:
token_set_ratio : Возвращает меру сходства последовательностей между 0 и 100.
token_sort_ratio : возвращает меру сходства последовательностей от 0 до 100, но сортирует токены перед сравнением.
part_ratio : возвращает соотношение самой похожей подстроки в виде числа от 0 до 100.
partal_token_set_ratio : возвращает отношение наиболее похожей подстроки в виде числа от 0 до 100.
partal_token_sort_ratio : Возвращает отношение наиболее похожей подстроки в виде числа от 0 до 100, но сортирует токены перед сравнением.
В * есть несколько дополнительных примеров использования 1062 * портовая документация Тион.