Сопоставление адресов, записанных в разных форматах, требует подхода, выходящего за рамки простого сравнения строк. Python, с библиотеками
Для сравнения строк используется алгоритм Левенштейна, реализованный в
Скрипт работает с двумя реестрами: поданных и согласованных объектов. После загрузки данных, очистки и сопоставления, к исходному реестру добавляется информация о найденных соответствиях и отметка о согласованности. Результаты сохраняются в новый файл Excel, предоставляя наглядный отчет о процессе сопоставления.
Учитывая вариативность адресов, особенно в случаях с сокращениями, комбинация
pandas
, openpyxl
и fuzzywuzzy
, предлагает эффективное решение. Ключевым шагом является предварительная очистка данных, включая приведение к нижнему регистру, удаление типовых сокращений («д.», «ул.», «г.»), скобок, лишних пробелов и знаков препинания. Это повышает точность нечеткого сопоставления, делая его более надежным. Изображение носит иллюстративный характер
Для сравнения строк используется алгоритм Левенштейна, реализованный в
fuzzywuzzy
. Функция fuzz.token_sort_ratio
сортирует слова в строках, нивелируя различия в порядке слов, что крайне важно при сравнении адресов. Эффективность повышается за счет предварительной фильтрации, когда сравниваются только те адреса, которые содержат общие цифры. Порог сходства позволяет отсеивать ложные совпадения, оптимизируя баланс между точностью и полнотой поиска. Скрипт работает с двумя реестрами: поданных и согласованных объектов. После загрузки данных, очистки и сопоставления, к исходному реестру добавляется информация о найденных соответствиях и отметка о согласованности. Результаты сохраняются в новый файл Excel, предоставляя наглядный отчет о процессе сопоставления.
Учитывая вариативность адресов, особенно в случаях с сокращениями, комбинация
fuzzy matching
и геокодинга может повысить точность сопоставления. Если геокодирование удается, то географические координаты могут служить дополнительным критерием для подтверждения совпадения адресов.