k47.cz

mastodon twitter RSS
bandcamp explorer
««« »»»

Spojovníky & pomlčky

24. 3. 2019 — k47

Na k47čce je něco jinak. Přišli jste na pravidelnou denní dávku slov & najednou se cítíte nesví. Nedokážete přesně říct proč, jen víte, že něco v koutku zorného pole je špatně.

Jestli se tak stalo, pak se omlouvám, ale skutečně se tu něco změnilo. Jde o velice malou a nepatrnou změnu, která mě přesto pálila už nějakou dobu: Slova na koncích řádků jsou rozdělená pomlčkami.

Člověk si téhle drobnosti na webu většinou nevšimne, protože je tak málo k vidění. Typografie digitálního média je tristní a z toho důvodu se naše očekávání drží při zemi. Jeden příklad za všechny – před chvílí jsem na jednom nejmenovaném webu četl spojení „k němu“, kde předložka ležela osamocená na konci řádku. Jednopísmenné předložky by měly být ke svému slovu připojeny nedělitelnou mezerou, jinak to vypadá divně. Nejde o nic složitého, asciiblog (a tady i k47čka) tak text formátuje. Rozdělování slov je na tom podobně – není moc k vidění a přitom razantně promění zubatý text na mnohem příjemnější blok slov.

Proto jsem to zavedl i tady.

Teoreticky nejde o nic komplikovaného. CSS rozdělování slov podporuje už nějaký ten pátek, ale žádný prohlížeč zatím nedokáže rozdělovat česká slova. Umí velké jazyky – angličtinu, němčinu, španělštinu a dokonce polštinu, ale po CZ jako by se slehla zem. Nikdo to nesvede – Firefox, Chrome, Edge, Safari – nikdo.

Když nemůže Mohamed k hoře musí vybudovat silniční infrastrukturu, která mu cestu k horskému masivu usnadní. V HTML můžeme použít entitu ­ nebo UTF-8 znak 0xC2 0xAD, které dělají to samé – naznačují místo, kam se může vložit pomlčka. Pak si stačí nastudovat pravidla dělení slov, přiučit se jak to udělali jiní (třeba jak to nahackoval dg v Texy) a vytvořit zalamovací program.

To teoreticky funguje, ale tady se bavíme o přirozeném jazyce. Exaktní algoritmy nemůžou nikdy fungovat dokonale. Jazyk má vždy nějaké výjimky, nějaké speciality, nějaké bizarnosti, nějaké nelogičnosti nebo převzatá slova, která zatím nestačila zdomácnět (píše se selfie nebo už selfí?) a ta by nabobtnala program o myriády speciálních případů. Tohle je teritorium heuristik – vezmi slovník, natrénuj model, nesnaž se postihnout všechny případy chytrým algoritmem, jazyk je příliš složitý a stupidní na něco rafinovaného.

(Mimochodem: Každá heuristika, kterou v používáte v kódu, bude eventuálně nahrazena ML/AI modelem. Ničím si nejsem jist jako tímto proroctvím.)

Máme štěstí, protože algoritmy pro dělení slov existují už několik desetiletí a jejich historie sahá k TeXu. (Telepatické díky posílejte Donaldu Knuthovi, ale to byste měli dělat tak jako tak. Nebo mi snad tvrdíte, že nemáte nad postelí portrét autora 3.5 svazku The Art of Computer Programming a neprobouzíte se do jeho vlahého úsměvu? Ta dnešní mládež…) Existují implementace těchto algoritmů, slovníky dělení slov jsou už vytvořené a dají se volně stáhnout z webu. Tak proč vymýšlet něco nového, všichni divoce surfujeme na ramenech obrů, kteří stojí na ramenou jiných, dávno mrtvých, obrů, a máme pár tisíc let lidské historie na dosah bříšek prstů.

Abych to zakončil: Tohle všechno jsem prošel, zjistil něco nového, a použil tyto relikty minulosti, aby konce řádků vypadaly o něco méně rozhrkaně.

píše k47 & hosté, ascii@k47.cz