Качество и интеграция клиентских данных
98,33
рейтинг
10 ноября 2014 в 13:31

Разработка → 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.

Будем рады вопросам на форуме!  
Автор: @lyalius
HumanFactorLabs
рейтинг 98,33
Качество и интеграция клиентских данных

Комментарии (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
        служба такси
  • 0
    А вот ещё тест. В центре Москвы, на стыке Маросейки и Малого Златоустинского переулка, есть дом с номером 9/13/2c7 (на доме висит табличка именно с этим номером и яндекс карты этот номер знают). Независимо от того, введёно название улицы, или переулка, номер дома Ваша система ошибочно распознаёт как 13/2с7. А вот геокоординаты даёт разные, но в обоих случаях тоже безусловно ошибочные.
    • 0
      Спасибо за замечание, мы исправим поведение в ближайшем будущем. К слову, в подсказках проблемы при вводе данного адреса не возникает, только при стандартизации.

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

Самое читаемое Разработка