De Lexical Diversity Calculator berekent nu ook de zogenaamde compression rate; de ratio tussen de lengte van een gecomprimeerde tekst en die van de originele, ongecomprimeerde versie van een tekst. Het idee daarachter is vrij simpel: door een tekst te comprimeren, verklein je het aantal tekens of bytes dat nodig is om de tekst op te slaan. Dat werkt ongeveer als volgt.
Een tekst bestaat uit woorden en de meeste woorden bestaan uit meerdere tekens. Het woord langeafstandsloper bijvoorbeeld is opgebouwd uit achttien letters. Als dat woord tien keer voorkomt in een tekst, ‘kost’ je dat dus 180 tekens/bytes. Als je een tekst comprimeert, schrijf je een soort woordenboekje bij een tekst, waarin bijvoorbeeld staat dat de letter a eigenlijk staat voor langeafstandsloper. Dat kost je initieel wat opslag, maar elke keer dat het woord daarna voorkomt, bespaar je maar liefst zeventien tekens. Dat scheelt aanzienlijk. Je neemt in dit voorbeeld immers achttien keer de letter a op in plaats van langeafstandsloper en dat kost je in totaal achttien bytes, een stuk minder dan de 180 bytes in de originele tekst.
Terug naar het nut van een compressiealgoritme in het licht van lexicale diversiteit; het idee in onderzoek naar herhaling in tekst, zie bijvoorbeeld Parada-Cabaleiro et al. (2024) en Nunes, Ordanini en Valsesia (2017), is dat je herhaling kunt ‘meten’ door de compressieratio te berekenen. Hoe meer een tekst gecomprimeerd kan worden, hoe meer herhaling erin moet zitten. Dit is uiteraard best een grove maat van herhaling, maar het voordeel is dat je niet hoeft te bepalen of herhaling zich voordoet op woord-, zins- of een nog ander niveau – die vraag is immers lastiger te beantwoorden dan je misschien zou denken en er zitten theoretisch ook nog wel wat haken en ogen aan.
Photo by Jackie Alexander on Unsplash
De compressieberekening in de Lexical Diversity Calculator wordt uitgevoerd met de deflatie-functie uit zlib in plaats van gzcompress, omdat die laatste functie metadata (headers) toevoegt die korte teksten onevenredig ‘straffen’. Die overhead maakt in relatieve zin namelijk een groter deel uit van het geheel van de gecomprimeerde tekst. De resultaten zijn vergelijkbaar met die van de zlib-library in Python die wordt gebruikt door Parada-Cabaleiro et al. (2024) en met de compress-functie in de R-package zlib, die dan ook gebruikt zijn om de ratio’s te evalueren, overigens bij een standaardcompressieniveau van 6 (1-9).
In de nabije toekomst wil ik ook het Lempel-Ziv-Welch-algoritme implementeren, zoals dat wordt gebruikt in het onderzoek waarover het Nature-artikel van Parada-Cabaleiro et al. (2024) gaat. Wordt vervolgd dus.