firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.

Реквестую помощь коллективного разума по парсингу адресов, какой из вариантов лучше?

На входе есть слабо типизованный адрес. Где по идее формат следующий:

Индекс, Страна , Регион, Город, Улица, дом, всякое разное

Что я отловил.
  1. Пропуски запятых
  2. Пропуски частей
  3. Пропуски индекса
  4. Пропуски запятых
  5. Пропуски вообще всего в любых комбинациях, без разделителя
  6. Реверс всего, кстати этим страдает почему то Чечня и внезапно Дагестан (Почему????)
  7. Трэш со смесью пробелов и \t
  8. Замена запятых на пробелы (Нижний Новгород или Ново Воронеж, Нижний Устюг)
  9. Вариации (Нижний-Новгород Нижний - Новгород Нижний Новгород)


Как бы решения на поверхности, точнее что перебрал:
1. Разобрать все по логичным форматам, то есть если первый индекс больше 6 или не парсится в целое , то это мусор а не адрес
2. если нет запятых то поделить по пробелам, но тогда улица революции 1905 года просто плачет
3. Взять фиас и парсить каждый адрес, увы и ах
4. взять дадату и парсить, тоже так себе вариант

В общем призываю к обсуждению.

Возможно есть какие то мысли как этот хаос привести под знамена Императора!
  • Вопрос задан
  • 222 просмотра
Решения вопроса 1
@d-stream
Готовые решения - не подаю, но...
ParseRussianAddressV3 ? )

Думаю разделители предполагаемых сущностей - это самая мелкая и простая задача... а вот дальше... типа нарисовалось штук 8-9 похожих на поля строк - перебираем варианты максимального соответствия...

Но... "105037, улица Парковая 3-я, г. Москва" может вдруг оказаться "105037_3-я Парковая"...

p.s. адресок ломаюший парсеры от диадока долетел?
Вот еще из такого же: https://github.com/diadoc/diadocsdk-csharp/issues/227
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы