NameRuBot

NameRuBot. Предназначен для добавления “name:ru” зарубежным городам.
Что может: сканирует .osm файл в поисках place=, выбирает ноды, полигоны и релейшены. Ищет город по его name в зарубежной википедии, пытается найти соответствие с русской википедией и при нахождении добавляет тег name:ru. Создаёт html файл отчета и осм-файл для загрузки на сервер. Загрузка вручную, после тщательной проверки.
Плюсы:

  • информация для рендереров.
  • можно конвертировать карты для навигаторов с русскими именами.
    Минусы:
    я пока не вижу.
    Прогнал через него небольшой кусочек Италии. Лог-файл, Правка. Если сообщество решит, что оно надо, буду периодически запускать.
    TODO:
  • добавлять тег “wikipedia:ru” [?]
  • streets [?]

С кодировочкой бяда…

Да, надо вручную выбрать UTF8. Пока не разобрался в чем дело.

На самой большом уровне - Канада, Мексика, Багамы, Бермуды, Мальдивы :slight_smile:

Согласно wiki рекомендуется использовать схему с одним главным линком (wikipedia=lang:page title) а не для каждого языка отдельно. В данном случае наверное лучше всего линк на используемую статью языка местности (и если тег wikipedia уже не проставлен).

“wikipedia:ru” думаю стоит, тем более раз весь алгоритм уже есть

Я за такой продукт :slight_smile: Всё абсолютно вручную делать - запаришься и наделаешь кучу ошибок

Так ведь отказались от тега wikipedia:ru. В википедии же собственный механизм - Интервики - http://ru.wikipedia.org/wiki/%D0%92%D0%B8%D0%BA%D0%B8%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F:%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%B2%D0%B8%D0%BA%D0%B8

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

Все имена перевелись по-французски, и по написанию похожи. Если поискать испанское слово Rojo (“Рохо”) в финской вики, может попасться “Ройо”.

Самая жопа будет в А Корунье, испанском регионе, где говорят на португальском. Просто для примера, как фонетика отличается: chorar - “шорар” по-португальски, по-испански прочитают как “чорар”. В одной и той же провинции в одной долине говорят на испанском, в другой через 500 метров - на португальском. На юге Франции (между Испанией и Италией) есть ещё Гайего, диалект, со своей фонетикой. Понять, на каком языке название, не зная местной жизни, проблема. Я бы автомату это просто так не скармливал.

Лучше взять те названия, что точно известны (например, где в википедии у города стоят координаты и есть русская страница) и выставить их.

Кавычки забыл после content="text/html; Вот и браузер не видит кодировку :slight_smile:

В википедии “it”.

Это не перевод, а именно сопоставление. Ну и естественно испанское слово буду в испанской вике искать :wink:

Так и делаю. Ну вроде по обработаным 13 объектам неоднозначностей нет?

Поставил. Мозилла все равно тупит.

вы что, какая лишняя кавычка? Должно быть
у меня от несогласованных кавычек почти физический дискомфорт.
желательно убрать bom из начала документа (это не по стандарту), а во-вторых, сервер в заголовках HTTP выдаёт Content-Type=text/html; charset=windows-1251, нужно поправить на utf-8.

А нормально, что этот тег не закрыт?
meta http-equiv=“Content-Type” content=“text/html; charset=utf-8”

А какие еще делаются проверки?
Я, когда делал такую работу вручную (список id добыл из planet.osm, а в Википедию ходил ручками), сравнивал также население и координаты. Увы, население может отличаться довольно существенно (до 2 раз), а вот координаты, думаю, до долей градуса должны совпадать. Сомневаюсь, что в радиусе 0.1-0.2 градуса окажутся одноименные города либо города с близким произношением названия.
Думаю, поиск по имени + население (отношение в пределах 0.5-2.0) + координаты в пределах 0.2 градуса можно считать достаточно надежными критериями.
Ну и сам поиск IMHO следует проводить не по всем н/п, а только по тем, у которых уже есть name:en (name:fr/name:de - по выбору) или int_name. Таковых в мире около 62 тыс, так что объем работы вполне подъемен для бота, а разбор лога ошибок глазами - тоже вполне реален.

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

а как быть, если я хочу разместить ссылки и на английскую и на русскую страничку объекта в википедии?

сейчас я юзаю два тега
wikipedia:en=*
wikipedia:ru=*

по вашему способу придется городить что-то типа wikipedia=ru:Екатеринбург;en:Yekaterinburg;fr:Ekaterinburg;it:xxx;ch:xxx

это не кошерно

dedNikifor, ссылку надо давать только на одну википедию

Автоматически только на совпадение osm-name и wiki-name. А дальше в ручную.

А зачем? Я планирую запускать бота на определенную территорию, ограниченную одним государством. Т.е. теоритически возможно конечно, что в одном и том же государстве находятся два города с одинаковыми названиями и разными названиями на русском языке, но я про такие не слышал. Т.е. я хочу сказать, что н.п. Любань к примеру в Ленинградской области и где-нибудь в Челябинской должны одинаково переводиться на другие языки, поэтому мне не обязательно проверять координаты и численность населения, чтобы определить, какая именно это Любань, т.к. мне для перевода на другой язык это роли не играет.

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

Постараюсь сделать. Сейчас пока буду делать список исключений, чтоб автоматически убирать фразы типа " (значения)" или " город)".

Конечно некошерно. Именно поэтому рекомендуется иное: задавать только wikipedia=ru:Екатеринбург, а остальное вытягивать при помощи API самой википедии. Тем самым не будет необходимости в OSM следить за актуальностью синхронизации между названиями на разных языках (ссылки в википедии тоже иногда меняются).

Но это играет существенную роль, если таки захотите проставлять ссылку на википедию - т.к. ссылки, очевидно, будут отличаться.
Кроме того, перевод даже одноимённых городов в разных местностях может таки отличаться (в силу исторических, диалектовых и прочих причин).

Sergey Astakhov
на самом деле ссылки на города должны выглядеть так:

ru:Киров (Калужская область)
ru:Киров (Кировская область)

И в самой Википедии статьи о разных городах должны быть разными. Если вдруг города переводятся по-разному - этот конфликт тоже разрешается средствами Википедии.

Зависит от конкретного города. “Москва (Московская область)” или “Москва (Россия)” ведь не пишут, несмотря на наличии населённых пунктов Москва в других местах. Просто убирают неодназначности в ссылках тем или иным способом.

Sergey Astakhov
для таких случаев в статье “Москва” ставится disambig на “Москва (значения)”, откуда идут ссылки на “Москва (река)” и тд.