Поддержи Openmeetings

пятница, 2 мая 2014 г.

Службы автодополнения адресов в веб-формах

А мне нравится проект DaData. Там я бы сама поучаствовала.

Ирина, рецензент этой статьи

К любой форме регистрации или оформления заказа для получения качественных данных нужно добавить множество проверок имени, почтового адреса, электронной почты, телефона. Чтобы ускорить разработку подобных форм, некоторые компании предлагают службы ввода адреса и его проверки, которые подключаются с помощью простого программного интерфейса.

Общие плюсы подобных служб для пользователей:

  • не надо привлекать дорогого программиста — достаточно по инструкции вставить соответствующий виджет на соответствующем этапе сбора данных;
  • поставщик услуги обеспечивает качество данных в базе;
  • свободные и бесплатные решения, существующие на рынке, удерживают цену на низком уровне.

Эти три пункта служат залогом того, что небольшой случайной компании сложно создать подобную службу общего пользования. На данном рынке играют большие компании-монополисты, такие как Google, и компании, предоставляющие специализированные услуги в области повышения качества данных и обладающие солидным портфелем коммерческих клиентов, за чей счет происходит отладка службы и повышение качества баз данных.

Пока решения интернет-монополий не работают в России достаточно качественно, специализированные компании имеют шанс укусить пирога. Процесс информационного обеспечения у таких компаний уже существует, необходимо доработать программное обеспечение. Если службы для веба более-менее работают, то для мобильных приложений, которые приходят на смену сайтам, на сегодняшний день встраиваемых решений не существует.

На основании проверяемых данных службы очистки данных могут собирать отчеты об использовании и предоставлять стандартные аналитические инструменты для работы с подобной статистикой. Эти инструменты удобны пользователям, но вместе с их появлением растет риск потери важных коммерческих данных. Потенциально этими данными может воспользоваться кто-то еще, например, конкуренты, подкупившие сотрудника поставщика услуг.

Несмотря на сложности, развивать российский рынок разработки подобных служб необходимо. Вот что говорит основатель компании HFLabs Дмитрий Журавлев, про продукт которой пойдет речь в следующем разделе:

Наверное, универсальный совет, независимый от времени, личностей, рынков и конъюнктуры — будь смелее и делай то, во что веришь. Это не гарантирует успех. Это гарантирует хорошие воспоминания независимо от полученных результатов. Ведь главный результат любой деятельности — это вы сами.

Замечательная служба DaData

Компания HFLabs, созданная Еленой Журавлевой и ее мужем Дмитрием, создает решения по повышению качества персональных данных, внедряет их корпоративным клиентам — банкам, страховым компаниям, магазинам, телекомам и коллекторским агентствам. В результате компании экономят время сотрудников и расходы, в том числе расходы на проведение массовых обзвонов и рассылок.

На базе корпоративных решений была создана служба DataQ.ru, предлагавшая стоимость процессинга одной записи около 2-3 рублей. На подобные условия соглашались около 20% всех заинтересованных клиентов. Чтобы расширить аудиторию, в той же компании была создана служба DaData.ru со стоимостью процессинга 10 копеек за запись и договором-офертой, уменьшающим необходимую бюрократию. Привязываться к количеству записей — хлебная традиция динозавров рынка MDM, таких как SAP. Пример работы этой службы приведен ниже — укажите адрес, который требуется нормализовать, в поле ниже.

Плюсы

Рассмотрим плюсы решения от HFLabs.

  • идея ограничить пользователя одним полем ввода замечательно проявляет себя на мобильных устройствах, и в целом проста и удобна;
  • система предлагает подсказки даже в том случае, если пользователь забыл переключить регистр и печатает на английской раскладке;
  • поставщики сервиса используют версию КЛАДР, уточненную с помощью баз партнеров (ЕГРЮЛ, МосГорБТИ);
  • авторы занимаются постоянным совершенствованием качества своего продукта и даже ищут в команду дополнительного специалиста по тестированию.

Минусы

Раз есть плюсы, то можно и минусы поискать. Все они легко исправляются и могут исчезнуть уже завтра:

  • не проверяется домен электронной почты, появляющейся при нажатии на попробовать бесплатно;
  • при авторизации через Facebook и Twitter нет возможности отключить спам — это потенциально может иметь эффект, обратный задуманной популяризации;
  • API key не проверяется, и не ясно, зачем требуется его перегенерировать;
  • для встраивания подсказок в сайт требуется перенести 114 строчек кода — многовато.

Система качества DaData

Реализацию службы очистки адресных данных DaData можно разбить на три компонента:

  • информационная база адресов, включая алгоритмы генерации подсказок,
  • пользовательский интерфейс,
  • интерфейс взаимодействия базы и пользователя.

Для того, чтобы служба с каждым днем становилась лучше и оправдывала свою цену, а также репутацию лучшего продукта на рынке, необходимо выстроить систему непрерывного улучшения качества для каждого составляющего службу компонента. В тестовом задании предлагается ограничиться вдумчивым тестированием удобства пользовательского интерфейса и автоматическим тестированием интерфейса взаимодействия с базой.

С моей точки, зрения для успешности сервиса не менее важно регулярно проводить мониторинг современных технических возможностей устройств для совершенствования интерфейса взаимодействия с базой и алгоритма генерации подсказок. Например, добавив к передаваемой информации текущие координаты пользователя, или анализируя на стороне сервера его IP-адрес, можно упорядочивать подсказки по близости к тому месту, откуда производит ввод пользователь. Другими словами, если пользователь набирает улица Ленина, географическая привязка поможет выбрать тот город, откуда происходит ввод. Если пользователь использовал для авторизации Facebook, то местонахождение пользователя можно определить по его последним чекинам.

Если вводимую информацию в базе, можно те адреса, которые уже вводились ранее, размещать в списке подсказок выше, чем другие адреса. Это позволит более эффективно обрабатывать ситуацию, когда в коллективе какой-то компании, разрабатывающей программное обеспечение, есть традиция регулярно заказывать пиццу, в то время как на соседнем заводе никто и никогда подобных заказов не делает.

Для эффективной работы важна правильная приоритизация показываемых подсказок, и особенно — подсказки в первой выпадающей строке. Как показывает пример с набором улица Ленина, правильно упорядочивать подсказки, используя только строку, в которой пользователь набирает данные, невозможно. Анализируя дополнительные данные такие, как тип используемого устройства, тип бизнеса пользователя, времена совершения тех или иных действий в интерфейсе и, главное, окончательно выбранный адрес, можно построить самообучающийся алгоритм, предлагающий порядок подсказок таким образом, чтобы общее среднее время набора было минимальным. Другими словами, по подобным данным можно пытаться определить портрет пользователя.

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

Удобство интерфейса пользователя

Вместе с прошлым веком прошло и время, когда все веб-сайты были страшными и неудобными. На сегодняшнем рынке удобство технологического решения экономит дорогое время пользователей и определяет успех продаж. Анализ интерфейса позволяет отметить следующие возможности улучшения текущей реализации:

  1. Что делают пользователи, когда у них нет технической возможности ввести отсутствующий в базе адрес? Выбрали ближайший к нам, в комментарии к заказу указали правильный адрес и отправились праздновать, потратив 5 минут на ввод адреса. Для сервиса, ориентированного на бизнес, важно дать возможность вводить адрес, даже если он отсутствует в базе. Правда необходимо это сделать таким образом, чтобы пользователь не вводил подобные адреса по ошибке. Один из способов реализовать данную функциональность — требовать ручной разблокировки тематического поля, куда заносится «нестандартная» информация. Если передавать «нестандартные» адреса в базу, то их можно использовать для повышения качества базы адресов. Для проверки подобных адресов можно использовать как отзыв бизнеса, который обработал подобный адрес, так и просто количественную статистику вводов.
  2. Для многих служб важно ввести также часто используемые параметры — подъезд и этаж, а также наличие и номер домофона.
  3. Запоминание предыдущих адресов, которые вводились в форму с данного рабочего места, позволяет сократить число нажатий клавиш для выбора правильного адреса в десятки раз.
  4. При попытке ввести точку, она появляется в поле ввода, а при переходе на следующий символ удаляется. Это приводит к дерганью курсора и непониманию, что же было удалено в поле ввода. Лучше при нажатии «запретных» символов не печатать их в поле ввода, а выводить всплывающую подсказку, какие символы можно использовать.
  5. На Android 4.1 у браузера не получалось одновременно показать клавиатуру и поле ввода, приходилось после появления клавиатуры докручивать окошко, чтобы было видно, что набираешь.
  6. Хорошо по умолчанию показывать город, в котором находишься.
  7. В полях, отображающих разные поля адреса, 1) нет заголовков — это вводит в заблуждение; 2) на эти поля можно встать мышкой, а редактировать их нельзя — либо должны быть совсем недоступны, либо пусть будет можно исправить.
  8. На поле, например, квартиры, стрелки вверх/вниз не работают; логично, чтоб осуществлялся переход к ближайшему значимому полю, например, от квартиры по стрелке вверх — к номеру дома. Такая же семантика стрелок вверх/вниз должна поддерживаться в адресной строке.
  9. После нажатия Escape в поле ввода адреса, Enter перестаёт работать.

Тестирование интерфейса с базой

Тестирование интерфейса с базой предлагается проводить в соответствии со следующими принципами:

  1. Перед началом тестирования необходимо разработать гибкую тестовую среду. Например, так как такие данные, как IP адрес, с которого производится тестирование, сложно существенно менять от теста к тесту. Необходимо разработать черный вход в систему, через который подавать географически различные IP-адреса.
  2. Так как положение подсказок в списке зависит от конкретного сервиса, сценарии тестирования должны выполняться от лиц пользователей с разными профилями статистики.
  3. Взаимодействие базы и пользователя происходит через интернет, поэтому необходимо контролировать объем информационного обмена между этими компонентами.
  4. Собранные трассы пользовательских действий вместе с окончательными результатами выбора пользователя, используемые для алгоритма самообучения, являются основой тестовой базы.

Опишем подробнее, с чего начать наполнение базы автоматическими тестами:

  1. Минимальная функциональность интерфейса взаимодействия с базой — по строке, введенной пользователем, выдавать список подсказок. Как же выбрать набор строк, которые будут посылаться на вход интерфейсу? Как проверять, что набор подсказок, который прислал сервер, хороший? Осмысленно выбирать подстроки адресов из реальных трасс, и для каждой такой подстроки проверять, что 1) список выдаваемых подсказок не очень большой; 2) подсказка содержит вариант, соответствующий адресу — адрес целиком, или его подстроку.
  2. Необходимо вести базу регрессионных тестов, куда включать те случаи, когда алгоритм почему-то отработал плохо. В частности, в эту базу должны входить те случаи, которые прислали внимательные читатели статей про DaData. Внимание к местам, где происходят ошибки, хорошо отражает алгоритмическую сложность соответствующего программного кода и спасает от повторных ошибок.
  3. По каждой строке из трасс, или из регрессионной базы, можно автоматически генерировать несколько «похожих» тестов для того же адреса. Например, первый корпус можно ввести как «к 1», «корп 1», «корпус 1», а некоторые захотят ввести его неправильно как «стр 1» или «строение 1». «Похожие» тесты должны проверять, что подобные семантически нейтральные замены не влияют на то, какие подсказки присылает база. Примечание: подобный тест найдет пару ошибок в текущей реализации для адреса г Москва, ул Верхоянская, д 6, корп 1, кв 303.

Сравнение служб автодополнения адресов

У описываемой службы автодополнения адресов есть ряд аналогов. Приведем примеры работы двух аналогичных служб.

КЛАДР в облаке

Основным недостатком этого сервиса является невозможность вводить адрес одной строкой. Из плюсов: свободный продукт. Пример.

Google Geocode

Созданная для задачи геокодирования, служба Google Geocode может использоваться для автодополнения адресов. Пример.

Глоссарий

Виджет — элемент графического интерфейса пользователя, имеющий стандартный внешний вид и выполняющий стандартные действия.

Геокодирование — процесс назначения географических меток (таких как географические координаты, выраженные в виде широты и долготы) объектам карты и записям данных. Например, геокодированием является привязка координат почтовым адресам, IP-адресам или фотографиям (по принципу, где было сделано фото).

Классификатор адресов Российской Федерации (КЛАДР) — ведомственный классификатор ФНС России, созданный для распределения территорий между налоговыми инспекциями и автоматизированной рассылки корреспонденции. В настоящее время файлы КЛАДР создаются из базы данных ФИАС и обновляются еженедельно. КЛАДР доступен для свободного скачивания налогоплательщиками на сайте ФГУП ГНИВЦ ФНС России и может использоваться для автоматизации деятельности и ускорения ввода данных. В КЛАДРе есть привязка почтовых индексов к адресу.

Очистка данных (data cleansing, data cleaning или data scrubbing) — процесс выявления и исправления ошибок, несоответствий данных с целью улучшения их качества. Очистка данных является составной частью интеллектуального анализа данных.

Управление основными данными (MDM, master data management, управление справочными данными, reference data management, RDM) — совокупность процессов и инструментов для постоянного определения и управления основными данными компании (в том числе справочными).

Федеральная информационная адресная система (ФИАС) — ведомственный классификатор ФНС России. Классификатор содержит адресные элементы и историю их изменения: регионы, районы, города, городские округа, населенные пункты, улицы, дома. База данных ФИАС распространяется бесплатно и доступна для скачивания. Доступны как полные выгрузки на определённую дату, так и изменения относительно предыдущей полной выгрузки.

Комментариев нет :

Отправить комментарий