e-mail    Debatní kniha    Mapa stránek    Hlavní  
 perličky 
 

Indexy čtivosti. Je to jasné?

Vážená redakce, zasílám vám do Bajtu perličku - o co jde, je jasné, o ten hard disk. Uvedené "soutěžní pozadí", jak cenu nazýváte, mi prosím neprodleně zašlete na uvedenou adresu - nač čekat na vyhodnocení?

Myslím si, že programátorské perličky by neměly být příliš samoúčelné, tedy pomocí počítače řešit problémy počítačů či ucpávat mezery v něčí (systémově-návrhářské) inteligenci. Zpracování textů se už bez výpočetní techniky neobejde. Ale kromě překlepů vám nyní počítač zkontroluje i sloh.

Samozřejmě vím, že když vy píšete dopis, román, stížnost, nebo jiné umělecké dílo, je váš styl čistý jako křišťál a mluva vytříbená. Abyste však dosáhli ještě živějšího podání a maximální sdělnosti, je třeba při psaní textů dodržovat takové zásady, aby zůstal srozumitelný - čtivý. To je jasné, ale jaké jsou to zásady a jak se pozná, zdali je text čtivý? Již ve čtyřicátých letech dvacátého století se tímto problémem začali zabývat chytří vědci a vynalezli několik pouček a indexů.

Nejznámější index čtivosti je Fog index, který zavedl Robert Gunning v roce 1952 a jenž se dodnes používá nejvíc ze všech ostatních. Originální vzorec pro jeho výpočet je:

Fog = (ASL / PHW) * 0.4

ASL je průměrná délka věty a PHW je procento složitých slov. Složitá - "těžká" - slova jsou ta, jež mají tři nebo více slabik.

Poněkud méně známý, zato možná přesnější je Flesch-Kincaidův index. Vznikl v roce 1970, kdy J. Peter Kincaid modifikoval starší Fleschův Reading Ease Index. Tento index používá například i vláda USA (tak ho doporučit i našim politikům, aby se lépe dorozuměli!). Vypočteme jej takto:

F-K = 0.39 * ASL + 11.80 * SPW - 15.59 kde SPW je průměrný počet slabik na slovo.
Oba indexy jsou určitá reálná čísla a platí:
Čím je index nižší, tím je text čtivější
Cílem při psaní bude dosáhnout hodnoty, která odpovídá účelu dokumentu, obecně však platí přikázání:

  • Slov jednoduchých používati budeš. Nesnažte se čtenáře ohromit svými znalostmi a spoustou dlouhých složitých slov. Slovo nad dvě slabiky je "těžké".
  • Na délku vět dbáti budeš. Spisovatelé literatury používají jak krátké, tak i dlouhé věty podle účelu, kterého tím chtějí dosáhnout. Vězte však, že krátké věty (edice Buldok) zaujmou čtenáře více, než dlouhá rozvětvená souvětí (Shakespeare, Vančura).

Přiložený prográmek STYLE vám zajistí zpětnou vazbu při užití těchto pravidel. Spočítá věty, slova i slabiky vašeho dvacetimegabajtového románu, ani okem nemrknete (doporučuji Pentium-based system s rychlým hard diskem) a návdavkem stanoví oba indexy. Slabiky rozlišuje podle počtu samohlásek ve slově (můj vlastní vynález), vyrovná se i s dvoj- a vícehláskami a slova bez samohlásek bere jako jednoslabičná. Přece jen však je pouze ilustrativní a je na vás, programátorech (a lingvistech), navrhnout zlepšení - česká literatura okolo tohoto tématu je zatím v plenkách. Jak například brát číslice - převod na číslovky? Jak se vyrovnat se zkratkami končícími tečkou, když následující velké písmeno nedostačuje a podobně.

Tedy hodně zdaru, nízké indexy literátům a těm ostatním rada: Když vás třeba napadne nějaká blbost, zapište si ji! Později by z toho mohlo být umělecké dílo!

program Style;

const

Letters: set of Char = ['A'..'Z','a'..'z','Č'..'Ŕ'];  {písmena}
Vowels:  set of Char = ['a','e','i','y','o','u','A',
                        'E','I','Y','O','U','á','é',
                        'í','ý','ó','ú','ů','Á','É',
                        'Í','Ý','Ó','Ú','Ů','ě','Ě']; {samohlásky}
EOS:     set of Char = ['.','!','?'];                 {konec věty}
NW:  LongInt = 0;                                     {počet slov}
NSL: LongInt = 0;  NSLOld: LongInt = 0;               {počet slabik}
NS:  Word    = 0;                                     {počet vět}
NHW: Word    = 0;                                     {těžká slova}
Double: Boolean = False;
WithS:  Boolean = False;

var

CChar: Char;
F:     Text;
Fog,FK,PHW,ASL,SPW: Real;  {Fog a F-K index, % těžkých slov, prům.
                            délka věty, prům. slabik na slovo}

BEGIN

if ParamCount<1 then begin
  WriteLn(#13,#10,'   Použití:  STYLE <jméno_souboru>'); Halt(0);
  end;
Assign(F,ParamStr(1)); Reset(F);
while not Eof(F) do begin
  Read(F,CChar);
  if CChar in Letters then begin
    while CChar in Letters do
      if CChar in Vowels then if not Double then begin
                                                 Inc(NSL);
                                                 WithS:=True;
                                                 Double:=True;
                                                 Read(F,CChar);
                                                 end
                                            else Read(F,CChar)
                         else begin
                              Double:=False;
                              Read(F,CChar);
                              end;
    Inc(NW);
    if not WithS then Inc(NSL); WithS:=False; Double:=False;
    if (NSL-NSLOld)>=3 then Inc(NHW); NSLOld:=NSL;
    if CChar in EOS then Inc(NS);
    end;
  end;
Close(F);
if NW*NS=0 then begin
  WriteLn(#13,#10,'   Jakýsi podivný text!'); Halt(0);
  end;
PHW:=(NW-NHW)/NW; ASL:=NW/NS; SPW:=NSL/NW;
Fog:=(ASL/PHW)*0.4; FK:=0.39*ASL+11.80*SPW-15.59; 
if FK<0 then FK:=0;

WriteLn(#13,#10);
WriteLn('Charakteristiky čtivosti souboru ',ParamStr(1),#13,#10);
WriteLn('Fog index              : ',Fog:4:1);
WriteLn('Flesch-Kincaidův index : ',FK:4:1,#13,#10);
WriteLn('Počet vět            : ',NS:5, '   Počet slov   : ',NW:7);
WriteLn('Počet "těžkých" slov : ',NHW:5,'   Počet slabik : ',NSL:7);
WriteLn('Prům. délka věty     : ',ASL:4:1,#13,#10);

END.



Pascal - hlavní
Překladače
Vlastní články
Převzaté články
Věci na stáhnutí
Odkazy k tématu
BP7 buglist
Chyba Run-time 200

BASIC