Мне нужно сравнить два неструктурированных адреса и определить, одинаковы ли они (или достаточно похожи).
Сценарий
- Адрес предоставляется конечным пользователем в виде обычного текста.
- Нет ничего, что могло бы помочь пользователю писать более идентифицируемым образом (без автозаполнения, ничего. Просто пустое текстовое поле).
- "# 102 Nice-Looking Street, Gotham City, NY" должно совпадать с "Nice Loking St., Gotham City, New York, apt 102".
- Использование стороннего сервиса не вариант.
- Поиск не проблема. У меня уже есть две струны. Мне нужно проверить, представляют ли они один и тот же адрес, несмотря на его различия в структуре.
Что я нашел
Я знаю, что мы можем использовать некоторую нечеткую логику для такого рода сравнения с некоторой терпимостью к орфографическим ошибкам, но ...
- Есть некоторые ключевые слова (например, сравнение "Street" с "St." или "# 102" с "apt 102", или "NY" с "New York"), которые не должны наказывать степень надежность.
- Некоторые слова можно расположить в другом порядке (например, квартира в приведенном выше примере).
Я не хочу изобретать колесо. Эта проблема кажется общей проблемой в разных контекстах, и я думаю, что существует алгоритм (с некоторыми небольшими изменениями, возможно), который может подойти для этого сценария.
заранее спасибо