Odstraneni diakritickych znamenek

2005-11-04 Thread Jan Dvořák

Vazena konference,

mam odstranit diakriticka znamenka ze vsech pismen v retezci, ktera jsou 
v latince.
Nejen ceska diakritika, ale vsechny mozne akcenty nad pismeny anglicke 
abecedy.

Verze Javy je 1.5.

Nevite lepsi zpusob nez prevodni tabulku?

Honza Dvorak



Re: Odstraneni diakritickych znamenek

2005-11-04 Thread Patrik Beno


Friday, November 4, 2005, 6:51:21 PM, you wrote:

> Vazena konference,

> mam odstranit diakriticka znamenka ze vsech pismen v retezci, ktera jsou
> v latince.
> Nejen ceska diakritika, ale vsechny mozne akcenty nad pismeny anglicke
> abecedy.
> Verze Javy je 1.5.

> Nevite lepsi zpusob nez prevodni tabulku?

strucne: nie.

pozrite sa kritickym okom na umiestnenie standardnych a akcentovanych
znakov v znakovej sade.

ak v tom nejakym zazrakom uvidite nejaky naznak algoritmu, rozvinte tu
myslienku a alogitmus implementujte :-)

nepochybujem, ze dostanete nobelovu cenu za matematiku. :-))

DISCLAIMER: nie som matematik, takze za pripadne necakane osvietenie
v tejto veci vopred dakujem :-)

anyway, otazkou je, co je to "lepsi sposob"

1) ak to ma byt rychlost -> asi nic nebude rychlejsie nez prevodna
   tabulka

2) ak to ma byt velkost kodu -> dovolim si tvrdit, ze v tomto pripade
   akykolvek algoritmus bude vacsi nez ekvivalentna prevodna tabulka.

3) ak to ma byt citatelnost -> zlozitost potencialneho algoritmu
   urcite prekroci unosnu mieru. kym prevodnu tabulku pochopi kazdy
   magor, sofistikovany algoritmus len vyvoleni, za predpokladu, ze k
   nemu bude k dispozicii sprievodna rigorozna praca :-).

zaverom asi tolko:

- su ulohy, ktore sa algoritmizovat daju; ine sa nedaju alebo to nema
  zmysel

- su ulohy, ktore sa algoritmizovat musia: napriklad robit
  String.toLowercase() pomocou prevodnej tabulky nad celou Unicode
  znakovou sadou by bol asi drsny overhead...

- je mozne, ze urcite sub-ulohy v tomto zadani su algoritmizovatelne.
  vacsinou je vsak zakladom nejaka forma prevodnej tabulky.


prevodnu tabulku relevantnu pre toto konkretne zadanie predpokladam
mate (je to solidne a priamociare riesenie)

dalej odporucam do pozornosti:
http://www.unicode.org/Public/UNIDATA/

pripadne pre inspiraciu
http://www.unicode.org/Public/UNIDATA/SpecialCasing.txt a suvisiacu
triedu v JDK: java.lang.ConditionalSpecialCasing (package private, pozri 
zdrojaky)


tak, diky za pozornost, dobre mi padlo pre zmenu pisat znovu nieco po
slovensky :-))


-- 
Patrik Beno
J2EE Software Architect

Cleverlance - The Clever Enterprise Solutions
www.cleverlance.com

European Business Center
Dukelskych hrdinu 34
170 00 Praha 7
Czech Republic

Tel.:   +420 266 177 166
Mobile: +420 777 929 450
Fax:+420 266 177 155




Re: Odstraneni diakritickych znamenek

2005-11-04 Thread Stepan Roh



On Fri, 4 Nov 2005, Jan Dvořák wrote:

mam odstranit diakriticka znamenka ze vsech pismen v retezci, ktera jsou v 
latince.
Nejen ceska diakritika, ale vsechny mozne akcenty nad pismeny anglicke 
abecedy.

Verze Javy je 1.5.

Nevite lepsi zpusob nez prevodni tabulku?


Krok cislo 1: pro kazdy znak provest konverzi do normalni formy NFD nebo 
NFKD (dekompozici).


Krok cislo 2: ze vznikleho zahodit vsechny znaky s tridou Mn (non-spacing 
mark), zbytek by mely byt zakladni (base) znaky.


Tento postup ma nekoli problemu:

- myslim, ze Java neposkytuje konverzi do normalni formy (alespon ne v 
core API), nicmene Unicode knihovna od IBM by to poskytovat mela 
(nezkousel jsem); test na tridu viz Character.NON_SPACING_MARK a 
navazujici


- rozpadnou se i jine znaky nez jen ty s diakritikou, napr. nektere 
ligatury - zda se, ze uzitim formy NFD misto NFKD (coz provadi nejprve 
kompatibilni dekompozici) by se vetsina takovych dala odstavit; a jelikoz 
v zadani se hovori o anglicke abecede, pak staci dekomponovat pouze znaky 
z Latin bloku (basic, supplement, ext. A, ext. B a ext. additional)


Vice viz unicode.org.

S pozdravem,

Stepan Roh

Re: Odstraneni diakritickych znamenek

2005-11-05 Thread Pavel Kolesnikov
icu4j od ibm funguje celkem spolehlive, jakkoli to muze byt seznano
kanonem na vrabce.

pavel

On 04/11/05, Jan Dvořák <[EMAIL PROTECTED]> wrote:
> Vazena konference,
>
> mam odstranit diakriticka znamenka ze vsech pismen v retezci, ktera jsou
> v latince.
> Nejen ceska diakritika, ale vsechny mozne akcenty nad pismeny anglicke
> abecedy.
> Verze Javy je 1.5.
>
> Nevite lepsi zpusob nez prevodni tabulku?
>
> Honza Dvorak
>
>


RE: Odstraneni diakritickych znamenek

2005-11-07 Thread Kameník Jaroslav
- myslim, ze Java neposkytuje konverzi do normalni formy (alespon ne v core 
API), nicmene Unicode knihovna od IBM by to poskytovat mela (nezkousel jsem); 
test na tridu viz Character.NON_SPACING_MARK a navazujici

V 1.6 bude pridana (presneji receno presunut mezi 'bezne' tridy) trida 
java.text.Normalizer, ktera by to mela resit. Ale cekat na to asi nechcete, 
co?:)
V Tigerovi existuje sun.text.Normalizer, jen je kapanek nedokumentovana..

Jarda


Re: Odstraneni diakritickych znamenek

2005-11-07 Thread Mat
Len tak okrajom: Sun-acke interne triedy Normalizer a 
NormalizerUtilities su dostupne aj v 1.4


Kameník Jaroslav wrote:

- myslim, ze Java neposkytuje konverzi do normalni formy (alespon ne v core 
API), nicmene Unicode knihovna od IBM by to poskytovat mela (nezkousel jsem); 
test na tridu viz Character.NON_SPACING_MARK a navazujici

V 1.6 bude pridana (presneji receno presunut mezi 'bezne' tridy) trida 
java.text.Normalizer, ktera by to mela resit. Ale cekat na to asi nechcete, co?:)

V Tigerovi existuje sun.text.Normalizer, jen je kapanek nedokumentovana..

Jarda




Re: Odstraneni diakritickych znamenek

2005-11-07 Thread Jan Dvořák

Diky vsem diskutujicim za namety.
Zkusime ICU4J (http://icu.sourceforge.net/), da se zbuildovat i po 
modulech,

a tak nam ten nas drobecek neztloustne o cele 3,1 MB, ale jen o 456 KB.

Honza Dvorak


Pavel Kolesnikov napsal:


icu4j od ibm funguje celkem spolehlive, jakkoli to muze byt seznano
kanonem na vrabce.

pavel

On 04/11/05, Jan Dvořák <[EMAIL PROTECTED]> wrote:
 


Vazena konference,

mam odstranit diakriticka znamenka ze vsech pismen v retezci, ktera jsou
v latince.
Nejen ceska diakritika, ale vsechny mozne akcenty nad pismeny anglicke
abecedy.
Verze Javy je 1.5.

Nevite lepsi zpusob nez prevodni tabulku?

Honza Dvorak


   






Re[2]: Odstraneni diakritickych znamenek

2005-11-04 Thread Patrik Beno

Friday, November 4, 2005, 8:12:56 PM, you wrote:

> On Fri, 4 Nov 2005, Jan Dvořák wrote:

>> mam odstranit diakriticka znamenka ze vsech pismen v retezci, ktera jsou v
>> latince.
>> Nejen ceska diakritika, ale vsechny mozne akcenty nad pismeny anglicke
>> abecedy.
>> Verze Javy je 1.5.
>>
>> Nevite lepsi zpusob nez prevodni tabulku?

> Krok cislo 1: pro kazdy znak provest konverzi do normalni formy NFD nebo
> NFKD (dekompozici).

> Krok cislo 2: ze vznikleho zahodit vsechny znaky s tridou Mn (non-spacing
> mark), zbytek by mely byt zakladni (base) znaky.

> Tento postup ma nekoli problemu:

> - myslim, ze Java neposkytuje konverzi do normalni formy (alespon ne v
> core API), nicmene Unicode knihovna od IBM by to poskytovat mela 
> (nezkousel jsem); test na tridu viz Character.NON_SPACING_MARK a 
> navazujici

> - rozpadnou se i jine znaky nez jen ty s diakritikou, napr. nektere 
> ligatury - zda se, ze uzitim formy NFD misto NFKD (coz provadi nejprve
> kompatibilni dekompozici) by se vetsina takovych dala odstavit; a jelikoz
> v zadani se hovori o anglicke abecede, pak staci dekomponovat pouze znaky
> z Latin bloku (basic, supplement, ext. A, ext. B a ext. additional)

> Vice viz unicode.org.


tak, pekne odborne podane, dufal som, ze to ma niekto zmaknute :-)

lenze ak tomu dobre rozumiem, cely postup je v zasade zalozeny na
kategorizacii znakov, a tuto kategorizaciu si znaky nenesu priamo v
sebe.

to znamena, ze je nutne tieto informacie ziskavat z nejakej databazy,
ergo - prevodnej tabulky...

rozumiem tomu spravne? :-)


-- 
Patrik Beno
J2EE Software Architect

Cleverlance - The Clever Enterprise Solutions
www.cleverlance.com

European Business Center
Dukelskych hrdinu 34
170 00 Praha 7
Czech Republic

Tel.:   +420 266 177 166
Mobile: +420 777 929 450
Fax:+420 266 177 155




Re[2]: Odstraneni diakritickych znamenek

2005-11-04 Thread Stepan Roh


On Fri, 4 Nov 2005, Patrik Beno wrote:


Friday, November 4, 2005, 8:12:56 PM, you wrote:


On Fri, 4 Nov 2005, Jan Dvořák wrote:



mam odstranit diakriticka znamenka ze vsech pismen v retezci, ktera jsou v
latince.
Nejen ceska diakritika, ale vsechny mozne akcenty nad pismeny anglicke
abecedy.
Verze Javy je 1.5.

Nevite lepsi zpusob nez prevodni tabulku?



Krok cislo 1: pro kazdy znak provest konverzi do normalni formy NFD nebo
NFKD (dekompozici).



Krok cislo 2: ze vznikleho zahodit vsechny znaky s tridou Mn (non-spacing
mark), zbytek by mely byt zakladni (base) znaky.



Tento postup ma nekoli problemu:



- myslim, ze Java neposkytuje konverzi do normalni formy (alespon ne v
core API), nicmene Unicode knihovna od IBM by to poskytovat mela
(nezkousel jsem); test na tridu viz Character.NON_SPACING_MARK a
navazujici



- rozpadnou se i jine znaky nez jen ty s diakritikou, napr. nektere
ligatury - zda se, ze uzitim formy NFD misto NFKD (coz provadi nejprve
kompatibilni dekompozici) by se vetsina takovych dala odstavit; a jelikoz
v zadani se hovori o anglicke abecede, pak staci dekomponovat pouze znaky
z Latin bloku (basic, supplement, ext. A, ext. B a ext. additional)



Vice viz unicode.org.



tak, pekne odborne podane, dufal som, ze to ma niekto zmaknute :-)

lenze ak tomu dobre rozumiem, cely postup je v zasade zalozeny na
kategorizacii znakov, a tuto kategorizaciu si znaky nenesu priamo v
sebe.

to znamena, ze je nutne tieto informacie ziskavat z nejakej databazy,
ergo - prevodnej tabulky...

rozumiem tomu spravne? :-)


Ano, jsou to v podstate tabulky. Je to informace na stejne urovni jako 
napr. velikost znaku a dokonce pochazi ze stejneho zdroje, tj. z 
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt. Bohuzel v Jave z 
toho vybrali pouze neco a zbytek byl podle vseho zahozen a to vcetne 
normalizace. Ale v te IBM knihovne by to melo byt.


S pozdravem,

Stepan Roh