De Flesch Reading Ease test wordt algemeen beschouwd als de meest nauwkeurige score om uit te drukken hoe vlot een bepaalde Engelstalige tekst kan gelezen worden. Verschillende Amerikaanse overheidsinstanties gebruiken deze test om de leesbaarheid van hun documenten te controleren. Zo eist de staat Florida dat contracten voor levensverzekeringen een minimale Flesch Reading Ease score van 45 hebben. De score werd dan ook ingebouwd in verschillende populaire tekstverwerkers zoals Microsoft Office Word en WordPerfect. De Flesch Reading Ease formule luidt als volgt: \[FRES=206.835 -1.015 \times \frac{\text{aantal woorden}}{\text{aantal zinnen}} - 84.6 \times \frac{\text{aantal lettergrepen}}{\text{aantal woorden}} \] Het resultaat van de formule is de Flesch Reading Ease score (FRES). Hoe hoger de FRES, hoe gemakkelijker het is om de tekst te begrijpen. Een score tussen 0 en 30 wordt beschouwd als leesbaar voor universitair geschoolden. Een tekst met een score tussen 60 en 70 zou leesbaar moeten zijn voor scholieren van 13-15 jaar, en een score tussen 90 en 100 zou leesbaar moeten zijn voor leerlingen aan het eind van de lagere school. De hoogst mogelijke (gemakkelijkste) leesbaarheidsscore is ongeveer 120. Deze wordt bekomen wanneer elke zin bestaat uit twee éénlettergrepige woorden. De score heeft geen theoretische ondergrens. Het is steeds mogelijk om de score te verlagen door woorden met veel lettergrepen toe te voegen.
Hoewel de toepassing van de FRES eenvoudig lijkt, moeten we toch duidelijk formuleren hoe zinnen, woorden en lettergrepen geteld worden. Zinnen worden van elkaar gescheiden door leestekens: punten (.), uitroepingstekens (!), vraagtekens (?), dubbelepunten (:) en puntkomma's (;). Het fragment na het laatste leesteken moet dus ook als een zin geteld worden, tenzij dat fragment leeg is of enkel uit witruimte bestaat. Elke groep van opeenvolgende letters (a-z, A-Z) vormt een afzonderlijk woord. In Engelstalige teksten wordt een apostrofe (') uitsluitend gebruikt om de samentrekking van twee woorden aan te geven. Het fragment "It's" bevat dus twee woorden. Om lettergrepen te tellen worden de volgende regels gebruikt:
woorden met hoogstens drie letters bestaan altijd uit één enkele lettergreep
elke klinker (aeiouy) in een woord wordt beschouwd als één lettergreep, behalve in onderstaande gevallen
de silent e in woordeindes die gelijk zijn aan -es, -ed of -e (behalve -le) wordt genegeerd (alsof ze niet in het woord staan)
opeenvolgingen van klinkers tellen als één enkele lettergreep
Het doel van deze opgave is om de Flesch Reading Ease score te bepalen van de tekst in een gegeven tekstbestand. Hiervoor ga je als volgt te werk.
Schrijf een functie lettergrepen die het aantal lettergrepen van een gegeven woord teruggeeft. Het woord moet als argument aan de functie doorgegeven worden.
Gebruik de functie lettergrepen om een functie woorden te schrijven waaraan een zin als argument moet doorgegeven worden. Deze functie moet het aantal woorden en het totaal aantal lettergrepen in alle woorden van de zin bepalen, en deze twee waarden als een tuple teruggeven.
Gebruik de functie woorden om een functie zinnen te schrijven waaraan de bestandsnaam van een tekstbestand als argument moet doorgegeven worden. De functie moet bepalen i) hoeveel zinnen er in het tekstbestand voorkomen, ii) wat het totaal aantal woorden in het tekstbestand, en iii) wat het totaal aantal lettergrepen is in alle woorden van het bestand. Deze drie waarden moeten als een tuple door de functie teruggegeven worden.
Schrijf een functie FRES waaraan drie argumenten moeten doorgegeven worden: het aantal zinnen in een tekst, het totaal aantal woorden dat in die tekst voorkomt, en het totaal aantal lettergrepen in alle woorden van de tekst samen. De functie moet op basis van deze drie waarden de Flesch Reading Ease score van de tekst berekenen en als resultaat teruggeven.
In onderstaande voorbeeldsessie wordt onder andere de Flesch Reading Ease score berekend voor een aantal zinnen uit hoofdstuk 64 van de klassieker Moby Dick1 van Herman Melville. Deze zinnen zijn terug te vinden in het tekstbestand moby_dick.txt2.
>>> lettergrepen('reliable')
3
>>> lettergrepen('creature')
2
>>> lettergrepen('three')
1
>>> woorden('The Australian platypus is seemingly a hybrid of a mammal and reptilian creature.')
(13, 24)
>>> woorden("Stubb's whale had been killed some distance from the ship.")
(11, 13)
>>> zinnen('moby_dick.txt')
(12, 220, 298)
>>> FRES(12, 220, 298)
73.63212121212123