Пропозиція - природній порядок слів у назвах вулиць

Я додав перевірку в моєму валідаторі на апперкейз перших літер слів назви. Але є проблема. Що робити з name:en? Вносити статусну частину з малої літери? Що суперечить стандартам в англомовних країнах.

Загалом по Україні 3605 вулиць не проходять перевірку. Пропоную спершу, зменшити це число хоча б на порядок.

Для англомовних не треба.

На всякий случай напомню что есть (и уже более года используется в России) инструмент, который позволяет привести названия улиц в соответствие принятому в стране соглашению, а также найти опечатки и прочие ошибки. Подчеркну, что программа не зависит от языка, не завязана на принятые в России соглашения и не требует написания специфичного для языка и возможно подверженного ошибкам кода. Основа - словарь названий улиц (для России выглядит так: https://raw.github.com/AMDmi3/streetmangler/master/data/ru/main.txt)) и небольшая таблица статусных частей (https://github.com/AMDmi3/streetmangler/blob/master/lib/locales/ru.cc).

В итоге, например, со словарём из двух десятков часто встречающихся в Украине названий, программа предложит следующие замены на “каноническую” форму:

 Коцюбинського вулиця|Коцюбинського вулиця
ГОРЬКОГО вул.|Горького вулиця
ЛЕНІНА вул.|Леніна вулиця
МІЧУРІНА вул.|Мічуріна вулиця
САДОВА вул.|Садова вулиця
ШЕВЧЕНКА вул.|Шевченка вулиця
Шевченка вулиця |Шевченка вулиця
вулиця Київська|Київська вулиця
вулиця Леніна|Леніна вулиця

и такие предположения об опечатках:

Лермонотова вулиця|Лермонтова вулиця
Лєрмонтова вулиця|Лермонтова вулиця
Мічурина вулиця|Мічуріна вулиця
Мічуріня вулиця|Мічуріна вулиця
Партизанська вілиця|Партизанська вулиця
Петрівського вулиця|Петровського вулиця
Шевченко вулиця|Шевченка вулиця
Школьна вулиця|Шкільна вулиця
Шорса вулиця|Щорса вулиця

“Лермонотова” тут - явно опечатка, насчёт остального - не уверен (носителям языка должно быть виднее), но если предположения неверны они просто добавляются в словарь.

Также было найдено 48 объектов с отсутствующей статусной частью. Для визуализации всего этого можно поднять валидатор аналогичный http://streetmangler.amdmi3.ru.

Если интересно, могу подробнее рассказать как этим пользоваться, а вообще документация есть тут: https://github.com/AMDmi3/streetmangler/blob/master/README и тут: http://wiki.openstreetmap.org/wiki/Streetmangler

но судя по этому:

поддержку релейшенов все равно придется добавлять…

Моя черга: я теж підтримую цю пропозицію, але б хотілося, щоби вельмишановні dudka або olehz запустили в себе валідатор AMDmi3.

Classification statistics:
           Total       Exact match     Canonical form     Spelling fixed    Stripped status           No match          Non-names
 Total:   141181        0 (  0.00%)        0 (  0.00%)        0 (  0.00%)        0 (  0.00%)   109608 ( 77.64%)    31573 ( 22.36%)
Unique:    19655        0 (  0.00%)        0 (  0.00%)        0 (  0.00%)        0 (  0.00%)    14702 ( 74.80%)     4953 ( 25.20%)
Generalized database statistics:
           Total             Match            Fixable           No match
 Total:   109608        0 (  0.00%)        0 (  0.00%)   109608 (100.00%)
Unique:    14702        0 (  0.00%)        0 (  0.00%)    14702 (100.00%)

Спершу треба словник назв заповнити. Тобто обробити вручну 15К назв. Особисто я пас. :expressionless:

Да, но это пара строчек. Сделаю на днях.

Понятно что работа немаленькая. Тем не менее:

  • небольшая часть названий покрывает значительную часть улиц, так что чтобы исправить большую часть ошибок все улицы забивать не обязательно. Валидатору также достаточно небольшого процента названий чтобы стало видно скопления ошибок
  • в эти 15k входят и альтернативные написания каждого названия, и не-названия (в России, например, это name вида “Деревня А - Деревня Б” и “дорога на|в|к куда-то”, а также много мусора типа названий АЗС), которые можно смело игнорировать, а также (если вы используете выгрузку с gislab, например) названия из соседних стран вдоль границы (у себя я дополнительно вырезаю из выгрузки “внутренность” страны) и названия на русском (я не в курсе, к чему у вас пришли по поводу Крыма, но если к тому чтобы писать в name только названия на украинском, то русские можно просто перенести по всей стране в name:ru), так что на самом деле словарь будет в полтора-два (а можно и больше) раза меньше
  • для подмножества названий есть быстрые обходные пути добавления. Скажем, официальные реестры названий улиц по большим городам, как правило, можно добавлять после беглого просмотра (в России такие есть для Москвы и СПб и они были использованы. Ещё есть для Твери, но там мне не понравилось качество). Для названий типа “1-я улица Ленина” понятно что можно сразу добавлять 2-ю и все остальные что найдутся в OSM. При наличии “улицы Ленина” скорее всего можно добавлять и переулок и проезд, проспект, бульвар, если таковые, опять таки, есть в базе и т.д.
  • на самом деле, задача вполне подъёмная. В словаре для России сейчас 36 тысяч названий, и это я добавил один за полтора года, тратя на это менее часа в неделю (обычно просто просмотр новых названий в http://streetmangler.amdmi3.ru/api/0.1/notfound, проверка и добавление в словарь). Если у вас найдутся пользователи, готовых обработать свой город (для крупных это не больше нескольких сотен уникальных названий, и в то же время значительная часть словаря), будет ещё проще

Думаю, черновик такого словаря нетрудно извлечь непосредственно из OSM:
подвести статистику по использованию на территории Украины всех имен из нужных тегов (они были перечислены: name для highway, addr:street и т.п.), те имена, что будут повторяться по нескольку десятков-сотен раз - явные кандидаты на включение в словарь.

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

Да, это несложно - софт уже умеет генерировать список с количеством упоминаний каждого названия. Можно добавлять часто упоминаемые названия, и смотреть не появляются ли в списке возможных опечаток новые записи - это либо ложные срабатывания (Ленина/Лунина, например (https://ru.wikipedia.org/wiki/Лунин,_Борис_Николаевич)), которые также надо добавить в словарь, либо действительно опечатки, и тогда надо выбрать правильный вариант, а остальные добавить в список на замену.

AMDmi3,
проверьте в своем списке улиц следующие строки, возможно они ошибочны

“Новоастраханская” – улица?
“Тупой преулок” – переулок?
“переуок Федутенко” – переулок?
“прощадь Якуба Коласа” – площадь?

Підготував список зміни порядку слів для невулиць, тобто для проспектів, бульварів, провулків тощо:
https://www.dropbox.com/sh/m4ixhy0pjdev9e2/JHUC1Jnn5F

Для вулиць такого списку не робив, оскільки, як писав Larry0ua в першому повідомленні:

Прошу всіх зацікавлених осіб проглянути списки, пошукати помилки.

Вставлю свої п’ять копійок.

Для мене як активного користувача навігатора проблема пошуку не надумана. В моїй моделі Garmin GPSMap 62s інтерфейс кнопковий, коли необхідно ввести якийсь текст, у т.ч. при пошуку об’єктів, на екрані з’являється віртуальна клавіатура і по ній доводиться “гуляти” в чотирьох напрямах, використовуючи навігаційну клавішу, а це довго. Якщо робити вигрузки “сирих” даних з OSM в формати навігаторів, то спереду доведеться ще наярювати слово "вулиця " - разом з пробілом це 7 зайвих знаків. Мало хто вірить, доки не спробує сам - це правда дуже довго і дуже незручно. І це не мої приватні незручності, бо даний туристичний навігатор і його “родичі” досить поширені.

Отже, тримаємо в голові те, що у разі набрання пропозицією більшості голосів необхідно буде вносити зміни в конвертори. Якою б легкою ця робота не видавалася, вона не зробиться сама собою, її комусь доведеться взяти на себе (завжди ваш Капітан Очевидність :slight_smile: ) Бажано заздалегідь, щоб ще протестити.
Крім того, є ще конвертери, які “не у нас”, спонукати їх авторів до змін не знаю й як… Наприклад, часто викачую легкі оптимізовані під велонавігацію вигрузки з http://garmin.openstreetmap.nl/ Карта на виході - англомовна, назви об’єктів латиницею. Адреси POI беруться з відношень вулиць. Оскільки у нас у відношеннях вулиць є лише addr:street, без іншомовних варіантів, даний конвертор просто транслітерує цю назву. При такому підході за нинішньої схеми пошук об’єктів за адресою ще більш-менш передбачуваний. При впровадженні природнього порядку слів імовірно, доведеться піти на ще одну масову правку - повписувати addr:street:en у відношення, бо інакше наші англомовні друзі отримують зовсім неюзабельну вигрузку.

Плюс комусь доведеться взяти на себе рихтування JOSM для правильного сортування вулиць за назвою у списку відношень.

Стосовно truth on the ground візьму сміливість стверджувати, що при нашому рідному слов’янському нехлюйстві це правило, яке частіше підтверджується винятками. Варіантів написання однієї й тієї ж вулиці на вказівниках при бажанні можна знайти стільки, що не вистачить пальців двох рук. Зі скороченнями, з перестановками слів, з помилками і без них, офіційні і не дуже…

В активі залишається лише природність порядку слів.
Мета шляхетна, але IMHO, це питання лежить вже не в площині утилітарності OSM, а естетики - ну от просто щоб красиво було :slight_smile:
Тобто, здійснивши (1) масову правку даних OSM, (2) зміни в конверторах, (3) вдосконалення JOSM, на виході ми отримаємо все те ж саме, але красиво.

Особисто мені нинішня схема все рівно імпонує більше, тому що вона проста, очевидна і однозначна.
Так от по-німецьки: квадратіш, практіш, гут.
Схему легко пояснити новобранцю, і новачок не повинен бути мовознавцем-відмінником щоб коректно мапити. На жаль, інтернет зараз наочно демонструє неймовірно низький загальний рівень навіть базової грамотності. А ми цих обділених вчительською увагою ще будем грузити роз’ясненнями інституту Української мови…
Воно може б нічого, якби не оті

такі виключення і неоднозначності - це плюс потенційні холівари і мінус потенційні маппери.

Да, а піднята тема перевірки за словником у нас буде приводом для нових веселощів.
Не говорю, звичайно, що цього робити не треба - треба, але підготуйтеся до розв’язання неординарних мовних задачок.
Як вам офіційні назви вулиць суржиком? Вулиці Цвіточна (може правильно було б якась Квітчаста?), Кузнечна (Ковальська?), Лазурна (Лазурова), Уютна (Затишна) та багато інших… Суржик, увічнений в табличках і офіційних документах - нічні жахи мовознавців!

Ну і раз тут іде мова про природність, наостанок легкий оффтопік - паралельне питання стосовно name:en.
Давно намагаюся зрозуміти: чому ми транслітеруємо вимову у т.ч. числівників в назвах вулиць, як тут:
name=9-го Травня вулицяname:en=9-ho Travnia Street
name=8-го Березня провулокname:en=8-ho Bereznia Lane
Наскільки пам’ятаю в name:en застосовуємо транслітерацію саме для того, щоб іноземець міг вимовити назву співзвучно з мовою оригіналу і щоб відповідно його міг зрозуміти місцевий житель. Але як той іноземець має вимовити оті “9-ho”, “8-ho” і т.п.? Слабо уявляю. Може краще залишати просто цифри “9”, “8”? Чи вже повністю транслітерувати слово-числівник: “Deviatoho”, “Vosmoho”?

Правильні спостереження в цілому. А пам"ятати, як вулиця названа в OSM і вводити в навігатор спочатку ім"я діяча - не незручно? В будь-якому випадку варто щось змінювати, і тоді вже можна одразу намагатись зробити більше.

Не знаю, що зараз відбувається на паперових картах, але я, чесно кажучи, заздрю американським 15 Avenue та 9 Lane, і німецьким впорядкованим даним, коли не треба намагатись збити до купи назви “Сагайдачного”, “Петра Сагайдачного вулиця”, “вулиця Гетьмана Сагайдачного” і “вулиця Волгоградська” (стара назва, яку ще досі часом використовують місцеві) і перейматись питаннями такого складного пошуку в кожній країні за своїми правилами.

Мене також дивує чому слова “Авіаконструктора”, “Архітектора”, “Командарма”, “Маршала” і десяток подібних нікому не заважають, чому імена перед прізвищем не заважають, а “вулиця” заважатиме.

Хоча таке робить не тільки _sevbot, а і я багато так змінював(щоб були всюди однаково), погоджуюся що так погано і краще “9 Travnia” чи “9-th Travnia”.
Повністю транслітерувати слово-числівник мабуть не дуже добре, принаймні для вулиці 295-ї Херсонської Стрілецької Дивізії
Числівники зустрічаються не тільки в назвах вулиць названих на честь якоїсь дати, але і для нумерації провулків. Там, думаю, також краще не “1-i Shevchenka Lane”, а “1-st Shevchenka Lane”.

по багатьом пунктам мушу погодитись з Lindroid.

до речі, як пропонується транслітерувати “майдан Незалежності” або “1-й провулок Герцена” в name:en?

Бо ті слова є назвою вулиці. А слово “вулиця” - не частина власної назви, а титульна частина. А заважає вона тому, що при набиранні назви треба вводити слово “вулиця” повністю. А потім ще й набирати перші літери самої назви. Тобто, щоразу тиснути кнопки В, У, Л, И, Ц, Я і лише потім починати ввод назви. А слова “Авіаконструктора”, “Архітектора”, тощо не заважають. Бо у місті зазвичай не так вже й багато вулиць, названих на честь Архітекторів чи Авіаконструкторів.

все ж перепитаю, бо моє зауваження чомусь ігнорують, воно через це не перестає бути актуальним - що робити зараз з іменами діячів? Там повторів доволі багато навіть в межах міста. Я бачив і видалення імен з “довгих” назв, і скорочення до однієї букви одразу в базі. Це нормально?

думаю, це наступне питання, яке потрібно було б розглянути. Поки що давайте не змішувати.

Так само як і зараз: “Nezalezhnosti Square”, “1-st Hertsena Lane”. Не бачу труднощів підправити алгоритм _sevbot’a.

Не можу стверджувати на 100%, але маю підозру, що ні ви ні будь-хто інший не використовує карти оптимізовані під велонавігацію для пошуку POI за адресою.
Але все ж таки…
Подивившись на транслітеровану адресацію POI на вигрузках з garmin.openstreetmap.nl звернув увагу на те що транслітерація відбувається за російською абеткою, відповідно буква “і” не транслітерується взагалі. Можна звернутися до Lambertus’а з проханням виправити цю помилку. Також можна попросити транслітерувати “вулиця” не в “vulic?”(також якийсь незрозумілий глюк з транслітерацією букви “я”), а в “Street”(чи “Str.”) і зміщувати слово в кінець. Якщо треба - я можу написати йому.

Для власних конверторів можна піти далі і аналогічно скорочувати/видаляти/зміщувати-в-кінець-назви слова типу “Архітектора”,“Адмірала”, а також імена.

Щодо конверторів на базі osm2mp, то для перенесення/скорочення статусної частини в кінець назви є просте рішення: