NameRuBot

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

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

Надеялся оставить юзерам на откуп :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/

ОК, извиняюсь за нападки, думал это результат транслитерации.

Да, эти значения добавлены вами в чейнджсетах с комментарием “name:ru - places - Estonia”. Насколько я понял, они также взяты с других, имевшихся в ОСМ, объектов. Т.е. во всех приведенных мною случаях имеет место ошибка в начальных данных.

Можно сказать, эти ошибки исправлены.

Vitalts, спасибо за информацию. Будет очень здорово, если Вы, пользуясь этой шпагралкой, добавите недостающие русские названия. Тогда Эстония будет первой страной, где заполнены русскоязычные названия на 100%. Честно говоря, 92% имеющихся сейчас уже впечатляет.

Fortress, обязательно добавлю, пока руки не доходят. Уже пробежался по этой таблице до “J”, перейдя по линку из вашего предыдущего поста, кое-что внес, кое-что подправил :slight_smile:

Done, без name:ru остался только “Ивангород” :slight_smile: