Теґування найменувань вулиць

Кстати. Уже существующие тэги “name:en” скрипт же править не будет?
Остальное всегда подправим, мне кажется.

Я збираюся зробити наступне: 3 варіанти роботи програми – запуск-перевірку; з переписуванням теґів name:en; та без переписування.

Таким чином, для міста буде робитися таке: перший запуск – перевірка, дивлюся, наскільки погана ситуація з англійськими, якщо дуже погано, то переписую. А всі наступні запуски, тільки без переписування. Як результат, ручні правки після того, не будуть виправлятися, а періодичні запуски-перевірки допоможуть виявити, де скрипт має інакшу думку стосовно англійської назви, і мені виявляти виключення, які можна додати до аналізатора.

Вже планую зайнятися наступного тижня, бо трохи затягнулося.

Eugene

Первый пошёл: Дивіться правки _sevbot

Запустив скрипт один раз, пройшовся по всій Україні, модифіковано 7998 вулиць. Були конфлікти, десь біля 30, брав з конфліктів теґи, залишаючи вузли як є, але потенційно десь могло проскочити.

Вже після запуску подумав про конструкції типу 1-й, 2-й і т.п. Англійська має свої правила, виправлю при наступних прогонах.

У планах зробити наступне:

  1. Там, где в name тільки одне слово, додати “вулиця” або “улица”, в залежності від мови

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

  3. Пройтися по існуючим теґам name:en, і виправити транслітерацію. Там повний безлад. Причому додати туди трохи розуму, тобто перевіряти власне правильність транслітерації, а не вже обговорене Tolstogo → Tolstoy

Eugene

Так, подивився. Добре там де є назви українською — там є й транслітерація англійською, а там де в name=* стоїть російськомовна назва теґ name:en=* відсутній, так і повинно бути?
Ось і приклад http://www.openstreetmap.org/browse/changeset/6559010
перший рядок http://www.openstreetmap.org/browse/way/27232711

що будеш з цим робити?

Ще є, я сам ставив теги до того як була прийнята Угода про назви вулиць, скорочення «ул.» в name:ru=*. Чи можливо таке виправити автоматично, та впорядкувати слова в назвах згідно з Угодою?

Так, так і повинно бути. Я транслітерував теґ тільки тоді, коли в name була детектована українська мова.

Пункт другий у попередньому пості – спробую подивитися у бік автоматичного перекладу. А так – чекати, поки перекладуть, чи сам перекладу, і потім бот сам проставить англійську.

Мммм. Начебто теґи name:ru теж виправлялися у цьому проході. Наведи приклад.

Eugene

привіт. чи будуть переправлятись en-назви у випадку, коли name був змінений після їх створення? чи тепер вже потрібно вручну це буде робити?

Я можу прикрутити аналізатор, це неважко. Робити?

Eugene

Я нещодавно перекладав нові рядки для JOSM. Повинен вже бути втулок TrustOSM, який на основі GPG дозволяє накладати цифрові підписи на дані. Тож можна доопрацювати бота таким чином, щоб він перевіряв наявність таких підписів.

Ось наприклад http://www.openstreetmap.org/browse/way/33849369

Done.

Eugene

Написал шапку список того, что делает бот. Продублировал в шапке. Позже перенесу в Вики.

То, что делается сейчас:

  • Все сокращения в топонимах “разворачиваются”

  • Топонимы переносятся в конец названия

  • Все топонимы записываются с маленькой буквы

  • Исправляются типичные ошибки. тупік → тупик, вулица → вулиця, и ещё пяток других

  • Если в name записано русское название, и присутсвует “name:uk”, name записывается в name:ru (если опять же, его не было), и перетирается значением из “name:uk”

  • Если name:en отсутствует, и в “name” у нас обнаружен украинский язык, и назвнаие корректно (присутсвует топоним в конце), оно генерится транслитерацией плюс перевод топонимов

  • Если пишут “1-й провулок Васюкова”, оно превращается в “1-й Васюкова провулок”

Что планируется делать:

  • Обработка 1-й, 2-й и т.п.

  • Исправление английских топонимов – сокращения и title case. Там тоже часто пишут “str.”

  • Проверка некорректной транслитерации (тут ещё репу почесать надо, чтобы ни в коем случае не перетереть исправленное автором название, буду много тестировать)

  • Попытаться обработать случаи, когда топоним не указан вообще. “Герцена”, “Карла Лібкнета” и т.п. Там нужно добавлять “улица”

  • “Автоперевод” названий с русского языка. Если есть уже где-то улица с обоими названиями, взять оттуда. Но тут у меня большие сомнения

  • Обновлять английскую транслитерацию, когда улица переименована

  • Неверные теги. Бывают пишут “name:ua” и “name:rus”

  • Исправлять ошибки в “name:uk”

  • Автодобавление “name:uk”, было обсуждено раньше, они нужны. Брать из “name”, если там действительно украинский язык

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

Eugene

Впевнений, що цей варіант правильний? Якщо так, то додай ще плз правило
“Васюкова 1-й провулок” → “1-й Васюкова провулок”

Про name:uk. Цей теґ, на мою думку, краще використовувати для назв об’єктів за межами України, додаючи до них український відповідник.

PS дайте посилання на обговорення, що до застосування name:uk

Дивись у мене у щоденнику останній коментар, там є посилання на обговорення англомовної спільноти.

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

Eugene

я цю неприємну особливість osm примітив ще давно
вказування локальних імен дозволяє рендереру вибрати найбільш доречний варіант для відображення
але відсутність можливості вказати мову локального імені зводить нанівець всі переваги багатомовної підтримки
зараз маємо ситуацію коли набір тегов містить коди будь якої мови, але не локальної
якщо записати локальну назву у тому ж форматі що і іноземну, то в результаті отримаємо дублювання інформаціі та всі проблеми, з цим пов’язані
як можна вирішити цю проблему без глобальних змін я не уявляю

Якщо це робитиме твій бот — то хай робить, я не заперечую. Руками таке робити — марна трата часу, який краще використати на замаплення території :slight_smile:

Во! Я з цього і починав. Тобто, “Не марнуйте час на name:en”. У ході дискусії виявилося, що десь можуть бути виключення, але це мізерна частина, то ж бот буде виставляти name:uk та name:en.

Eugene

Сьогодні бо ще й зазирнув у всі name:uk і повиправляв помилки там. Було 101 помилка по країні. В основному це були виправлення скорочень, правильні апострофи, і у трьох випадках перестановка топоніму на кінець назви. Я також порівняв name та name:uk. У 22-ох випадках вони відрізнялися. Виправив руками, так було простіше.

До цього додалися 167 транслітерацій, і 14 виправлень. Непогано, бо це менше 10% помилкових нових назв.

Тож, на цей час ми маємо:
1104 помилкових російських назв
2966 помилкових українських назв
1760 випадків російської мови у теґу name

Помилкові, це ті назви, де відсутній топонім. Значну їх частину буде виправлено в одному з майбутніх запусків бота.

Хочу ще раз підкреслити, що до цих пір я перевіряю всі виправлення перед завантаженням на сервер. Поки що не довелось виправляти те, що бот нагенерив, але вважаю повністю автоматичну роботу ще передчасною.

Eugene

Сьогодні додав слова вулиця та улица для тих веїв, де в назві було одне слово, і це не була назва траси.

Перевірив всі результати перед заватнаженням, було пару речей на кшталт “Гагарина вулиця”, але залишив як є, простіше виправити вручну, ніж ліпити велику купу перевірок. Таких було може 3 на майже 2.5 тисячі найменувань.

Також було додано 75 англыйских назв, та зроблено 76 виправлень назв, з них 36 заміна “Ленина” на “Леніна” в українських назвах. Тобто, справжніх виправлень усього 29.

Eugene

http://www.openstreetmap.org/browse/way/54375450/history
Трнаслітерація Польова вулиця → Polyova Street не відповідає офіційній.
Повинно бути Polova street. Толстой → Tolstoi, а не Tolstoy

Так, треба буде виправляти. Я ще не реалізував виправлення невірної транслітерації.

Eugene