Пишем почтовый адрес, как человеки

в 13:54, , рубрики: dadata, dadata.ru, usability, адреса, Алгоритмы, Блог компании Human Factor Labs (HFLabs), Веб-разработка, КЛАДР, Мобильный веб, ФИАС, метки:

Пишем почтовый адрес, как человеки - 1 Мне совершенно непонятна выгода от удобного интерфейса.

Да, он красивый, с ним проще работать. Но как посчитать материальную пользу?

Пять лет назад в аэропортах звучал синтезированный голос, объявляя прилёты и вылеты с разорванной интонацией после каждого слова. Иногда даже отличалась скорость речи для разных слов.

И вот пару недель назад я заслушивался новыми объявлениями о вылетах. Было чувство, что их целиком записал профессиональный диктор, который всю жизнь учился на эту роль. Интерфейс стал лучше, он стал более натуральным.
Стал ли я от этого больше летать? Вряд ли.
Может, у меня появилось предпочтение между аэропортами? Не думаю, что это настолько важный момент.
Тем не менее, зачем-то люди потратили время и деньги на приведение объявлений к естественному виду. И это очень круто!

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

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

Все правила, описанные ниже, мы выработали сами. Большинство из них используем или скоро подключим на dadata.ru.

Полтора года назад мы задумались, как писать адреса по-человечески. Гугл не дал ответа, как упростить адрес, поэтому мы стали общаться с лингвистами, проводить тесты и экспериментировать.

Мы стремились выработать правила формирования понятного адреса с минимальной длиной, написанного так, как его пишут люди.

Матчасть

Чтобы автоматически формировать адреса, нам нужен источник адресов. Если знаете о КЛАДР или ФИАС, пропустите этот пункт. Для остальных расскажу, что в России адреса формируются иерархически:

  1. У каждого адреса есть субъект. В России 85 субъектов. Например: Московская область, Республика Коми, Москва.
    
По административному делению Москва находится не в Московской области, это самостоятельный город-регион.
    Химки находятся в Московской области, а не в Москве. А вот Зеленоград, наоборот, — в Москве.
  2. В субъектах есть районы и города.
    Город без района в субъекте является городским округом. Например, Новосибирск подчинён непосредственно субъекту “Новосибирская область”.
    В ФИАС есть признак статуса центра для городов и населённых пунктов. Эта информация нам пригодится в дальшейшем при формировании адреса одной сторокой.
  3. В районах есть города и населённые пункты.
  4. В городах есть улицы и населённые пункты. Согласно ФИАС, там ещё бывают дополнительные территории: обычно это гаражно-строительные кооперативы, садово-некоммерческие товарищества и т.п.
  5. Часто в адресе указывают район города, например, “Москва, Алексеевский р-н”, или “Новосибирск, Щ”. К сожалению, внутригородские районы отсутствуют в ФИАС и КЛАДР, поэтому мы не будем использовать их при автоматическом построении адреса.
  6. В населённых пунктах есть улицы, дополнительные территории (такие же, как и в пункте 4) и дома. Бывают дома, которые не на улице, а просто в населенном пункте.

Используем привычный порядок слов

Для начала рассмотрим строку целиком. В России привыкли писать адреса от наиболее верхнего уровня административного деления к нижнему. Привычный порядок элементов таков:

  1. субъект;
  2. район;
  3. город;
  4. населенный пункт;
  5. улица;
  6. дом;
  7. расширение дома (корпус, строение, подъезд, этаж, квартира, офис,..).

Например, “Московская Область, Мытищинский Район, Мытищи Город, Ульяновская Улица, Дом 3”

Кроме этого, важен порядок слов внутри каждого уровня. Например, правильно писать “Город Санкт-Петербург” вместо “Санкт-Петербург Город”, или “Алтайский Край” вместо “Край Алтайский”. Порядок определяется по-своему для каждого типа:

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

Не забываем и про исключения:

  • “Ханты-Мансийский автономный округ — Югра” пишем без типа, так как “автономный округ” есть в названии по ФИАС/КЛАДР. Пример: “Ханты-Мансийский автономный округ — Югра, г Ханты-Мансийск, ул Анны Коньковой, д 1”
  • Чувашская Республика имеет замечательный тип Чувашия (то есть наименование региона “Чувашская Республика -”, а тип — “Чувашия”), его пишем после наименования: “Чувашская Республика — Чувашия, г Чебоксары, ул Адмирала Ушакова, д 2”, или опускаем вовсе и удаляем тире в конце наименования: “Чувашская Республика, г Чебоксары, ул Адмирала Ушакова, д 2”

Адрес из ФИАС:


Россия, Татарстан Республика, Казань Город, Братьев Касимовых Улица, дом 64

после перестановки элементов в правильном порядке превращается в

Россия, Республика Татарстан, Город Казань, Улица Братьев Касимовых, дом 64

Читать стало проще. Но можно сделать еще лучше и короче.

Разделяем типы и наименования при помощи форматирования

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

Все типы пишем с маленькой буквы, все наименования — с большой. Посмотрите сами, второй вариант читается быстрее:

До:

Камчатский Край, Город Петропавловск-Камчатский, Улица Беринга, Дом 90, Квартира 61

После:

Камчатский край, город Петропавловск-Камчатский, улица Беринга, дом 90, квартира 61

Сокращаем типы и наименования

Сокращения типов есть в ФИАС. Мы используем их, добавляем свои правила, основанные на комментариях заказчиков, а часть оставляем как есть:

Очень много типов с сокращениями

ААЛ: аал
АБОНЕНТСКИЙ ЯЩИК: а/я
АВТОДОРОГА: автодорога
АВТОНОМНАЯ ОБЛАСТЬ: Аобл
АВТОНОМНЫЙ ОКРУГ: АО
АЛЛЕЯ: аллея
АРБАН: арбан
АУЛ: аул
БЕРЕГ: берег
БУГОР: бугор
БУЛЬВАР: б-р
ВАЛ: вал
ВЛАДЕНИЕ: влд
ВОИНСКАЯ ЧАСТЬ: в/ч
ВОЛОСТЬ: волость
ВЪЕЗД: въезд
ВЫСЕЛКИ: высел (устаревшее)
ВЫСЕЛКИ(ОК): высел
ГОРОД: г
ГОРОДОК: городок
ГОРАЖНО-СТРОИТЕЛЬНЫЙ КООПЕРАТ: гск (устаревшее)
ГАРАЖНО-СТРОИТЕЛЬНЫЙ КООПЕРАТ: гск
ГАРАЖНО-СТРОИТЕЛЬНЫЙ КООПЕРАТИВ: гск
ГАРАЖНО-СТРОИТ-НЫЙ КООПЕРАТИВ: гск
САДОВОЕ ТОВАРИЩЕСТВО: сад тов
СЕЛЬСКОЕ МУНИЦИП.ОБРАЗОВАНИЕ: сельское мо
ДАЧНОЕ НЕКОММЕРЧЕСКОЕ ПАРТНЕРСТВО: днп
ЭСТАКАДА: эстакада
ДАЧНЫЙ ПОСЕЛОК: дп
ДЕРЕВНЯ: д
ДОМ: дом
ДОРОГА: дор
Ж/Д ОСТАНОВОЧНЫЙ (ОБГОННЫЙ) ПУНКТ: ж/д_оп (устаревшее)
Ж/Д ОСТАНОВ (ОБГОННЫЙ) ПУНКТ: ж/д_оп (устаревшее)
Ж/Д ОСТАНОВ. (ОБГОННЫЙ) ПУНКТ: ж/д_оп
ЖЕЛЕЗНОДОРОЖНАЯ БУДКА: ж/д_будка
ЖЕЛЕЗНОДОРОЖНАЯ КАЗАРМА: ж/д_казарм
ЖЕЛЕЗНОДОРОЖНАЯ СТАНЦИЯ: ж/д_ст
ЖЕЛЕЗНОДОРОЖНАЯ ПЛАТФОРМА: ж/д_платф
ЖЕЛЕЗНОДОРОЖНЫЙ ПОСТ: ж/д_пост
ЖЕЛЕЗНОДОРОЖНЫЙ РАЗЪЕЗД: ж/д_рзд
ЖИВОТНОВОДЧЕСКАЯ ТОЧКА: жт
ЖИЛАЯ ЗОНА: жилзона
ЖИЛОЙ РАЙОН: жилрайон
ЗАЕЗД: заезд
ЗАИМКА: заимка
ЗОНА: зона
КАЗАРМА: казарма
КАНАЛ: канал
КВАРТАЛ: кв-л
КИЛОМЕТР: км
КОЛЬЦО: кольцо
КОМНАТА: комн
КОРДОН: кордон
КОРПУС: к
КОСА: коса
КРАЙ: край
КУРОРТНЫЙ ПОСЕЛОК: кп
ЛЕСПРОМХОЗ: лпх
ЛИНИЯ: линия
МАССИВ: массив
МЕСТЕЧКО: м
МЕСТНОСТЬ: местность
МИКРОРАЙОН: мкр
МОСТ: мост
НАБЕРЕЖНАЯ: наб
НАСЕЛЕННЫЙ ПУНКТ: нп
ОБЛАСТЬ: обл
ОКРУГ: округ
ОСТРОВ: остров
ПАРК: парк
ПЕРЕЕЗД: переезд
ПЕРЕУЛОК: пер
ПЛАНИРОВОЧНЫЙ РАЙОН: п/р
ПЛАТФОРМА: платф
ПЛОЩАДКА: пл-ка
ПЛОЩАДЬ: пл
ПОГОСТ: погост
ПОЛУСТАНОК: полуст
ПОСЕЛЕНИЕ: п
ПОСЕЛОК ГОРОДСКОГО ТИПА: пгт
ПОСЕЛОК И(ПРИ) СТАНЦИЯ(И): п/ст
ПОСЕЛОК СЕЛЬСКОГО ТИПА: п (устаревшее)
ПОСЕЛОК: п
ПОЧИНОК: починок
ПОЧТОВОЕ ОТДЕЛЕНИЕ: п/о
ПРОЕЗД: проезд
ПРОМЫШЛЕННАЯ ЗОНА: промзона
ПРОСЕК: просек
ПРОСЕКА: просека
ПРОСЕЛОК: проселок
ПРОСПЕКТ: пр-кт
ПРОТОК: проток
ПРОТОКА: протока
ПРОУЛОК: проулок
РАБОЧИЙ ПОСЕЛОК: рп
РАЗЪЕЗД: рзд
РАЙОН: р-н
РЕСПУБЛИКА: Респ
РЯДЫ: ряды
САД: сад
САДОВОЕ НЕКОМ-Е ТОВАРИЩЕСТВО: снт
СЕЛО: с
СЕЛЬСКАЯ АДМИНИСТРАЦИЯ: с/а
СЕЛЬСКИЙ ОКРУГ: с/о
СЕЛЬСКОЕ ПОСЕЛЕНИЕ: с/п
СЕЛЬСКОЕ МУНИЦИП. ОБРАЗОВАНИЕ: с/мо (устаревшее)
СЕЛЬСКОЕ МУНИЦИПАЛЬНОЕ ОБРАЗО: с/мо (устаревшее)
СЕЛЬСКОЕ МУНИЦИПАЛЬНОЕ ОБРАЗОВАНИЕ: с/мо (устаревшее)
СЕЛЬСКОЕ МУНИЦИП ОБРАЗОВАНИЕ: с/мо
СЕЛЬСОВЕТ: с/с
СКВЕР: сквер
СЛОБОДА: сл
СПУСК: спуск
СТАНИЦА: ст-ца
СТАНЦИЯ: ст
СТРОЕНИЕ: стр
ТЕРРИТОРИЯ: тер
ТРАКТ: тракт
ТУПИК: туп
УЛИЦА: ул
УЛУС: у
УЧАСТОК: уч-к
ФЕРМА: ферма
ХУТОР: х
ШОССЕ: ш
ЧУВАШИЯ: Чувашия
ВЕЛАЯТ: велаят
ГОРСОВЕТ: горсовет
УЕЗД: уезд
ЭКОНОМИЧЕСКИЙ РАЙОН: экономический район
ЭТРАП: этрап
ФЕРМЕРСКОЕ ХОЗЯЙСТВО: ф/х
НЕКОММЕРЧЕСКОЕ ПАРТНЕРСТВО: н/п
ДАЧНОЕ НЕКОМ-Е ПАРТНЕРСТВО: днп
БАЛКА: балка
БУХТА: бухта
МАЯК: маяк
ГОРКА: горка
ТОННЕЛЬ: тоннель
МЫС: мыс

Если вы хотите составить свои правила для сокращений типов, то обратите внимание на два момента:

  • При сокращении типов можно не бояться потерять уникальность в рамках строки с адресом. Все типы стоят рядом с наименованиями, и человек без труда может определить, что подразумевается под сокращением. Например, в адресе “респ Татарстан, д Набережные Моркваши, д 45” без объяснения понятно, что первая д — это деревня, а вторая д — дом.
  • Тем не менее, сокращение должно быть понятным. Например, вместо адреса “Москва п Турчанинов”, где “п” может быть как переулком, так и проспектом или площадью, лучше написать “Москва, пер Турчанинов”.

В некоторых случаях люди сокращают слова “Большая” и т.п. в названиях улицы, например “Б. Ордынка”. Но автоматически делать это страшно, так как можно потерять уникальность наименования.

Адрес до сокращения типов:

Россия, республика Татарстан, город Казань, улица Братьев Касимовых, дом 64.

Адрес после:

Россия, респ Татарстан, г Казань, ул Братьев Касимовых, д 64.

Удаляем все, что можно удалить

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

Предлагаем такие правила:

  1. Удаляем страну, если это Россия. Редкие случаи вроде села Париж не повлияют на восприятие: “Челябинская обл, Нагайбакский р-н, село Париж”.
  2. Удаляем тип у города. Название города уникально в рамках одного района, так что эта информация не критична. Было “г Воронеж”, остался “Воронеж”.
  3. Удаляем регион у городских округов (это крупнейшие города в регионах, про них я писал выше). Эти города известны и уникальны в России. Например, пишем не “Новосибирская область Новосибирск”, а просто “Новосибирск”.
  4. Удаляем район у центров районов (признак есть в ФИАС и КЛАДР). Они уникальны и достаточно известны в рамках региона. Например, пишем не “Московская обл, Можайский р-н, г Можайск”, а “Московская обл, г Можайск”
  5. Удаляем город, если это понятно из контекста. Афиша концертов в Екатеринбурге? Хватит писать слово “Екатеринбург” в адресе каждой площадки.

Пока я писал статью, появилась идея удалять слово “улица”. Мне кажется, если этот тип не указан, он воспринимается как умолчательный. Давайте проведём эксперимент: “Москва, Тверская”. О чем подумали, об улице? Однако, есть ещё Тверская площадь. Впрочем, это пока неподкреплённое предположение, и делать так следует на свой страх и риск. Было бы интересно услышать комментарии по этому поводу.

После удаления очевидных сущностей адрес из примера примет более читаемый вид:
Было:

Россия, респ Татарстан, г Казань, ул Братьев Касимовых, д 64.

Стало:

Казань, Братьев Касимовых, д 64

или, если позволяет контекст:

Братьев Касимовых, д 64

Мы не удаляем тип у дома, так как обычно в адресе содержится ещё и указание на квартиру или корпус, и тогда отсутствие некоторых типов нам кажется странным. Но это дело вкуса:

Братьев Касимовых, 64, корп 1, кв 1

или

Братьев Касимовых, д 64, корп 1, кв 1

Если в адресе есть только дом, то без слова “дом” адрес будет смотреться только лучше:

Братьев Касимовых, 64

Разбиваем адрес на две строки

Наш адрес уже хороший и красивый, мы можем его отображать в интерфейсе.
Есть одно ноу-хау, как можно его ещё больше упростить при помощи форматирования: разбиваем на две строки, в первой пишем город, район, субъект (именно в такой последовательности) а во второй — населенный пункт, улицу и всё остальное.

Изначальный адрес из ФИАС:

Россия, Татарстан Республика, Казань Город, Братьев Касимовых Улица, дом 64.

Напишем так:

Казань,
Братьев Касимовых, 64

На этом всё. Надеюсь, информация вам пригодится и вы научите «говорить» ваши программы на естественном языке.
Если есть вопросы по адресам, обращайтесь. Мы эту тему любим и всегда стараемся помочь.

Автор: AlexGechis

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js