DaData.ru вычисляет координаты, а парсер адресов виляет хвостом

    DaData.ru — сервис автоматической проверки и исправления контактных данных (ФИО, адресов, телефонов, email).

    На дворе ноябрь, а на DaData.ru — новые возможности:
    • определение геокоординат,
    • SMS в дневное время,
    • новый адресный алгоритм,
    • оптимизация под смартфоны,
    • статистика в личном кабинете, 
    • модуль для iOS.


    Не дайте посылке уехать в Химки вместо центра Москвы


    Однажды оператор тульского коллцентра принимал заказ и вбил вместо «Москва Нагорная улица 1» адрес «Москва Нагорное 1». Потом адрес автоматически прогнали через Яндекс и получили геокоординаты Нагорного шоссе в Химках. Посылка уехала в Химки, и доставали ее оттуда с большим трудом.

    Чтобы таких историй было меньше, мы добавили в API геокоординаты. Передавайте адрес одной строкой, а мы разберем по КЛАДР и проставим геокоординаты. 


    Ищем тщательно  — возвращаем координаты улицы, если не найден дом. И координаты центра города, если не найдена улица.
    Всегда указываем точность, с которой нашли геокоординаты объекта — это дом, улица или населенный пункт (см. коды качества). 
    Используем OSM.

    Покрытие домов:
    • Москва — 45%,
    • другие города-миллионники — 35%,
    • остальная Россия — 10%.

    Покрытие улиц:

    • Москва — 90%,
    • другие города-миллионники — 60%,
    • остальная Россия — 25%.


    Постепенно планируем дополнить данные по геокодам для увеличения покрытия.

    Посылайте SMS вовремя


    Интернет-магазину, делающему SMS-рассылки, API определит часовой пояс по адресу доставки. 



    Подсказывайте по региону, городу, улице и дому


    Для тех, у кого CMS не позволяет вводить адрес одной строкой, сделали гранулярные подсказки по адресам.



    Подсказывайте на смартфонах


    Раньше было неудобно вводить компанию или адрес на смартфоне.
     

     
    А теперь даже обладатель 3,5-дюймового телефона заполнит реквизиты компании за 10 секунд (мы проверяли).



    ИНН в отдельной строке и хорошо заметен. А адрес не засоряет пространство, от него остался только регион.

    Обрабатывайте адреса через новый умный фильтр


    Последний год мы активно переделывали алгоритм распознавания почтовых адресов. Год жарких споров между разработчиками и тестировщиками на тему «как правильно разбирать адреса». Год постоянных исправлений кода и ежедневного мониторинга автоматических тестов. 

    И вот он здесь — новый адресный фильтр. Вызывайте его через API или обрабатывайте файлы. Проверено на 50 млн автотестов.

    Тем, кто писал ошибки на форуме — огромное спасибо!

    Отдельная благодарность авторам топиков: 


    Считайте деньги


    Смотрите статистику по обработанным записям в личном кабинете.



    Включите подсказки для iOS


    Николай Сотский из InstaDev сделал отличный модуль для вызова подсказок из iOS: https://github.com/InstaDev/IDDaDataSuggestions.

    Будем рады вопросам на форуме!  
    HFLabs 85,19
    Качество и интеграция клиентских данных
    Поделиться публикацией
    Комментарии 26
    • +12
      Вы вот так сейчас пишите, как-будто вы дадата — это гугл, и все про него знают. Я вот не знаю. Вы кто такие?
      • 0
        Ну, пост в корпоративном блоге, поэтому так и пишем :–) Дадата — сервис проверки и исправления контактных данных (ФИО, адреса, телефоны, email).
        • +1
          Я понимаю вас, но статью видят не только те, кто подписан на ваш блог, поэтому, например, мне было совершенно не ясно, о чем речь. Спасибо.
          • 0
            С ужасом смотрю на скриншоты вашего сервиса. Вы что, и фамилию мою знаете? :)
            • +1
              Если она начинается на «Лы», то да :–)
          • +1
            Спасибо что заметили, это первый опыт публикации release notes для нас, будем в дальнейшем писать.
          • +1
            Определение принадлежности номера к оператору идёт по пулам?
            • 0
              Ага. По плану нумерации Россвязи.
            • +2
              Потестировал форму на главной странице, в основном по адресам.

              Название моей улицы состоит из двух слов — «Комиссара Пожарского». Но очень часто это название используется без слова «Комиссара», просто «Пожарского».

              Допустим мы опечатались в слове «Пожарского», и по разному использовали слово «Комиссара».

              Тесты и результаты:
              Пермь Комиссара Пжарского 15 — распознало корректно
              Пермь Пжарского 15 — не распознало улицу
              Пермь К. Пжарского 15 — не распознало улицу (кстати, именно «К. Пожарского» очень частый вариант употребления названия улицы — встречал очень много где)
              Просто Пожарского 15, без города — нашло меня в Железнодарожном разъезде «Пожарский» в Приморском крае
              Просто Комиссара Пожарского 15, без города но полное точное название — снова Приморский край. Почему разъезд «Пожарский» сейчас попал в выборку, хотя улица «Комиссара Пожарского» явно совпадает на 100% — загадка

              Еще совет — если не знаете какой город искать — можно как доп параметр использовать город определенный по номеру телефона, покрайней мере в примере на главной странице.
              • 0
                Большое спасибо за тесты!
                Недавно мы писали про то, как новый алгоритм работает с опечатками, и там рассказывали, что строим модели опечаток только на основе проверенных кейсов, которые гарантируют, что адрес не перетянется «не туда». Так случилось, что кейса с Пжарским мы пока не встречали, мы его обязательно добавим если он пройдёт наши тесты.
                Основная цель — быть на 100% уверенными в том, что адрес разобран правильно (если разобран).
                То есть проблема плохого разбора второго и третьего тестов именно в нетипичной опечатке, которая встретилась адресному фильтру (например, Пермь К. Пожарского фильтр разбирает правильно).
                У фильтра есть приоритет у городов и населённых пунктов над улицами. То есть, если задать только улицу, то фильтр сначала будет искать по городам и н.п. Проблема обычно решается городами по умолчанию, то есть списком городов, в которых стоит искать адрес, если в нём отсутствует указание города.
                В функционале на Дадата отсутствует возможность задавать город или регион по умолчанию, поэтому фильтр при отсутствии города пытается притянуть его к любому городу или населённому пункту, который есть в России. Им оказался железнодородный разъезд «Пожарский»:)
                Определение города по номеру телефона есть в корневом продукте Фактор, но на Дадате не включено из-за разной специфики заказчиков. Ведь адрес может быть не только проживания, но и, например, постоянной регистрации, которая часто не соответствует городу проживания.
                • 0
                  А вы в таких случаях (когда нет четкой логики) используете фильтрацию списка н.п. (если он не был задан), по IP адресу пользователя? Ведь очень частый кейс это заполнение собственного адреса, и уж город из которого идет запрос опознать по IP можно достаточно точно. По крайней мере это даст дополнительный весовой коэффициент при подборе н.п.
                  • 0
                    Так как подсказки подключаются на страницу в виде скриптов, они не видят ip адрес и иную информацию о пользователе. Впрочем, можно добавить скрытый необязательный параметр для ip адреса, чтобы его передавал используемый подсказки сервис, а мы определяли вероятный город.
                    Пока можно пробовать передавать отдельным параметром город, то есть самостоятельно мэтчить ip.
                    И ещё мы внимательно прислушиваемся ко всем предложениям на странице поддержки, особенно набирающим голоса;)
                    • +1
                      AlexGechis немного ошибся :–) Конечно, в подсказках мы используем город, определенный по IP-адресу пользователя. Например, если вы находитесь в Новосибирске и вводите «сирен», то увидите Сиреневую улицу. А если в Москве — то Сиреневый бульвар.
                      • 0
                        Да, приношу извинения за дезинформацию, заработался со стандартизацией адресов:)
                • +3
                  Большое спасибо. Этот релиз намного интереснее предыдущего.
                  Спасибо, что прислушиваетесь к просьбам.
                  Очень легко интегрируется в любую форму. Все очень логично.
                  • 0
                    Вы очень вовремя :)
                    Уже задумывался над собственным велосипедом (нужно подсвечивать на карте гугла заданные адреса), а тут вы со своей статьёй — сразу же нашлось применение API модулю.

                    Но,… на первом же тест-кейсе приложение споткнулось :(
                    Адрес: «Москва, ул. 8 марта, д. 8», гео-координаты выдаются с точностью «город» и дают точку в районе м. Преображенская площадь.
                    Та же проблема с улицами «1я улица 8 марта», «2я улица 8 марта». С другими, начинающимися на цифру, улицами всё в порядке («26 Бакинских Коммисаров») — выдаются координаты конкретного дома.
                    И даже «Химки, 8 марта, 6» показывает правильные координаты.

                    Похоже, мне попалась заколдованная улица :)
                    • 0
                      Из всех улиц Москвы эта, пожалуй, самая сложная. Дело в том, что улиц Москва 8 Марта две штуки, и находятся они в разных районах города. Определить про какую улицу идёт речь нельзя не только автоматически, но и вручную без звонка абоненту (если только не указана дополнительная информация).
                      А вот с 1-й и 2-й 8 марта всё проще. Данных о координатах этих улиц пока нет в OSM, поэтому мы про них не знаем. В ближайшем будущем мы планируем заняться пополнением OSM популярными кейсами, которых там пока нет.
                    • 0
                      Распознаете ли вы адреса, заданные в осм диапазонами (через addr:interpolation)
                      Распознаете ли вы двойные адреса?
                      Распознаете ли вы адресацию без улиц и какие схемы адресации помимо улица дом вы поддерживаете?
                      • 0
                        Мы распознаём адреса согласно ФИАС, кроме этого у нас есть свои дополнительные справочники. То есть, если дом в ФИАС задан без улицы, то мы его найдём.
                        То же самое касается двойных адресов — если в ФИАС они есть (обычно пишут одну улицу и два или три номера дома через дробь), то мы их распознаем.
                        Признак интерполяции мы не используем из-за того, что она не даёт точных координат домов диапазона. В случае, если у нас нет координат дома, мы возвращаем координаты соседнего или координаты центра улицы, что не хуже, чем при использовании интерполяции.
                      • 0
                        Планируется ли добавление общественных мест в подсказки? Чтобы определяло координаты
                        • 0
                          Вы имеете в виду парки, катки и т.п., или же организации типа кафе или кинотеатров?
                          • 0
                            кафе, кинотеатры, аэропорты, памятники, скверы и т.д.
                          • 0
                            Расскажите, пожалуйста, какой у вас сценарий использования, как в нем участвуют координаты общественных мест?
                        • 0
                          А вот ещё тест. В центре Москвы, на стыке Маросейки и Малого Златоустинского переулка, есть дом с номером 9/13/2c7 (на доме висит табличка именно с этим номером и яндекс карты этот номер знают). Независимо от того, введёно название улицы, или переулка, номер дома Ваша система ошибочно распознаёт как 13/2с7. А вот геокоординаты даёт разные, но в обоих случаях тоже безусловно ошибочные.
                          • 0
                            Спасибо за замечание, мы исправим поведение в ближайшем будущем. К слову, в подсказках проблемы при вводе данного адреса не возникает, только при стандартизации.

                          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                          Самое читаемое