NameRuBot

Тут что-то не так с алгоритмом:
http://www.openstreetmap.org/browse/way/74142252
http://www.openstreetmap.org/browse/way/74142260

Вот это http://www.openstreetmap.org/browse/way/75390339 тоже довольно странно, с учетом http://ru.wikipedia.org/wiki/%D0%A0%D1%83%D0%BC%D1%8B%D0%BD%D1%81%D0%BA%D0%BE-%D1%80%D1%83%D1%81%D1%81%D0%BA%D0%B0%D1%8F_%D0%BF%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D1%80%D0%B0%D0%BD%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%86%D0%B8%D1%8F, а статья из которой подтянулось имя про Испанию.

Необходимость ставить name:ru на полигон НП при наличии его на точке, не очень понятна. Пример: http://www.openstreetmap.org/browse/way/30711482.

И вот это не очень понятно как получилось: http://www.openstreetmap.org/browse/relation/1020716 - википедия говорит что это “Округ Чероки”

Исправления, внесенные в википедию, после автоматической расстановки name:ru каким образом планируете отслеживать?

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

Реверс-геокодинг по базе osm2pgsql. Да и рендеринг в общем случае - не всегда name удобно брать из точек, особенно, когда оно есть на полигоне.

Ну если этой дорогой пойти, то недалек тот день, когда на одном НП в РФ его название будут записаны в четырех тегах, по паре name и name:ru на точке и на полигоне. Причем рано или поздно имена будут разные. Решительно не хотеть такого. По сути проблемы, то конечно нужно сопоставлять точки и полигоны НП это довольно просто, по рф+украине в базе osm2pgsql делается минут за 5 на слабой машине, по миру видимо подольше, но результаты довольно просто кэшируются между обновлениями дифами osm2pgsql.

А по финке как дела? Хотелось бы на родном языке эти крякозяблы слить, чтобы понимать как произносить коль чего.

С алгоритмом все нормально, просто нужно работать с каждой страной (и соответствующим разделом педии) отдельно. И, конечно вручную править результаты работы, т.к. очень много неверных сопоставлений. Ну это уже к самой педии вопрос…

Да я специально убрал фразу округ, возможно напрасно.

Надеялся оставить юзерам на откуп :roll_eyes:

Согласен.

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

Можно транслит автоматикой и в скобках название по фински, да это под рендеры получится, зато удобно углядывать и руками править если ошибка. если ошибки нет убирать скобки, кто тут по фински шарит? Я то просто туда намыливаюсь и их “крякозяблое произношение” мне моск ломает.

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

Финский это ещё ничего. Вот в Швецию ездил так это привет. До сих пор не понимаю почему “o” иногда произносится как “о” а иногда как “у”.

Кстати, идея автоматической транслитерации тоже иногда выдаёт пёрлы. Судя по всему Гугл использует эту технологию. Вот забавный пример: http://maps.google.ru/maps?f=q&source=s_q&hl=ru&geocode=&q=Victor+Hugo,+Paris,+France&aq=1&sll=48.852969,2.356224&sspn=0.024454,0.087891&vpsrc=6&ie=UTF8&hq=&hnear=Victor+Hugo&ll=48.870897,2.28874&spn=0.003225,0.010986&t=m&z=17

По-французски Avenue Victor Hugo, по-русски - Проспект Виктор Юго :slight_smile: На самом деле в русском это Виктор Гюго :wink:

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

Я про то и говорю :slight_smile: Если переводить используя знание правил французского языка то получим Юго. Кому интересно - гляньте в транскрипцию фамилии в википедии. Но в русском это Гюго.

Другой пример - более правильный - http://maps.google.ru/maps?q=Boulevard+Haussmann,+Paris,+France&hl=ru&ie=UTF8&ll=48.874157,2.32289&spn=0.003225,0.006899&sll=48.874369,2.32275&sspn=0.025799,0.055189&vpsrc=6&hnear=Boulevard+Haussmann,+Paris,+%D0%A4%D1%80%D0%B0%D0%BD%D1%86%D0%B8%D1%8F&t=m&z=17

В русской традиции переустроитель Парижа середины 19 в. - барон Осман - http://ru.wikipedia.org/wiki/%D0%9E%D1%81%D0%BC%D0%B0%D0%BD,%D0%96%D0%BE%D1%80%D0%B6%D0%AD%D0%B6%D0%B5%D0%BD

Соответственно улица в честь него должна читаться как бульвар Османа (или Бульвар Осман как в Гугле). В оригинале - Boulevard Haussmann так как его фамилия пишется как Haussmann. То есть всё правильно :slight_smile:

Отсюда мораль - транслит транслитом а головой думать тоже надо …

Извините, что вмешиваюсь, но в

<meta http-equiv="Content-Type" content="text/html"; charset=utf-8">

кавычка после text/html лишняя, ибо content - это key, а его value это строка “text/html; charset=utf-8” целиком.

Но это для морально устаревших браузеров, типа IE 3.0 или офлайнового просмотра файла с диска. Современные браузеры читают кодировку в ответе сервера и используют именно её, а не то что стоит в “meta”.

Для Apache это настраивается в .htaccess директивой

AddDefaultCharset UTF-8

либо в httpd.conf в соответствующем

Апач прошлый век :slight_smile:

Кстати да, Сергей, наверное лучше при конвертации, вот кто бы такой конвертер сделал? Причем подо все форматы? Мне лично конечно же для гурмэна надо, ну и в OsmAnd бы. ааа… можно кстати не ломать конвертеры а поправить osm файл какой-то утилиткой транслитатором… хм… вот кто бы такую записал, а то я низкоуровневое ни бу-бу, я php :slight_smile:

Товарищи, проставьте плз тэг в Тайланде! Думаю,не я одним благодарным туристом буду! :wink:
У них ппц там с алфавитом…

Ага, а ещё Китай, Корею, Японию, Грецию и прочие страны с иероглифами.

Насчет неоднозначностей, когда одно название населенного пункта или еще чего может ссылаться на статьи о разных сущностях в Википедии (и когда два города с одним названием в разных странах):

Есть такой проект как Freebase, при добавлении данных туда есть такое понятие как reconclie. Допустим, ты нашел данные о загрязненности рек в виде такой таблицы и хочешь добавить их во freebase:
Название реки, Загрязненность
Москва, 100500
Нил, 9000
Ганг, 100000000000

Так как в freebase всё типизировано и везде сущности, надо как-то сопоставить первую колонку – название – конкретной реке, а потом у этой реки проставить атрибут “загрязненность”. Проблема в том что “Москва” – это и город, и река, и еще фотоаппарат такой есть. Вот сопоставление строки с названием, опционально с какими-то аттрибутами конкретному объекту там называется reconcile, и делается через ихнее API программой Google Refine и загружалкой спредшитов http://wiki.freebase.com/wiki/Freebase_Loader.
Так как объекты там имеют тип, в данном случае просто при reconcile указываем тип “река” /geography/river, и уже получаем более точные результаты при сопоставлении.

Сопоставление обычно делается вручную, система возвращает несколько кандидатов с разным значением “confidence”, и нужно посмотреть и выбрать то что действительно подходит; если кандидатов мало и первый с высоким confidence, то можно сразу автоматически.

Так вот, там основная часть объектов привязана к статьям википедии. И тип указан. И при reconcile можно указывать не только тип, но и страну (где находится город). Тогда будут выдаваться более точные результаты. Можно это как-то использовать.

Так как это всё есть в Google Refine, можно предложить такой порядок работы:

  • Какой-то утилитой выгружаем список населенных пунктов внутри области, в csv/tsv. Колонки – название населенного пункта и id(ы) точек/линий/релейшенов в osm (и может другие атрибуты).
  • Вручную грузим этот csv в Google Refine
  • Запускаем reconcile, указывая тип “город” (/location/citytown), страну, где он находится, для лучшего сопоставления, можно еще что-нибудь указать
  • Смотрим, как совпало, проверяем вручную
  • Так как у нас теперь объекты сопоставлены, то можно сделать в Refine еще одну колонку – название статьи в википедии (в английской, это используется практически как основной ключ в Freebase)
  • Запускаем утилиту, которая ищет в википедии по английским статьям русскую статью (это можно прямо из refine, а не отдельной утилитой)
  • Смотрим еще раз, что нашло, обрезаем “(город)” и т.д.
  • Еще одной утилитой генерим xml изменений для загрузки в osm
  • Смотрим его еще раз и заливаем

Кстати из freebase можно еще всяких данных извлечь для занесения в osm.

Тут есть 3 видео где можно увидеть как работает этот Refine http://code.google.com/p/google-refine/

Update: скрипт для конвертации .osm файлов в таблицы (.tsv) с колонками: id, тип объекта (node, way, relation) и все атрибуты https://gist.github.com/1274978

Выложил файл проекта для refine: http://dl.dropbox.com/u/2671035/thailand-cities.google-refine.tar.gz , это города в Тайланде, из выгрузки с cloudmade, отфильтровано осмозисом по place=, судя по всему содержит города и из соседних стран (в выгрузке к области обрезки наверно добавлена буферная зона, я не стал снова обрезать уже по нормальной границе), затем скриптом выше сгенерена таблица. Особо не экспериментировал пока что.

Что то тема заглохла. Забросил разработку?
PS: Ищу транслитератор с армянского и грузинского.

Я бы сказал что нет … вот один последних глобальных changset по Финляндии - http://www.openstreetmap.org/browse/changeset/12762531
Я так понял что финка более-менее готова :slight_smile:

Яй-яй
name = Põltsamaa !~ name:ru = Пылцамаа.
Должно быть name:ru = Пылтсамаа
Если так уж нужны названия на русском, почему бы не делать их на стороне клиента, а занесение в базу все таки оставить людям?

name = Otepää !~ name:ru = Отепяа
Изменить на name:ru = Отепя

name = Helme !~ name:ru = Хелме
Изменить на name:ru = Хельме

Просмотрел только те, где по моему мнению могут возникнуть проблемы транлитерации. Все 64 особого желания проверять нет. ИМХО, данный бот - зло.

Я бы так не сказал: http://navitel.osm.rambler.ru/names/finland-place.osm.htm

Я если вношу названия, то либо проверенные из свободных источников либо ставлю на вей, окружающий точку с name:ru имя такое же, как и на точке. В данном случае название было взято с этой точки: http://www.openstreetmap.org/browse/node/281044699
По поводу занесения в базу людьми написал внизу сообщения.

Вы сейчас приводите примеры тех названий, что я добавил?

Кстати, для всех интересующихся темой поднял что-то типо валидатора по некоторым странам по name:ru. Пока без веб-морды, использовать as-is: http://navitel.osm.rambler.ru/names/