Preslovljavanje (Transliteration)

Sletela mala pticica da mi nesto kaze/pita na “tu” temu, ali to smo ishendlovali sada, i “nema za dzhema vise problema”.

Ok, a sad na glavnu temu.
isprobao sam plugin i nisam primetio neke nedostatke do sada, i lepo izlazi na kraj i sa onim dvostrukim nazivima sa zagradama.

Први корак баш и није тако тривијалан, или можемо рећи суштина проблема је баш у њему. Како на поуздан начин попунити name:sr ?
Ево изнећу пар варијанти који се серећу. Ради једноставности приказа претпоставка је да постоји само таг name .

  1. Јована Јовановића - све је ћирилица и само се копира
  2. ОШ “Јован Јовановић” - комбинација латиница/ћирилица
  3. Јована Јовановића (Jovana Jovanovića) - комбинација латиница/ћирилица
  4. Петра Петровића V прилаз - римска слова опет комбинација латиница/ћирилица
  5. Jovana Jovanovića - латиница где постоји “ć” као знак да је коришћена “права” латиница
  6. Jovana Jovanovica - celava latinica
  7. Petra Petrovića V prilaz
  8. Petra Petrovica V prilaz

Од оперативних ствари тренутно могу да одредим:

  1. да ли има латинице у називу
  2. да ли има ћирилице у називу
  3. да ли је само ћирилица
  4. да ли је само латиница
  5. да ли има наших латиничних знакова

Дакле, задатак је дефинисати када се недвосмислено може одредити name:sr. Остале случајеве бих касније решавао уз евентуалну људску корекцију. Добра ствар је што могу филтрирати базу па се јасно види који подаци ће бити обрађени, и на који начин.

Napravio sam wiki stranicu Preslovljavača http://wiki.openstreetmap.org/wiki/JOSM/Plugins/SerbianTransliterator mislim da sada već možemo da stavimo sve informavije oko Translitera tu.

Ako sam dobro razumeo, plan automatskog bota za preslovljavanje se sprovodi u dve faze?

  1. i teža: pravljenje ‘name:sr’ naziva iz postojećih ‘name’ (u toku)

  2. i lakša: kopiranje nazad u ‘name’ i izvođenje ‘name:sr-Latn’ (dolazi kasnije?)

Što se tiče iznetih problema sa prvom fazom, mislim da nam nema druge do ručnog lektorisanja. Jedino što pomaže je da se izdvoje stavke gde automatsko generisani ‘name:sr’ naziv ranije nije postojao ili se razikuje od postojećeg jer samo one moraju biti proverene.

Мислим да није паметно да се таг name мења са бот-ом, бар не на серверу. За личне потребе ОК али за измене на серверу бих тај посао оставио човеку (плагин-у).

Ајд да мало појасним шта бот ради. Тренутно се ручно скида http://download.geofabrik.de/osm/europe/serbia.osm.bz2 и распакује се serbia.osm. Овај фајл се обрађује са истом класом као и записи у плугину.
Постоје два принципа рада која могу и истовремено да се користе:

  • генерише се нови фајл, копија serbia.osm, са свим изменама. Касније овај фајл се упоређује са оригиналним и из њега се генерише фајл са разликама, који се после дели на фајлове са јединичним разликама.
  • директно се генеришу јединичне разлике

Касније се ови фајлови са јединичним разликама у петљи шаљу на сервер.

Оно што сте приметили на серверу је тест свих ових корака на најопрезнији могући начин где се мењао само један таг. Бот још није спреман за масовну употребу јер се разлика броја фајлова са изменама разликује за пар стотина (~1800 - ~1500) за чисте ћириличне записе. Док не разумем овај феномен не бих се превише играо.

Када бот буде пуштен за озбиљно нема разлога да се одваја попуњавање name:sr и name:sr-Latn.

Уз ризик да лупим пошто нисам баш мног искусан са ЈОСМ, предложио бих да се просто уведе правило (а како сам прочито то и јесте) да се сви називи уносе на ћирилици. Програм тада не треба да се масира са транслитерацијом из латинице већ само да упозори на оне тагов екоји треба да буду попуњени ћирилицом а нису. Корисник у том случају мора прво да исправи на ћирилицу па тек онда да се обави транслитерација. Тако ће се решити и проблем недоследног уноса од раније.

Једини проблем може бити ако неки специфични уноси морају да садрже латиницу. Ту би решење могло да буде да се не инсиситра да сав садржај тага буде ћириличан, али да мора да има део написан ћирилицом. То би омогућило да се уноси мешан текст, што има смисла, а у коме би се транслитеровао само ћирилични део.

Не знам д али је дозволјено да се уведе неко специфичан таг који би значио: дозволи латиницу у ћириличном тагу. То би лепо решило те изузетке када назив треба да садржи латиницу.

@Pedja: Procitaj: http://forum.openstreetmap.org/viewtopic.php?id=15632

Samo ideja: proveri da nisu slučajno uneti mešoviti nazivi, npr. često se dešava da poneko a, e, o, j budu uneti u latiničnom kodnom rasporedu, a ta slova se razlikuju od ćiriličnih u unikodu.

Што више сагледавам проблематику све иде ка томе да већину пресловљавања мора човек прегледати, и сада размишљам да се постави сајт који би заинтересованом кориснику достављао ограничени број “спорних” објеката да их прегледа. Или другим речима, “лектор” оде на сајт и преузме фајл од 50-100 објеката са називима, прегледа / поправи их на начин као што то ради у плагину и пошаље их на сервер. Пошто је успешност пресловљавања релативно велика посао би се сводио на спорадичну интервенцију.

мпеле, ја бих ти радо помогао али не трошим џаву. Могу само да ти дам неке сугестије генералне природе а имам искуства јер сам се доста бавио пресловљавањем.

@mpele
Tako nekako. Što se mene tiče, može to i jednostavan diff na staroj i novoj osm datoteci da bude, onda mogu odmah da vidim gde postoje izmene, a i direktno zakrpu da ispravim i vratim.

Имењаче, упознат сам са са твојим радом још од ере пре интернета и сваки савет је добродошао.
Овде је проблем концептуално друге природе од стандардног проблема пресловљавања јер није императив добити пресловљавање са што већом тачношћу, већ одредити ситуације где је пресловљавање успешно 100%.

Како тренутно стоје ствари кристалише се идеја да бот прочешља базу и ако је laitinica(name:sr)==latinica(name) онда је објекат коректно обрађен и нема потребе за даљом обрадом. Овиме би се покрио случај када је лектор то прогласио коректним (раније сам размишљао и о посебном тагу за посебне ситуације, али сада не могу да се сетим ситуације када би он био неопходан).

Ако није задовољен претходни услов онда имамо две варијанте:

  • чиста ћирилица - бот све сам заврши
  • остало - шаље се на лектуру.

Слање на лектуру би подразумевало дневно генерисање osm фајлова са “двосмисленим ситуацијама” који би били доступни преко веб интерфејса. Тај фајл би се учитавао у ЈОСМ и уз плаг-ин обрађивао.

Iskreno receno mislim da bi za pocetak bilo dobro da konacnu odluku donosi korisnik, a ne bot. Kasnije kad se situacija malo iskristalise dalja automatizacija moze da se ukljuci. Zelja da se sve unapred predvidi odlicnim programiranjem je cesta zamka u ovom poslu, i bilo bi bezveze da se suvise puno vremena ulozi u nesto sto ce na kraju da propadne kao projekat. Ja predlazem “sitne” korake. Mozda je i najbolje za pocetak da se usavrsi plugin i da svako koristi taj plugin onda, i posle pregleda izmena iste gurne u bazu… Time se stvara i… “accountability”…

(Ma, srpski lengvidzh mi je svetinja)

Управо то и јесте костур идеје, али ја предлажем и малу надоградњу, тј. да корисник не мора да лута по мапи и тражи где фали таг name:sr већ да му се то сервира.

Naravno, bot treba da reši sam sve što je očigledno i da se automatski rešiti prema definisanim pravilima, a ono što je nejasno treba da ostavi nama i da nam izdvoji šta treba da se uradi. Čak i ono što odradi automatski može a prikaže da ipak neko može da pregleda ieventualno popravi ak se pojavi kakva greška.

Jesi li to napravio lapsus? Zar name:sr ne treba da sadrži ćirilični naziv?

Брендирана имена, по мени, треба да остану на латинициi u name:sr тагу: Taxi, MAXI, OMV, McDonalds, Beneton…

ЕјСи ДиСи НиЗаДиСиНиСи

То да.

Онда би алгоритам могао да буде овакав:

  • ако је попуњен name:sr а name није није исти као name:sr онда се name:sr преписује у name
  • ако је попуњен name ћириличним текстом, а name:sr је празан, онда се преписује name у name:sr
  • ако name садржи нећириличне знакове а name:sr је празан, онда се пријављује да је потребна интервенција
  • у name:sr-Latn се преписује садржај name:sr пресловљен у латиницу

Ако је потребна интервенција, корисник треба да у name:sr упише тачан назив. Може да га упише и у name, мада ако то не уради, то ће урадити бот у следећем пролазу.

Мислим да би то покрило све случајеве.

Постоји ли могућност да бот убаци неки кастом таг којим би могао да назначи какав је статус уноса? Ако би то могло онда не би морали да посебно извлачимо објекте које треба прегледати него бисмо их простом претрагом по том тагу извукли.

Može npr. da se ubaci ‘fixme’ sa nekim opisom koji će biti specifičan za tu upotrebu.

http://wiki.openstreetmap.org/wiki/Key:fixme

Što se brendiranih naziva tiče, po meni ne bi uopšte trebalo da imaju ‘name:sr’ ako nisu na srpskom jeziku. U ‘name’ može da stoji štagod.