Как реализовать систему корректировки почтового адреса?
Здравствуйте!
Подскажите куда копать в вопросе приведения к канонической форме и поиска индекса для почтового адреса. Мною по работе 4 года назад была написана система работы с КЛАДР. Суть: имеются адреса, записанные как попало - не только с орфографическими ошибками, но с искаженным адресом (допустим неправильно указан район). Необходимо было находить соответствующий индекс. Реализовано было все через обучение системы - оператор при несовпадении проставлял соответствия и в следующий раз система могла определить соответствующий узел адреса. Система устарела, обучать некому. Решено сделать что-то универсальное типа сервисов dadata и т.д., но свое и чтоб локально работало.
Почитал статьи про алгоритмы нечеткого поиска. Но назрел вопрос для человека знакомого с описанной предметной областью: в каком направлении копать? Какие алгоритмы рассматривать в первую очередь? можно сузить круг по предметной области.
Заранее спасибо!
Первая статья попадалась. Но там в самом начале оговорка о том, что ошибки не критичны и считается что адреса написаны без ошибок. Вторая и третья про способы хранения адресов. В моем случае адреса в 99% неправильно написаны - орфографически ошибки и ошибки написания самого адреса. Индекса почтового нет и его нужно найти
В адресе, скорее всего, все-таки указана область (в первую очередь нужно искать ее) или хотя бы город (во вторую очередь). Когда они будут определены - количество вариантов улиц будет уже не таким страшным.
Ключевые слова "ул.", "р-н" и пр. могут помочь отличить ул. Большую Московскую от области.
Вычисляем расстояния Левенштейна для имеющихся правильных вариантов и фрагментов введенной строки. Наименьшее считаем правильным...
"Не все так просто в Датском Королевстве". К сожалению, адреса пишут иногда настолько удивительным образом, что и нормальный человек поймет не с первого раза. К примеру, есть регион Москва, а есть Московская область. И вот их путают местами. Тут тогда лучше начинать поиск с улицы и населенного пункта.