Preslovljavanje (Transliteration)

Да ли сам добро разумео - предлажеш да се направи веб интерфејс за измену тагова?

Бот не може да зна шта је неко радио у плагину, а добар део ће морати да прође кроз људске руке.

Изгледа да нисам био јасан. На серверу су два типа фајлова izmena152_d.osc и lektura123.osm . Први тип представља појединачну измену коју би бот сам послао на ОСМ сервер (http://www.openstreetmap.org/user/preslovljavanjeBot/edits?page=1) а други су груписани 100 објеката за које је бот проценио да треба изменити а он то не може сам да одради.

U jednostavnijoj formi ne, nego samo da das link ka OSM gde vec ima editor i sve sto treba, samo treba da se usmeri na konkretan objekat koji terba editovati.

U boljoj formi, da. Ali ne neki komplikovan editor nego najosnovija forma za popunjavanje tih nekoliko jezickih tagova pa da bot sam to upise u OSM bazu.

Aha, ovo sam prevideo. To je ok.

Ne bi bilo loše da plugin osm i osc datoetke razdvoji u dva direkorijuma. Biće preglednije.

Par komentara za plugin:

Valjalo vi da oznaci slogove da bi se moglo razlikovati:

  • koje je slogove sam menjao ali to treba proveriti
  • koji slogovi po njemu ne sadrže dobre unose
  • koje je slogove korisnik menjao ispravljajući ih
  • koje slogove treba proveriti (to su oni koji nemaju neki drugi status)

Kada korisnik upiše podatak u tag name:sr trebalo bi da se automatski ažurira name:sr-Latn a i name, prema podešavanju “Podrazumevano pismo”.

Još jedna stvar, prilikom unosa, valjalo bi da program proverava da li je trenutni unos ispravan, na primer tako da upozori ako korisnik ukuca ćirilični znak u tag gde može biti samo latinica. Može mnogo da pomogne oko grešaka sa slovima koja izgledaju isto u ćirilici i latinici. Lako se zeznuti u prebacivanju tastature sa jednog na drugo pismo pa može da seukuca negde pogrešno.

Valjalo bi da može da se iz plugina pokrene gugl pretraga po sadržaju taga. Može dosta da pomogne kada se edituju nazivi ulica u mestima koje ne poznajemo. Ja sam već naišao na neke slučajeve da sam morao da potražim ulicu preko gugla da vidim kako se tačno zove jer ono što je bilo upisano nije bilo tačno ali nisam bio siguran kako treba.

Malo je nezgodno što se ulice ne vide pa se radi napamet.

Može li da se polje na kome je kursor učini više izraženim? Često počnem unos a kursor mi na pogrešnom polju. Generalno, pravilo je da ako se korsinik po tabeli može kreati po poljima onda ne treba da se označava ceo slog tako da to izgleda važnije od polja. Važnije je da se vidi u kom je polju korisnik. Ne znam kakve su mogućnosti ove java tabele ali bi bilo dobro ako bi se slog označio kvačicom na početku sloga (ili da ceo red bude blago zasivljen) a da polje na kome je kursor bude plavo. To je neki ustaljen standard.

Valajlo bi da može da se sadržaj polja/sloga vrati na vrednost koja je bila pre nego što ju je korinsik poeo menjati, za slučaj da greškom izmeni sadržaj.

Može li da se ceo slog zaedituje da ne mora svako polje posebno da se edituje pa upiše? Smara i usporava unos.

Bilo bi dobro da za slog piše redni broj da se vidi koliko još ima da se radi :slight_smile:

Kad se krene sa unosom mora da se završi unos svih objekata, jer plagin ih sve odmah izmeni. Ne može da se srdi deo pa da se pošalje na OSM samo sređeni deo jes JOSM ne zna koje je objekte menjao plagin a koje korisnik.

Bitno!,Kada se skine osm koji je bot napravio, obavezno uraditi update pre izmena, jer taj OSM može da sadrži zastarele podatke u tagovima.

I još malo komentara

Malo me zbunjuje učitavanje objekata. Izaberem Podrazuemvano pismo ĆIRILICA i kliknem učitaj sve. Plagin učita neke podatke i koliko vidim sam pokuša da namesti tagove. Nakonnjega prođemja kroz tabelu i unesem ispravke. Izađem, pošaljem na OSM.

Zatim uđem ponovo i kad aponovim učitavanje, ne dobijem nijedan slog. To plagin zakquči da je sve u radu i ne prikaže mi nšta? To znači dami plagin prikazuje samo one objekte za koej on misli da ih treba srediti?

Primetio sam jedna objekat koji mi plagin nije prikazao da ga sredima treba da ga sredim. Jedna ulica je u ćiriličnom nazivu imala З umesto Ж. Plagin je, izgleda, zakqučio da pošto je sve ćirilica, unos je u redu iako nije.

Bolje bi bilo da plagin uvek učita sve selektovane objekte, a da označi šta misli da je u redu, šta je on isravio i šta da treba korisnik da ispravi. Korisnik treba da pregleda sve i da utvrdi šta je ispravno odnosno da popravi šta treba da se popravi. Korisniku može da se stavi dodatna opcija da filtrira prikaz prema tom statusu ili čak da sve štoje plugin ispravio jednim klikom proglasi da je u redu.

Kada se završi ispravljanje, plagin treba da upiše izmene samo u one objekte koji zaista jesu promenjeni: oni koje je promenio plagin a promene je potvrdio korisnik i one koje je korisnik promenio. Ostali objekti treba da ostanu neizmenjeni čak i ako plugin misli da su neispravni. Ako korsinik ponovo otvori plagin ponovo će videti sve slogove, samo će njihovi statusi biti drugačiji, jer oni koji su u međuvremenu izmenjeni, sada će biti ispravni, pa će korisnik moći da nastavi izmene na onim slogovima koji su i dalje neispravni.

Što se tiče jezičkih tagova, mislim da redosled treba da bude:

name:sr
name:sr-Latn
name
name:en

jer se najčešće unosi name:sr a osalo bi trebalo da se izgeneriše na osnovu njega.

Negde ukomentarima procitah da se name:en samo prikazuje ali ne menja. Zato ne? Onaj ko sređujenazive ako zna kako terba da seime zapiše naengleskom jeziku treba da može to i da popravi. Ja sam recimo video imena ulica gde su ispustena slova, permutovana, slova, upisane skracenice i slicno. To treba da se popravi u svim tagovima a ne samo nasim.

Ako korisnik ne zna kako naziv treba da se upiše na engleskom jeziku, onda ga neće ni dirati, ostaviće kako jeste.

Pored engleskog, mislim da treba predvideti tagoe za još nekoliko jezika koji su kod nas u nekoj meri službeni. Ovaj alat može da bude veoma koristan za unos naziva i na tim jezicima. Ovi tagovi mogu da ostanu prazni, pa na izlasku, plagin njih neće ni podešavati u datim objektima.

Već sam pomenuo u ranijoj poruci, valjalo bi omogućiti automatiku da se izvrši na pojedinačnom slogu u toku unosa. Ako korisnik unese ispravno name:sr od toga može da se automatski generiše name:sr-Latn i name a i name:en. To bi mnogo ubrzalo sređivanje. Ne mora automatika da se automatski pokreće, dovoljno bi bilo da korisnik može da aktivira da se automatski srede ostala polja u slogu na kome je trenutno.

Можеш ли да ми даш пример линка?

Крајњи корисник (лектор) ће имати само приступ osm фајловима и то на такав начин да се спречи да се један фајл може преузети више пута у току једног дана (једном дневно би се обрађивао дневна копија базе Србије). Фајлови osc би се после слања на сервер брисали и они би били невидљиви за лекторе.

Коментари су углавном на свом месту и углавном су били у плану, али за почетак мени је проблем да осмислим сам радни прозор плагина. Како приказати табелу са старим вредностима тагова, са новим вредностима тагова и још по нечим а да то буде прегледно и практично. Могу ли ту да добијем педлоге?

База на којој је радио бот је стара преко недељу дана ( имам ограничен проток а сада је крај месеце :frowning: ). Због овога ће бити ограничен број објеката у једном фајлу па ће евентуална штета бити мања ако се задеси такав случај.

Пеђа, видим да си добро разумео како сада ради плагин. То је прва верзија која којој је пре свега био циљ да учита тагове од ЈОСМ, измени их и врати их ЈОСМ-у за аплоад. Од тада се чека неки договор да се зна каква су правила за унос тагова, рецимо да ли таг name сме да буде латиница, да ли сме да буде латинице у name:sr, да ли је обавезан таг name:en и слично. Плагин и бот користе исту класу са логиком и док не дефинишемо ту логику обоје неће бити оптимални.

Mislim daje to ovo:

http://www.openstreetmap.org/browse/way/112824485

Broj bi trebalo da bude id objekta koji imas.

Svakako. Meni je samo problem što ne znam kakve su mogućnosti korisničkog interfejsa.

Ma nije šteta, uvek postoji mogućnost da se razlike reše kao konflikte ali je to zamorniji način.

Ako se selektuju svi objekti sa Ctrl+A, pa onda uradi Update Selection sa Ctrl+Alt+U a tek onda pokrene plaginmanja je prilika da bude konflikata.

Nemoj se time opterećiati. Poenta je da pravila, kakva god su, mogu da se primene i naknadno. Ovaj tvoj plagin zlata vredi pa makar i da se sve peske radi.

Ako si napravio na primer funkciju public OSMObj Preslovi (OSMObj pSOMObj) okjar adi ceo posao onda gde god treba samo pozoves:

OSMObj preslovljenOSMObj = Preslovi (originalniSOMObj)

i resen problem. Cela ostala funkcionalnost plagina ne zavisi od preslovljavanja.

Sto se tice korisnickog interfejsa, kad napravim neki predlog poslacu. Tu ima malo vise posla.

Evo predloga za resenje korisnickog interfejsa

Kada korisnik udje u plagin on automatski ucita sve selektovane objekte i prikaze podatke u tabeli bez automatskog preslovljavanja. To omogucava korisniku da vidi kakvo je stvarno stanje kako bi odlucio sta želi dalje da radi.

Opcije:

Podrazumevano pismo omogućava korisniku da izabere koji tag ce biti koriscen za auomatsko popunjavanje taga name.

Filter slogova omogućava filtriranej slogova:

  • svi - prikaz svih slogova
  • za proveru - prikaz svih slogova z akoje je potrebno da korsinik proveri da li su tačni
  • ispravni - prikaz svoh slogova koej plugin smatra ispravnim
  • autokorekcije - prikaz svih slogova koje je plugin automatski sredio
  • korekcije - prikaz svih slogova koje je korisnik menjao
  • za snimanje - prikaz svih slogova koji ce biti snimljeni

Preslovi sve - plagin prodje sve slogove i automatski preslovi sve što može

U donjem delu su opcije:

Preslovi - automatski preslovi tekući slog. Ovo se može korsititi nakon što se popravi neki tag da biplagin ažuriraoostale tagove na osnovu te promene

Prikaži original - otvori se dijalog u kome su prikazani podaci o objektu na koji pokazuej tekuci slog, ali oni originalni, bez izmena. Valjalo bi da korsinik moze da kopira neki od podataka sa Ctrl+C

Vrati original - vrati oroginalen vrednosti u slog. Moyda bi valjalo da pita dali da vrati vrednosti u ceo slog ili samo u teku’e polje (ili staviti posebno dugme za vraćanje vrednosti za tekuće polje)

OK - izlazak iz plagina sa snimanjem slogova koji su označeni za snimanje

Cancel - izlazal iz plagina bez snimanja izmena (valja upozoriti ako ima slogova koje bi trebalo snimiti)

E sad, glavni ekran:

Prva kolona pokazuje desnu strelicu na onom slogu koji je tekuci. Ceo tekuci slog takodje moze da ima promenjenu boju podloge a tekuće polje ne kom je korisnik je istaknuto.

Druga kolona st (status) pokazuje status sloga:
u - user changed - korisnik je menjao slog
a - auto changed - plugin je automatski menjao slog
? - quiestionable - plugin smatra da je ovaj slog neispravan i da ga treba proveriti
c - correct - plugin smatra da je slog ispravno popunjen

Treca kolona sadrži ček boks za svaki slog. Ako je čekboks označen, taj slog će biti snimljen u bazu prilikom završetka rada plagina. Oznaku može da stavi korisnik ručno ali ona može da bude i automatski uključena ako korsinik upiše neku promenu na slogu. Za slogove koje je plagin automatski izmenio checkbox ostaje isključen. Te izmene će se snimit samo ako korisnik naknadno označi slog za snimanje.

Korisnik slogove koje je plagin automatski sredio prepoznaje po statusu a i po tome što ti slogovi imaju promenjenu boju pozadine u blagu žutu.

Sledi kolona id koja sadrži ID objekta, zatim name:sr, name:sr-Latn, name, name:en i polja z atagove u drugim jezicima-

Boje polja u tabeli

Boje pozadine polja treba da odražavaju status slogova ili pojedinačnih polja. Boje su:

status a - bledo žuta
status c - bela
status ? - jako žuta
status u - bela

Treba razmilsiti imali potrebe da se razlikuju boje za statuse c i u

Takođe mogu se istim bojama prikazivati i statusi pojedinačnih polja, ako se smatra da bi i to trebalo da bude vizuelno naznačeno.

Koja je najnovija verzija preslovljavača i kako da znam dali je imam i kada je izašla novqa verzija, da mi ne promakne.

Ja sam skinuo sa http://svn.mpele.co.cc/SerbianTransliterator/

Ovo je sve odličan početak i zvuči mi kao prihvatljiv proces.

Samo mi je ova datoteka pregled.txt malo teška za čitanje, nije mi baš 100% jasno u šta gledam? Da li je moguće da se napravi klasičan diff? Onda se lepo vide sve promene (ne samo u name:sr), npr.


- name=Bulevar Zorana Đinđića
+ name=Булевар Зорана Ђинђића
+ name:sr=Булевар Зорана Ђинђића
+ name:sr-Latn=Bulevar Zorana Đinđića

pogotovu ako se otvori u nekom pristojnom editoru koji automatski oboji diff sintaksu.

Usput, primetih ‘Миджур’: ako je nastalo preslovljavanjem iz ‘Midžur’, onda bi trebalo i kod za preslovljavanje popraviti. (Mada je moguće i da je u pitanju izvorni bugarski ispis ćirilicom u ‘name’: http://sr.wikipedia.org/wiki/%D0%9C%D0%B8%D1%9F%D0%BE%D1%80))

Пеђа, врло освежавајући приступ.

У мојим ранијим размишљањима уместо колоне st и вредностима у њима предвиђао сам да цео ред буде обојен у зависности од статуса. Али то је сада мање важно. Без неког конкретнијег договора још је рано да се коментарише начин самог рада - у глобалу суштина је, по мени, ОК.

Главна замерка у визуелном смислу се односи на то што сматрам да би требало приказати и старе и нове (препоручене, измењене) тагове. Јесте да кошта доста простора али може да олакша схватање шта се дешава.

Мање битне ствари које би требало још размотрити:

  • приступ линку http://www.openstreetmap.org/browse/way/112824485
  • могућност да се прикаже чек бокс (или текст) који би био у вези са note/fix тагом
  • како означити случај када се жели изоставити вредност за неки таг (рецимо Милош предлаже да таг name:sr не постоји ако реч није на српском или ако се не жели унети енглески таг).

Само прати ову тему. Она је и због тога отворена.

Класичан diff је проблематичан јер би се упоређивали велики фајлови и било би много шума због осталих тагова.

Ако је лакше може се направити html преглед где би све било сложено по жељи са евентуалним линковима. Друга варијанта је да се креира csv, односно xls табела. Питање је само како организовати праћење ових измена на дневном нивоу.

Pa i sada već upoređuješ iste te velike datoteke, ili ne?

Što se šuma tiče, mislim da nije problem: spustiš kontekst, i kao što rekoh obojena sintaksa lepo naznači samo ono interesantno.

Mada slažem se da nije idealno, verovatno je bolji neki objektno orijentisani alat koji je svestan XML strukture, a koji se onda može ikoristiti i za GUI tvog dodatka kao što Peđa predlaže. Čudi me da (J)OSM biblioteke i alati ne sadrže već nešto tako, ovaj .osc izlaz ne služi ničemu (sem slanju na server naravno) jer ne sadrži prethodno stanje, slično i sa .osm izlazom.

E da, i što se engleskih naziva tiče, mislim da bi ih trebalo skroz izbaciti iz dodatka - em zauzimaju mesto u GUI-ju, em još uvek nismo našli način da ih koristimo valjano. Ko hoće, nek ih dodaje ručno po potrebi kao i do sada.

I ja sam primetio slične greškekoje prolaze, zato sam i predložio da plagin ne prikazuje samo ono što misli da treba da se menja nego sve što je selektovano a da označi ono što misli da treba da se menja. Tako ostavlja korsiniku mogućnost da vidi sve i da ispravi i greške koje plagin ne može da primeti.

Konkretno, grešku kao što je ova koju si ti našao plagin može delimično da detektuje jer kombinacija дж je u srpakomjeziku veoma retka pa bi moglo da prođe da se svako njeno pojavljivanje označi kao da ga treba proveriti. Doduše ostaje problem kako naznačiti kaa ej ta kombinacija isprvna da je plagin ignoriše (da se ne bi korsitio dodatni tag, može se plagin naučiti koje reči sadrže kombinaciju дж pa da njih ignoriše.

To sam i ja predvideo, ali svejedno bitno ej da postoji ta kolona st jer je ona očigledna. Boje treba da posluže samo da korsiniku olakšaju da brže prolđe tabelu i sređuje ono što očigledno treba srediti.

Mislim da to nije neophodno. Dovoljno je ako korisnik može klikom na dugme da vidi prethodno stanje i to je sasvim dovoljno. Dovoljno je da mu je ceo slog naznačen da je menjan tako da zna da treba da ga proveri. U samom radu, relativno retko će trebati da se pogleda prethodno stanje ali u nekim slučajevima može da bude korisno.

Ovo nije loša ideja, ali bi bolje bilo da se vidi zašto JOSM ne prikazuje objekte kada ih učita.

Na to sam zaboravio. Trebalo bi da se obrati pažnja na taj tag a možda i da se uvede poseban status na osnovu tog taga, pošto je to opet poseban slučaj koji treba da se obradi.

Juče sam morao da na brzinu završim pisanje poruke u vezi predloga korisničkog interfejsa tako da nisam napisao sve.

Jedna od ideja je da plagin ima konfiguraciju a da se u konfiguraciji može izmešu ostalog podešavati koje sve tagove treba prikazivati u tabeli. to bi omogućilo da svako prilagoti prikaz onome što radi a dalo bi plaginu mnogo veću upotrebnu vrednost.

Generalno ima tu još mogućnosti generalizacije. Jedan od njih je da korsinik može da podesi način automatske obrade i način provere ispravnosti polja, što bi ostavilo slobodu da se podesi po potrebi. Tako bi i ovo sa praznim tagovima u stvari bilo stvar podešavanja. Ko hoće engleski tag podesi da se prikazuje. Ko hoce da namesti da se neki tag ne mora popunajvati (ili da se mora popunjavati, može to tako da podesi)… Još jedna dobit bi bila što tada plagin ne bi bio vezan smao za name tagove nego i za bilo koje druge koje korisnik izabere.

To u stvari vise ne bi bio plagin samo za preslovljavanje nego bi mogao da služi kao opšti tabelarni editor tagova, a to bi bio veoma moćan alat. Neko je pomenuo da je negde video da za mesto stoji tag population koji ima vrednost 0.

Zamislite sad da ovaj odeitor moye da sepodesi da prikazuej tag population, tako da neko moze prosto da selektuje sva mesta na svojoj mapi prikaze ovaj tag i onda kroz tabelu lako proveri i spavi vrednost ovog taga za mesta (koristeći neki statistički izvor koji daje takve informacije). To bi bilo vrlo efikasno.

Ili, zamislite da neko crta mapu na prostoru koji nije mapiran pa ucita trekove u GPS formatu. To ce na mapi da izgleda grozno, jer import iz GPS uglavnom i n emoze da bude dobar. Selektuje sve puteve, prikaze u tabeli i onda lepo i brzo izedituje bitne propertije koje unapred izabere… To bi bilo mnogo brze neko klikanje po objektima i podesavanje tagova za svaki zasebno, kako mora sada da se radi.

Znam da sam otuišao od teme Transliteracije, samo pokušavam da objasnim kako ovaj plagin može mnogo da se unapredi sa relativno malo posla tako da postane mnogo upotrebljiviji alat.

U stvari što se tiče izmena problem je samo ako se objekat prikazuje a neko ga je u međuvremenu već popravio tako da nije više predmet pregleda.

Kolko traje generisanje ovih datoteka na postojećoj bazi, odnosno koliko resursa troši. Koliko često bi mogao da se pokreće plagin da sve nanovo generiše?

Koliko bi funkcionisalo da se za svaku datoteku prikaže kada je generisana, pa da korisnik pre nego što je preuzme, ako je prilično stara može da pokrene njeno nanovo generisanje? To ne bi moralo da ceslja celu bazui nego samo da azurira objekte koji se vec nalaze u toj izabranoj datoteci.

Ako bi se moglo podešavati koje se kolone prikazuju to bi rešilo stvar )omogućilo bii da neko izabere da prikazuje nema:hu ili name:sq zavisno koju tertitoriju tretira pa da mu se prikazuje ono što je relevantno.

Tag name:en sam predvideo zato što tako možemo da omogućimo da se istovremeno sa našim jezikom, nazivi upisuju u engleskom (a i to uglavnom može da se uradi automatski pa bi kolona više služila za proveru).

Pitanje: koliko je izvodljivo u javi napraviti da korisnik moze da unese neki izraz koji ce java aplikacija da izvrsi kao java kod?

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

Ми можемо направити свемирски алат али питање је колико ће он касније имати посла.
Описаћу могућ начин проналажења грешака. Колико ми је познато скоро сви овде владају основама линукса па ћу онда само набацати пар команди (команде су фигуративне)

wget serbia.osm.bz - то је 30так Mb
unzip serbia.osm.bz
cat serbia.osm | grep name > tagovi 

Прегледом фајла tagovi нађу се грешке. У обичном едитору се нађе id објеката који је проблематичан и онда га је лако исправити. Гледајући ову просту процедуру да ли има потребе да превише компликујемо ствари.

То и није нека мистерија. Пут (way) се састоји из тачака, а тачке нису у фајлу који се учитава у ЈОСМ. У самој дефиницији објекта се налазе само референце на тачке.

osmosis може да филтрира фајл serbia.osm и да извуче само објекте са тагом population и да то сними као осм фајл, који се онда учитава у ЈОСМ и даље је прича јасна. Дакле још једна команда.

Већ постоји плагин за то: tageditor . Фактички гледано наш плагин је почео као његов форк. Додуше, сада баш и немају заједничких тачака.

Бот ради пар минута за целу Србију. При томе направи све оне фајлове које сте видели и целокупну базу са свим изменама (за генерисање osmand мапе). Нисам се бавио оптимизацијом рада а простора за то има више него много.

Ако бот стартујемо једном дневно (постоје дневне копије ОСМ базе за Србију) добићемо фајлове са “спорним” објектима. Моја идеја је да се направи php скрипта која би контролисала преузимање фајлова на начин да када неко затражи фајл она му да само један линк. За следеће преузимање нуди следећи линк (итеративно повећа број за један) и тако даље. После бота би се ресетовао бројач фајла са изменама и све из почетка. Скрипта би била проста а постигли би да се не дуплира рад над истим подацима. Не верујем да ће бити толика навалица за алтернативним обрадама које би заобишле овај систем и правиле озбиљније проблеме.

Стоји. Ја сам одрадио двеста измена прилично брзо и са оваким плагином какав је сад.

Мислим да неће изгубити сврху. Много је згодан за брзо сређивање података, чак и у редовном уносу.

Аха. Провалио сам. Ако урадим Update Selection тада JOSM повуче поптуно податке па се објекти могу видети.

То је непрактично. Ово би радило на лицу места, брзо и једноставно.

Пробао сам га али овај твој плагин ми је много згоднији.

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

Постоји ли могућност да се објекти групишу по територијалном принципу? То би омогућило да свако може да прати одређену територију и сређује је. Ипак је најлакше то радити за простор који познајемо.