Handleiding

Achtergrond

Nadat ik in 2018 een belangrijk document had geschreven was ik nieuwsgierig naar twee specifieke statistieken ervan: hoeveel unieke woorden bevatte het, en hoe vaak kwam elk van deze unieke woorden voor? Bovendien wilde ik precies weten wat deze woorden waren. Tot slot wilde ik dat de analyse onderscheid kon maken tussen woorden in twee verschillende talen talen.

Ik schreef mijn document in Microsoft® Word, dat een aantal eenvoudige statistieken kan leveren (aantal pagina's, woorden, karakters, alinea's en regels). Hoewel interessant, was dit niet wat ik zocht. Nadat ik online naar tools had gezocht en niks vond die aan mijn behoeften voldeed, besloot ik mijn eigen tool te schrijven. Ik noemde het Word Stats, aangezien ik op zoek was naar statistieken van een Word document. Toen ik dat document probeerde te analyseren in mijn software, bleek de analyse extreem traag te zijn. Nadat optimalisatiepogingen nergens toe leidden besloot ik me in plaats daarvan te richten op het analyseren van platte tekst documenten, met goede resultaten.

Word Stats is zowel beschikbaar als een Windows app en als de web app die je nu gebruikt; beide zijn gratis. Deze handleiding legt uit hoe de web app werkt.

Interfacetaal

De interfacetaal, d.w.z. de taal waarin je de website leest, wordt geselecteerd via het taalmenu bovenaan de pagina. Open het menu en kies English, Nederlands, Deutsch of Español. Na het selecteren van een taal keer je terug naar de startpagina en wordt de interface direct bijgewerkt. Het wordt aanbevolen om de gewenste interfacetaal te selecteren voordat je een analyse uitvoert.

Definities

Het Engelstalige woord character (in informatie-technische zin) wordt niet vertaald als teken maar als karakter. Als het onderdeel van een samengestelde woord is dan wordt echter wel teken gebruikt; bv., koppelteken in plaats van koppelkarakter.

Omdat er geen éénduidig Nederlands equivalent is wordt het Engelstalige woord token (ook in informatie-technische zin) niet vertaald en blijft hetzelfde. Voor ons doel betekent het tekenreeks omgeven door spaties; de spaties zijn geen onderdeel van het token.

Opties

Na het uploaden van een bestand wordt een nieuwe pagina geopend waar verschillende opties kunnen worden ingesteld om de analyse aan te sturen.

  • De primaire en optionele secundaire analysetaal. Word Stats is tweetalig, hetgeen betekent dat het woorden van twee verschillende talen in één document kan herkennen. De beschikbare analysetalen zijn Duits, Engels, Frans, Italiaans, Nederlands, Portugees en Spaans, waarbij verschillende landen en verschillende functies worden ondersteund, zoals in onderstaand overzicht.

De standaard primaire analysetaal volgt de geselecteerde interfacetaal: Engels (VS), Nederlands (NL), Duits (DE) of Spaans. Deze kan indien nodig worden gewijzigd. Opmerking: in de Word Stats Windows-app kunnen extra talen worden geïnstalleerd.

  • Afbrekingsinstellingen.

    Afbrekingsregels verschillen per taal en kunnen in sommige gevallen worden aangepast. Met name het aantal letters vóór het eerste en na het laatste koppelteken kan worden aangepast, onafhankelijk voor samengestelde en niet-samengestelde woorden. Als dit wordt ondersteund voor de geselecteerde taal, wordt de standaardinstelling getoond. Deze kan worden gewijzigd; opties zijn 2 of 3. Als de afbreekinstellingen voor de geselecteerde taal niet kunnen worden gewijzigd, worden de selectie-vakjes grijs weergegeven en uitgeschakeld.

    Als je niet weet of en hoe je deze instellingen moet wijzigen, is het aan te raden om de standaardinstellingen te gebruiken.

  • Woordregels.

    Het is mogelijk om de acceptatie en afwijzing van woorden door de ingebouwde spellingscontrole aan te passen. Dat doe je door een lijst in te voeren van woorden die moeten worden geaccepteerd en/of een lijst met woorden die moeten worden afgewezen onafhankelijk van wat de spellingcontrole daarvan vindt. Door op de beletselteken (...) knop na Woorden accepteren en Woorden weigeren te drukken opent of verbergt u het tekstvak waar deze lijsten kunnen worden ingevoerd. Elk woord moet op een aparte regel staan en mag alleen letters, koppeltekens en een apostrof bevatten. Regels die hier niet aan voldoen en lege regels worden genegeerd. Als een woord zowel in de acceptatie- als in de afwijs-lijst voorkomt dan wordt het geaccepteerd. De woordenlijsten zijn hoofdletterongevoelig.

  • Decimale en duizendtallenscheidingstekens. Dit verwijst naar de karakters die duizendtallen en decimalen scheiden in getallen, die kunnen verschillen per taal. Bijvoorbeeld, 1.234.567,89 wordt in het Engels geschreven als 1.234.567,89. De scheidingstekens zijn standaard ingesteld op de geselecteerde primaire taal maar kunnen worden gewijzigd.
  • Optionele analyses.
    • Voetnoten verwerken. Indien geselecteerd, probeert Word Stats voetnootverwijzingen te herkennen en deze te negeren in het aantal getallen.
    • Hyperlinks verwerken. Indien geselecteerd, detecteert en telt Word Stats hyperlinks, verwijdert ze uit de tekst en slaat nieuwe hyperlinks op in de lijst van unieke hyperlinks.
    • Inhoudsopgave verwerken. Indien geselecteerd, controleert Word Stats of een bepaalde regel deel uitmaakt van de inhoudsopgave en sluit paginanummers uit van het aantal getallen als dat zo is. Deze functie is alleen beschikbaar als de primaire taal Engels is.
Analyse

Na het uploaden van een bestand en het instellen van de opties, kan de analysetaak worden gestart door op Begin analyse t drukken. Mochten op dat moment analyses van andere gebruikers worden uitgevoerd dan wacht je taak totdat deze zijn voltooid; het aantal taken dat nog vóór je is wordt aangegeven. Er verschijnt een bericht Analyseren zodra je taak aan de beurt is en het zou slechts enkele seconden moeten duren voordat deze is voltooid en de pagina Resultaten verschijnt.

Bijlage B geeft een gedetailleerde beschrijving van Word Stats' analysealgoritme.

Resultaten

De Resultaten-pagina geeft een samenvatting van de statistieken die tijdens de analyse zijn verzameld. De afbeelding hieronder toont de resultaten van de Engelstalige analyse van de volledige tekst van The Great Gatsby met standaardinstellingen.

Voor de leesbaarheidscijfers zijn hyperlinks naar de overeenkomstige Wikipedia-artikelen toegevoegd ter referentie.

De statistieken kunnen worden gedownload als bestand statistieken.csv. Aanvullende bestanden geven details; het .csv-formaat maakt het eenvoudig om ze te openen in (bijvoorbeeld) Microsoft® Excel. Bij The Great Gatsby blijvende zijn de bovenste 10 rijen van unieke Engelse woorden.csv, wanneer gesorteerd op Lettergrepen en vervolgens op (woord)Lengte in aflopende volgorde bijvoorbeeld:

De bovenste 10 rijen van ditzelfde bestand, gesorteerd op (woord)Lengte in aflopende volgorde en vervolgens alfabetisch op woord, zijn:

En dit zijn de bovenste 10 rijen gesorteerd op Aantal in aflopende volgorde:

Gesorteerd op Lengte en daarna op lettergrepen in aflopende volgorde zijn de bovenste rijen van unieke andere woorden.csv, waarin de woorden staan die niet herkend werden als geldige Engelstalige woorden, de volgende:

Merk op dat je Word Stats deze woorden kunt laten herkennen en meetellen door ze toe te voegen aan de Accept-lijst.

Tot slot kun je (bijvoorbeeld) Microsoft® Excel gebruiken om grafieken zoals deze te maken, beide uit unieke Engelse woorden.csv:

Mocht je nog een analyse willen doen, druk dan op Start om opnieuw te beginnen.

Discussie

Word Stats is oorspronkelijk ontwikkeld voor het analyseren van Microsoft® Word-documenten die als platte tekst zijn opgeslagen. Hoewel het tweetalige analyses ondersteunt en meerdere vooraf geïnstalleerde talen voor meerdere landen heeft, is het voornamelijk getest met Engels (Verenigde Staten) en Nederlands (Nederland). Er is niet beoordeeld hoe goed de analyse zich generaliseert naar tekstbestanden van andere bronnen of hoe goed de tool werkt met andere talen. De web app wordt gedeeld in de hoop dat deze voldoende bruikbaar is.

Hoewel Word Stats gericht is op het analyseren van documenten die min of meer compleet zijn, en als zodanig geen spellingcontrole is, kan het inspecteren van de woordenlijsten gegenereerd door een analyse, met name de lijsten van andere woorden en van niet-woorden, interessante inzichten opleveren; dit leidde bijvoorbeeld tot meerdere verbeteringen van het meertalige document dat werd gebruikt voor testdoeleinden.

Tot slot is een leuk neveneffect dat je een document kunt analyseren in een andere taal dan waarin het is geschreven. Bijvoorbeeld, terwijl 5.701 unieke woorden worden herkend bij het analyseren van The Great Gatsby fragment in het Engels, worden er 1.112 gevonden bij het analyseren in het Frans en 1.158 bij het analyseren in het Nederlands.

Bijlage A. Tekstbestand voorbereiding

Hoewel tekstbestanden op vele manieren gemaakt kunnen worden, is Word Stats gebouwd rond Microsoft® Word documenten die geëxporteerd worden als platte tekst bestanden. De procedure voor dit exporteren wordt hier beschreven. Deze begint met het openen van een Word document, Bestand --> Opslaan als (of: Bestand --> Een kopie opslaan) te selecteren en vervolgens Tekst zonder opmaak (.txt) te kiezen uit de keuzelijst bovenaan. Na op Opslaan te drukken verschijnt het volgende dialoogvenster:

Goede resultaten zijn bereikt door Andere codering en dan Unicode (UTF-8) te kiezen, zoals hieronder weergegeven.

Word converteert elke alinea naar een enkele regel tekst; dit is de indeling die Word Stats gebruikt voor het tellen van alinea's. Voetnootnummers worden geconverteerd van voorbeeld.12 naar voorbeeld.12 waarbij de punt elk leesteken kan zijn. Word Stats kan deze nummers - die elk twee keer voorkomen, één keer als verwijzing en één keer met de voetnoottekst - herkennen en uitsluiten van de getallentelling. Het kan evenzo getallen herkennen en negeren die gekoppeld zijn aan een inhoudsopgave.

Natuurlijk zijn er vele andere manieren om een tekstbestand te maken. Het is aan de gebruikers om ervoor te zorgen dat een bestand dat voor analyse wordt geüpload inderdaad is wat ze willen analyseren. Het werken met PDF-bestanden wordt kort besproken in Help/PDF to Text.

  1. Met behulp van Ude.NetStandard kan Word Stats automatisch de volgende tekstcoderingen / karakterformaten detecteren en ondersteunen: ASCII, UTF-8, UTF-16 Big en Little Endian, en UTF-32 Little Endian.
Bijlage B. Analyse-algoritme

De Word Stats-analyse verloopt als volgt.

  1. Splits de tekst op in regels gescheiden door nieuweregelkarakters; Windows (CR LF), Unix (LF) en macOS (CR) formaten worden ondersteund. Elke regel wordt dan als volgt verwerkt.

  2. Sla lege regels over.

  3. Tel het aantal karakters, letters, cijfers, spaties en tabs in de regel.

  4. Definieer een regel met een lengte die niet gelijk is aan nul als een nieuwe alinea.

  5. Als Inhoudsopgave verwerken is ingeschakeld dan wordt gecontroleerd of de regel deel uitmaakt van de inhoudsopgave, die wordt gedefinieerd als beginnend met de tekst Table of Contents (TOC) en doorloopt zolang de volgende regels eindigen met een geheel getal. TOC-verwerking betekent slechts dat TOC-nummers worden genegeerd in de getallentelling. Deze functie is momenteel alleen beschikbaar als de primaire taal Engels is.

  6. Als Hyperlinks verwerken is ingeschakeld, detecteer en verwijder dan alle hyperlinks van de regel. Tel de hyperlinks en sla nieuwe op in een lijst. Hyperlinks worden gedefinieerd als een tekenreeks zonder tabs of spaties die eindigt met een punt (.) gevolgd door een topleveldomeinnaam, optioneel gevolgd door een backslash (/), gevolgd door een spatie of door een leesteken (, . : ; ! ? ...). De topleveldomeinnamen waarmee rekening wordt gehouden zijn .com, .edu, .gov, .net, .org en alle 247 landdomeinen. Voorbeelden van geldige hyperlinks zijn microsoft.com en https://www.sunnysideupsoftware.com/.

  7. Als Voetnoten verwerken is ingeschakeld, zoek en tel dan alle voetnootnummers, verwijder ze van de regel en voeg ze toe aan een lijst. Deze getallen worden gedefinieerd door een leesteken gevolgd door een geheel getal gevolgd door een spatie of een nieuwe regel; bijvoorbeeld .6 of ;7 . Word Stats zorgt ervoor dat deze tekens geen deel uitmaken van een legitiem getal, zoals 12.6. Voetnootverwerking betekent simpelweg dat de getallen die herkend worden als voetnootverwijzingen genegeerd worden in de getallentelling.

  8. Maak de regel schoon door

    1. tekens zonder lengte (bv. streepje met lengte nul, spatie met lengte nul) weg te laten;
    2. leestekens zonder punt aan het einde van een zin (? ! ...) te vervangen door een punt;
    3. punten gevolgd door een dubbel aanhalingsteken te vervangen door een punt (als hulp bij het segmenteren van zinnen);
    4. speciale spaties (bv. dunne spatie, haar-spatie) te vervangen door een gewone spatie;
    5. schuine strepen en tabs te vervangen door spaties (bijvoorbeeld 'ja/nee' wordt 'ja nee' en daarna als twee aparte woorden verwerkt);
    6. speciale koppeltekens (bv. streepjes zonder onderbreking, liggend streepje, en-streepje, em-streepje, horizontaal streepje) te vervangen door een streepje omgeven door spaties;
    7. opeenvolgende spaties te vervangen door een enkele spatie.
  9. Splits de regel op in zinnen. Deze zingrensdetectie, ook wel zinsegmentatie genoemd, is een niet-triviale bewerking die met wordt name bemoeilijkt door afkortingen die punten bevatten. Door simpelweg regels te splitsen wanneer een punt gevolgd door een spatie wordt aangetroffen, zou een zin als “Prof. Dr. XYZ is geboren in G.B. maar woont sinds 2010 in de V.S.” worden geteld als vijf zinnen. Hoewel perfecte segmentatie misschien niet mogelijk is, gebruikt Word Stats PragmaticSegmenterNet -- een C# port van Pragmatic Segmenter -- om meertalige zinsgrensdetectie van hoge kwaliteit te bereiken. Merk op dat PragmaticSegmenterNet niet alle talen en landen ondersteunt die door Word Stats worden ondersteund; zie de tabel hierboven. Als segmentatie beschikbaar is dan worden de regels voor de primaire taal gebruikt; als deze niet beschikbaar is dan worden zinsstatistieken uitgeschakeld.

  10. Splits elke zin, eventueel gewijzigd zoals hierboven beschreven, in een lijst van tokens: tekenreeksen gescheiden door spaties. De resulterende tokens worden vervolgens als volgt verwerkt.

  11. Als een token geen karakters bevat, werk dan de Lege tokens telling bij.

  12. Als een token niet leeg is, oftewel karakters bevat, maak het dan schoon door

    1. gekrulde aanhalingstekens (‘ en ’) te vervangen door rechte aanhalingstekens (');
    2. de volgende karakters te verwijderen: " “ ” ¡ ! ¿ ? : ; . , ... ( )
    3. koppeltekens (-) vóór en na het token en enkele aanhalingstekens (') te verwijderen zodanig dat samengestelde woorden met streep (bijvoorbeeld kant-en-klaar) en apostrofs (bijvoorbeeld baby’s) behouden blijven.
  13. Controleer of het token een geldig nummer is. Als dat zo is, werk dan de getallentelling bij en sla het getal op in een lijst als het nieuw is. Ga verder met het volgende token in de lijst.

  14. Als het token géén getal is, maak er dan een kopie van in kleine letters.

  15. Controleer of het token met kleine letters een geldig woord is, hetgeen gedefinieerd is als een letterreeks met of zonder koppeltekens en maximaal één apostrof ('). Samentrekkingen (woorden met een apostrof; bijvoorbeeld, zo'n, auto's) worden als één woord geteld.

  16. Verwerk elk geldig woord als volgt:

    1. Werk het totale Aantal woorden en het aantal Woorden per zin bij.

    2. Als het woord meer dan één letter heeft en ofwel de originele versie of de versie met kleine letters door de spellingcontrole van de primaire taal komt of de versie met kleine letters voorkomt in de Woorden om te accepteren lijst van de primaire taal of anders het woord niet voorkomt in de Woorden om te weigeren lijst van de primaire taal, of het woord slechts één letter heeft en voorkomt in de Woorden om te accepteren lijst van de primaire taal:

      1. Tel het woord mee voor het Aantal woorden in de primaire taal.
      2. Als het woord nieuw (uniek) is, voeg het dan toe aan de Unieke woorden lijst voor de primaire taal.
      3. Als het woord geen koppeltekens bevat, tel het dan op bij de Woorden zonder koppelteken, anders tel het op bij de Woorden met koppelteken voor de primaire taal.
      4. Bepaal het aantal lettergrepen in het woord. Voor woorden die koppeltekens bevatten, worden de delen tussen koppeltekens apart geanalyseerd. Het resultaat wordt opgeteld bij het Aantal lettergrepen dat tot nu toe is gevonden.
      5. Werk de statistieken voor Letters per woord en Lettergrepen per woord bij.
    3. Herhaal anders stap 16.2 voor de secundaire taal als die is geselecteerd.

    4. Als het woord in geen van beide talen wordt herkend en ten minste twee karakters heeft, herhaal stap 16.2 voor Andere woorden.

  17. Als het token noch een getal noch een geldig woord is, werk dan de telling Andere tokens bij en sla het op in de lijst met Unieke andere tokens als het nieuw is.

  18. Werk aan het eind van elke zin de statistieken voor Zinnen, Woorden per zin en Zinnen per alinea bij. Een zin kan zo kort kan zijn als een enkel woord.

  19. Werk aan het eind van elke regel de statistieken voor Alinea's bij. Een alinea kan zo kort zijn als een enkele zin.

  20. Als alle regels verwerkt zijn: als Voetnoten verwerken geselecteerd is, werk dan de lijst van Unieke nummers bij door één af te trekken van het aantal keren dat elk nummer voorkomt in de lijst van Voetnootnummers, en verwijder vermeldingen die uiteindelijk nul keer voorkomen.

  21. Als de primaire taal Engels is en er geen secundaire taal is geselecteerd, bereken dan de leesbaarheid.

  22. Sla de geselecteerde resultaten op in door komma's gescheiden bestanden (*.csv). Omdat andere tokens komma's kunnen bevatten die het .csv-formaat zouden verstoren, wordt het bestand unieke afgekeurde woorden (d.w.z. andere tokens) opgeslagen met tabsplitsing (.tsv).