Skript na počítání slabik využívá pravidleného systému, který v češtině funguje na základě sonority hlásek.[1] Lehce problematické by bylo přesné určování hranic slabik, ale vzhledem k tomu, že k našim účelům potřebujeme pouze prostý počet, můžeme nejistotu ohledně hranice pominout. Prosté spočítání samohlásek komplikují dva jevy, a to
- slabikotvorné souhlásky (neobsahují žádnou samohlásku, ale tvoří slabiku)
- dvojhlásky (obsahují dvě samohlásky, ale tvoří pouze jednu slabiku). Prostě sloučit za sebou se vyskytující dvě souhlásky do jedné ovšem nejde kvůli následujícímu případu: 2a. shluky dvou samohlásek na morfologickém švu, které naopak tvoří dvě slabiky (např. do'učit)
Skript tedy pracuje tak, že ve slově nejprve "odstraní" tyto speciální případy, a to tak, že shluky "au/eu/ou" zkontroluje, zda jejich první hláska není součástí řetězce vyjmenovaných předpon "o za na pře ne po pro do", pokud
- nejsou, pak se určitě jedná o dvojhlásku a je celá dvojhláska nahrazena jedním počítacím znakem
- jsou, pak nastává speciální případ, který nelze rozhodnout bez použití kontextu (rozdíl pro'udit [=provést procesem uzení] x proudit [=téct proudem]) - proto u těchto případů není jako výstup číslo, ale znak pro nutnost individuálního posouzení výzkumíkem.
U speciálních případů se slabikotvornými souhláskami se postupuje následovně: Skript vyhledá všechna "r" a "l", a pokud se bezprostředně vedle nich nevyskytuje samohláska, pak se jedná o slabikotvorné r/l, a je tedy nahrazeno počítacím znakem.
Nakonec jsou všechny zbývající samohlásky nahrazeny počítacími znaky a ty skript sečte a vypíše jejich počet.
Příklady:
kolotoč -> k#l#t#č -> 3
traktor -> tr#kt#r -> 2
trvat -> t#v#t -> 2
loupe -> l#p# -> 2
doupě -> !!! (nutno rozhodnout)
doučit -> !!! (nutno rozhodnout)
[1] PALKOVÁ, Zdena. Fonetika a fonologie češtiny: s obecným úvodem do problematiky oboru. Praha: Karolinum, 1994. (str. 269-270)
V jazyce Perl. Vstupem je soubor, který má na každém řádku jedno slovo:
kolotoč
traktor
trvat
loupe
doupě
doučit
a výstupem je seznam počtů slabik a znaků 'X', pokud nelze pro dané slovo rozhodnout:
3
2
2
2
X
X
perl ./pocet_slabik.pl < sample_data.txt