Пишем почтовый адрес, как человеки
Мне совершенно непонятна выгода от удобного интерфейса.Да, он красивый, с ним проще работать. Но как посчитать материальную пользу?
Пять лет назад в аэропортах звучал синтезированный голос, объявляя прилёты и вылеты с разорванной интонацией после каждого слова. Иногда даже отличалась скорость речи для разных слов.
И вот пару недель назад я заслушивался новыми объявлениями о вылетах. Было чувство, что их целиком записал профессиональный диктор, который всю жизнь учился на эту роль. Интерфейс стал лучше, он стал более натуральным.Стал ли я от этого больше летать? Вряд ли.Может, у меня появилось предпочтение между аэропортами? Не думаю, что это настолько важный момент.Тем не менее, зачем-то люди потратили время и деньги на приведение объявлений к естественному виду. И это очень круто!
Мне нравится естественное представление информации автоматизированными системами, как будто с вами общается живой человек. Мне кажется, что это мелкие детали, которые формируют отношение к вашему продукту в целом.И если это отношение положительное, то вас будут выбирать в дальнейшем и рекомендовать друзьям.
В статье я расскажу, как показывать адрес одной строкой так, будто его написал человек. Я не могу с уверенностью сказать, что, прочитав статью, вы увеличите прибыль.Но мне бы очень хотелось, чтобы как можно больше систем писали адреса красиво.
Все правила, описанные ниже, мы выработали сами. Большинство из них используем или скоро подключим на dadata.ru.Полтора года назад мы задумались, как писать адреса по-человечески. Гугл не дал ответа, как упростить адрес, поэтому мы стали общаться с лингвистами, проводить тесты и экспериментировать.
Мы стремились выработать правила формирования понятного адреса с минимальной длиной, написанного так, как его пишут люди.
Чтобы автоматически формировать адреса, нам нужен источник адресов. Если знаете о КЛАДР или ФИАС, пропустите этот пункт. Для остальных расскажу, что в России адреса формируются иерархически: У каждого адреса есть субъект. В России 85 субъектов. Например: Московская область, Республика Коми, Москва. По административному делению Москва находится не в Московской области, это самостоятельный город-регион.Химки находятся в Московской области, а не в Москве. А вот Зеленоград, наоборот, — в Москве. В субъектах есть районы и города.Город без района в субъекте является городским округом. Например, Новосибирск подчинён непосредственно субъекту «Новосибирская область».В ФИАС есть признак статуса центра для городов и населённых пунктов. Эта информация нам пригодится в дальшейшем при формировании адреса одной сторокой. В районах есть города и населённые пункты. В городах есть улицы и населённые пункты. Согласно ФИАС, там ещё бывают дополнительные территории: обычно это гаражно-строительные кооперативы, садово-некоммерческие товарищества и т.п. Часто в адресе указывают район города, например, «Москва, Алексеевский р-н», или «Новосибирск, Щ». К сожалению, внутригородские районы отсутствуют в ФИАС и КЛАДР, поэтому мы не будем использовать их при автоматическом построении адреса. В населённых пунктах есть улицы, дополнительные территории (такие же, как и в пункте 4) и дома. Бывают дома, которые не на улице, а просто в населенном пункте. Для начала рассмотрим строку целиком. В России привыкли писать адреса от наиболее верхнего уровня административного деления к нижнему. Привычный порядок элементов таков: субъект; район; город; населенный пункт; улица; дом; расширение дома (корпус, строение, подъезд, этаж, квартира, офис,…). Например, «Московская Область, Мытищинский Район, Мытищи Город, Ульяновская Улица, Дом 3«Кроме этого, важен порядок слов внутри каждого уровня. Например, правильно писать «Город Санкт-Петербург» вместо «Санкт-Петербург Город», или «Алтайский Край» вместо «Край Алтайский». Порядок определяется по-своему для каждого типа:
Регион, область, край, автономный округ: сначала название, потом тип. Республика, город: сначала тип, затем название. Элементы в городах: районы, улицы, площади и т.п. Порядок элементов может быть как «наименование тип», так и «тип наименование». Мы используем свой порядок для каждого типа в зависимости от окончания наименования и частоты встречаемости. Например, мы пишем «Москва, Авиационный переулок» и «Москва, переулок Александра Невского». Не забываем и про исключения: «Ханты-Мансийский автономный округ — Югра» пишем без типа, так как «автономный округ» есть в названии по ФИАС/КЛАДР. Пример: «Ханты-Мансийский автономный округ — Югра, г Ханты-Мансийск, ул Анны Коньковой, д 1» Чувашская Республика имеет замечательный тип Чувашия (то есть наименование региона «Чувашская Республика -», а тип — «Чувашия»), его пишем после наименования: «Чувашская Республика — Чувашия, г Чебоксары, ул Адмирала Ушакова, д 2», или опускаем вовсе и удаляем тире в конце наименования: «Чувашская Республика, г Чебоксары, ул Адмирала Ушакова, д 2» Адрес из ФИАС: Россия, Татарстан Республика, Казань Город, Братьев Касимовых Улица, дом 64
после перестановки элементов в правильном порядке превращается в Россия, Республика Татарстан, Город Казань, Улица Братьев Касимовых, дом 64
Читать стало проще. Но можно сделать еще лучше и короче. Простая вещь, которая поможет сделать адрес более читаемым, — визуальное разделение наименований и типов при помощи заглавных литер.Все типы пишем с маленькой буквы, все наименования — с большой. Посмотрите сами, второй вариант читается быстрее:
До:
Камчатский Край, Город Петропавловск-Камчатский, Улица Беринга, Дом 90, Квартира 61
После: Камчатский край, город Петропавловск-Камчатский, улица Беринга, дом 90, квартира 61
Сокращения типов есть в ФИАС. Мы используем их, добавляем свои правила, основанные на комментариях заказчиков, а часть оставляем как есть: Очень много типов с сокращениями ААЛ: аалАБОНЕНТСКИЙ ЯЩИК: а/яАВТОДОРОГА: автодорогаАВТОНОМНАЯ ОБЛАСТЬ: АоблАВТОНОМНЫЙ ОКРУГ: АОАЛЛЕЯ: аллеяАРБАН: арбанАУЛ: аулБЕРЕГ: берегБУГОР: бугорБУЛЬВАР: б-рВАЛ: валВЛАДЕНИЕ: влдВОИНСКАЯ ЧАСТЬ: в/чВОЛОСТЬ: волостьВЪЕЗД: въездВЫСЕЛКИ: высел (устаревшее)ВЫСЕЛКИ (ОК): выселГОРОД: гГОРОДОК: городокГОРАЖНО-СТРОИТЕЛЬНЫЙ КООПЕРАТ: гск (устаревшее)ГАРАЖНО-СТРОИТЕЛЬНЫЙ КООПЕРАТ: гскГАРАЖНО-СТРОИТЕЛЬНЫЙ КООПЕРАТИВ: гскГАРАЖНО-СТРОИТ-НЫЙ КООПЕРАТИВ: гскСАДОВОЕ ТОВАРИЩЕСТВО: сад товСЕЛЬСКОЕ МУНИЦИП.ОБРАЗОВАНИЕ: сельское моДАЧНОЕ НЕКОММЕРЧЕСКОЕ ПАРТНЕРСТВО: днпЭСТАКАДА: эстакадаДАЧНЫЙ ПОСЕЛОК: дпДЕРЕВНЯ: дДОМ: домДОРОГА: дорЖ/Д ОСТАНОВОЧНЫЙ (ОБГОННЫЙ) ПУНКТ: ж/д_оп (устаревшее)Ж/Д ОСТАНОВ (ОБГОННЫЙ) ПУНКТ: ж/д_оп (устаревшее)Ж/Д ОСТАНОВ. (ОБГОННЫЙ) ПУНКТ: ж/д_опЖЕЛЕЗНОДОРОЖНАЯ БУДКА: ж/д_будкаЖЕЛЕЗНОДОРОЖНАЯ КАЗАРМА: ж/д_казармЖЕЛЕЗНОДОРОЖНАЯ СТАНЦИЯ: ж/д_стЖЕЛЕЗНОДОРОЖНАЯ ПЛАТФОРМА: ж/д_платфЖЕЛЕЗНОДОРОЖНЫЙ ПОСТ: ж/д_постЖЕЛЕЗНОДОРОЖНЫЙ РАЗЪЕЗД: ж/д_рздЖИВОТНОВОДЧЕСКАЯ ТОЧКА: жтЖИЛАЯ ЗОНА: жилзонаЖИЛОЙ РАЙОН: жилрайонЗАЕЗД: заездЗАИМКА: заимкаЗОНА: зонаКАЗАРМА: казармаКАНАЛ: каналКВАРТАЛ: кв-лКИЛОМЕТР: кмКОЛЬЦО: кольцоКОМНАТА: комнКОРДОН: кордонКОРПУС: кКОСА: косаКРАЙ: крайКУРОРТНЫЙ ПОСЕЛОК: кпЛЕСПРОМХОЗ: лпхЛИНИЯ: линияМАССИВ: массивМЕСТЕЧКО: мМЕСТНОСТЬ: местностьМИКРОРАЙОН: мкрМОСТ: мостНАБЕРЕЖНАЯ: набНАСЕЛЕННЫЙ ПУНКТ: нпОБЛАСТЬ: облОКРУГ: округОСТРОВ: островПАРК: паркПЕРЕЕЗД: переездПЕРЕУЛОК: перПЛАНИРОВОЧНЫЙ РАЙОН: п/рПЛАТФОРМА: платфПЛОЩАДКА: пл-каПЛОЩАДЬ: плПОГОСТ: погостПОЛУСТАНОК: полустПОСЕЛЕНИЕ: пПОСЕЛОК ГОРОДСКОГО ТИПА: пгтПОСЕЛОК И (ПРИ) СТАНЦИЯ (И): п/стПОСЕЛОК СЕЛЬСКОГО ТИПА: п (устаревшее)ПОСЕЛОК: пПОЧИНОК: починокПОЧТОВОЕ ОТДЕЛЕНИЕ: п/оПРОЕЗД: проездПРОМЫШЛЕННАЯ ЗОНА: промзонаПРОСЕК: просекПРОСЕКА: просекаПРОСЕЛОК: проселокПРОСПЕКТ: пр-ктПРОТОК: протокПРОТОКА: протокаПРОУЛОК: проулокРАБОЧИЙ ПОСЕЛОК: рпРАЗЪЕЗД: рздРАЙОН: р-нРЕСПУБЛИКА: РеспРЯДЫ: рядыСАД: садСАДОВОЕ НЕКОМ-Е ТОВАРИЩЕСТВО: снтСЕЛО: сСЕЛЬСКАЯ АДМИНИСТРАЦИЯ: с/аСЕЛЬСКИЙ ОКРУГ: с/оСЕЛЬСКОЕ ПОСЕЛЕНИЕ: с/пСЕЛЬСКОЕ МУНИЦИП. ОБРАЗОВАНИЕ: с/мо (устаревшее)СЕЛЬСКОЕ МУНИЦИПАЛЬНОЕ ОБРАЗО: с/мо (устаревшее)СЕЛЬСКОЕ МУНИЦИПАЛЬНОЕ ОБРАЗОВАНИЕ: с/мо (устаревшее)СЕЛЬСКОЕ МУНИЦИП ОБРАЗОВАНИЕ: с/моСЕЛЬСОВЕТ: с/сСКВЕР: скверСЛОБОДА: слСПУСК: спускСТАНИЦА: ст-цаСТАНЦИЯ: стСТРОЕНИЕ: стрТЕРРИТОРИЯ: терТРАКТ: трактТУПИК: тупУЛИЦА: улУЛУС: уУЧАСТОК: уч-кФЕРМА: фермаХУТОР: хШОССЕ: шЧУВАШИЯ: ЧувашияВЕЛАЯТ: велаятГОРСОВЕТ: горсоветУЕЗД: уездЭКОНОМИЧЕСКИЙ РАЙОН: экономический районЭТРАП: этрапФЕРМЕРСКОЕ ХОЗЯЙСТВО: ф/хНЕКОММЕРЧЕСКОЕ ПАРТНЕРСТВО: н/пДАЧНОЕ НЕКОМ-Е ПАРТНЕРСТВО: днпБАЛКА: балкаБУХТА: бухтаМАЯК: маякГОРКА: горкаТОННЕЛЬ: тоннельМЫС: мыс
Если вы хотите составить свои правила для сокращений типов, то обратите внимание на два момента:
При сокращении типов можно не бояться потерять уникальность в рамках строки с адресом. Все типы стоят рядом с наименованиями, и человек без труда может определить, что подразумевается под сокращением. Например, в адресе «респ Татарстан, д Набережные Моркваши, д 45» без объяснения понятно, что первая д — это деревня, а вторая д — дом. Тем не менее, сокращение должно быть понятным. Например, вместо адреса «Москва п Турчанинов», где «п» может быть как переулком, так и проспектом или площадью, лучше написать «Москва, пер Турчанинов». В некоторых случаях люди сокращают слова «Большая» и т.п. в названиях улицы, например «Б. Ордынка». Но автоматически делать это страшно, так как можно потерять уникальность наименования.Адрес до сокращения типов:
Россия, республика Татарстан, город Казань, улица Братьев Касимовых, дом 64.
Адрес после: Россия, респ Татарстан, г Казань, ул Братьев Касимовых, д 64.
Следующий шаг к идеальному адресу — удаление избыточной информации.Если адрес используется для доставки корреспонденции, то избыточную информацию лучше оставить для упрощения сортировки посылок и писем.Если же адрес нужен только для идентификации места человеком или предполагается курьерская доставка по городу, то удаление избыточной информации сделает адрес более естественным и читаемым.Предлагаем такие правила:
Удаляем страну, если это Россия. Редкие случаи вроде села Париж не повлияют на восприятие: «Челябинская обл, Нагайбакский р-н, село Париж». Удаляем тип у города. Название города уникально в рамках одного района, так что эта информация не критична. Было «г Воронеж», остался «Воронеж». Удаляем регион у городских округов (это крупнейшие города в регионах, про них я писал выше). Эти города известны и уникальны в России. Например, пишем не «Новосибирская область Новосибирск», а просто «Новосибирск». Удаляем район у центров районов (признак есть в ФИАС и КЛАДР). Они уникальны и достаточно известны в рамках региона. Например, пишем не «Московская обл, Можайский р-н, г Можайск», а «Московская обл, г Можайск» Удаляем город, если это понятно из контекста. Афиша концертов в Екатеринбурге? Хватит писать слово «Екатеринбург» в адресе каждой площадки. Пока я писал статью, появилась идея удалять слово «улица». Мне кажется, если этот тип не указан, он воспринимается как умолчательный. Давайте проведём эксперимент: «Москва, Тверская». О чем подумали, об улице? Однако, есть ещё Тверская площадь. Впрочем, это пока неподкреплённое предположение, и делать так следует на свой страх и риск. Было бы интересно услышать комментарии по этому поводу.После удаления очевидных сущностей адрес из примера примет более читаемый вид: Было:
Россия, респ Татарстан, г Казань, ул Братьев Касимовых, д 64.
Стало: Казань, Братьев Касимовых, д 64
или, если позволяет контекст: Братьев Касимовых, д 64
Мы не удаляем тип у дома, так как обычно в адресе содержится ещё и указание на квартиру или корпус, и тогда отсутствие некоторых типов нам кажется странным. Но это дело вкуса: Братьев Касимовых, 64, корп 1, кв 1
или Братьев Касимовых, д 64, корп 1, кв 1
Если в адресе есть только дом, то без слова «дом» адрес будет смотреться только лучше: Братьев Касимовых, 64
Наш адрес уже хороший и красивый, мы можем его отображать в интерфейсе.Есть одно ноу-хау, как можно его ещё больше упростить при помощи форматирования: разбиваем на две строки, в первой пишем город, район, субъект (именно в такой последовательности), а во второй — населенный пункт, улицу и всё остальное.Изначальный адрес из ФИАС:
Россия, Татарстан Республика, Казань Город, Братьев Касимовых Улица, дом 64.
Напишем так: Казань, Братьев Касимовых, 64
На этом всё. Надеюсь, информация вам пригодится и вы научите «говорить» ваши программы на естественном языке.Если есть вопросы по адресам, обращайтесь. Мы эту тему любим и всегда стараемся помочь.