N-gram-extractor

Een n-gram is een aaneengesloten reeks van n woorden uit een tekst. Deze extractor zet je tekst om naar kleine letters, splitst hem bij elke spatie en elk leesteken in woorden en telt vervolgens elk n-gram van de lengte die jij kiest (1 tot en met 8). Het resultaat is een CSV-frequentietabel, gesorteerd van meest naar minst voorkomend: precies de tabel waarop controles van zoekwoorddichtheid in SEO, smoothing van taalmodellen en plagiaatdetectie stoelen.

Zo haal je n-grammen uit een tekst

  1. 1

    Plak je tekst

    Zet er een artikel, een transcript of een producttekst in. Voor redelijke invoer geldt geen lengtelimiet.

  2. 2

    Kies n

    Unigrammen (1), bigrammen (2), trigrammen (3), tot maximaal 8. Eén lengte per keer.

  3. 3

    Extraheren

    De tekst gaat naar kleine letters en wordt in woorden gesplitst; leestekens gelden als scheidingsteken en verdwijnen.

  4. 4

    Lees de frequentietabel

    Elk n-gram verschijnt met het aantal keer dat het voorkomt, gesorteerd op frequentie.

  5. 5

    Kopieer de CSV

    De uitvoer is kommagescheiden (N-gram,Count) en kun je zo in een spreadsheet plakken.

Wat elke n-gramlengte je vertelt

N Naam Toepassing
1 Unigram Zoekwoorddichtheid, thema in kaart brengen
2 Bigram Woordcombinaties (“search intent”, “page speed”), collocaties
3 Trigram Longtailzinnen, kenmerkdetectie
4+ Viergram en langer Detectie van dubbele content, signalen van plagiaat

Hoe de tool je tekst opsplitst

  • Alles gaat naar kleine letters, dus “The” en “the” belanden op dezelfde regel.
  • Een woord is elke aaneengesloten reeks letters, cijfers of apostrofs. Elk ander teken (leestekens, symbolen, regeleindes) geldt als scheidingsteken en verdwijnt.
  • Zinsgrenzen blijven niet bewaard. Het laatste woord van een zin en het eerste woord van de volgende kunnen samen alsnog een n-gram vormen; lees combinaties over een zinsgrens heen dus met een korrel zout. Is dat bezwaarlijk, analyseer dan per zin of per alinea.
  • Stopwoorden blijven staan. Er wordt niets voor je gefilterd: wil je alleen betekenisvolle woordcombinaties, verwijder die regels dan achteraf uit de CSV.
  • Woorden worden gevonden op spaties en leestekens. Het Nederlands scheidt woorden met spaties, dus de tool werkt meteen. Houd er wel rekening mee dat het Nederlands samenstellingen aan elkaar schrijft: wat in het Engels een bigram is (“search intent”), is bij ons vaak één woord (“zoekintentie”), waardoor unigrammen hier meer zeggen. Chinees, Japans en Thai zetten geen spaties tussen woorden: een hele zin komt binnen als één woord en moet je eerst segmenteren (jieba, MeCab, een Thaise woordsplitser).

Wanneer je stopwoorden moet weglaten

Stopwoorden zijn veelvoorkomende functiewoorden: in het Engels “the”, “a”, “of” en “and”, in het Nederlands “de”, “een”, “van” en “en”. Laat je ze staan, dan loopt je bigramlijst vol met ruis als “of the” en “van de”. Deze extractor bewaart ze, dus verwijder die regels uit de export wanneer je betekenisvolle woordcombinaties zoekt, en laat ze staan wanneer je stijl, auteurstoeschrijving of taalmodellen bestudeert, waar functiewoorden juist signaal dragen.

Toepassing binnen SEO

Voor een artikel dat mikt op “nginx config generator”, controleer je:

  • Of je doelbigram en -trigram in de top 20 staan. Staat “nginx config” op plaats 40, dan gebruik je de term waarschijnlijk te weinig.
  • Of je niet aan het stapelen bent. Staat de term met grote voorsprong op nummer 1, dan leest het stuk als spam.
  • Of er semantische buren zijn. Verwante bigrammen als “server block”, “proxy pass” en “ssl certificate” verzekeren zoekmachines ervan dat het onderwerp echt is behandeld.

NLP en academisch gebruik

  • Taalmodellen gebruiken n-gramfrequenties voor smoothing en backoff (Kneser-Ney, Good-Turing).
  • Auteursonderzoek vergelijkt trigramverdelingen tussen mogelijke auteurs.
  • Evaluatie van machinevertaling (BLEU) scoort de n-gramoverlap tussen de kandidaatvertaling en de referentievertaling.

Veelgestelde vragen

Alles van een tweet (waar n-grammen nauwelijks betekenis hebben) tot een boekhoofdstuk. Voor statistisch betrouwbare bigrammen heb je 1.000+ woorden nodig, voor trigrammen 10.000+. Daaronder is de rangschikking ruis.

Hier niet. De tekst gaat vóór het tellen altijd naar kleine letters, dus “The” en “the” (en “Apple” en “apple”) delen één regel in plaats van uiteen te vallen. Er is geen hoofdlettergevoelige modus: moet je eigennamen of code apart houden, markeer ze dan in de tekst voordat je plakt.

Ze werken als woordscheiding en komen nooit ín een n-gram terecht. Ze knippen het telvenster echter niet af: het laatste woord van een zin en het eerste woord van de volgende worden nog steeds samen als bigram geteld. Heb je strikte zinsgrenzen nodig, verwerk zinnen of alinea’s dan apart.

Alleen als je de tekst eerst segmenteert. Woorden worden herkend als reeksen letters en cijfers tussen scheidingstekens, en die talen schrijven zonder spaties tussen de woorden, waardoor een hele zin als één woord binnenkomt. Haal de tekst eerst door een segmenteerder (jieba, MeCab, een Thaise woordsplitser) zodat de woorden door spaties gescheiden zijn, en plak dan het resultaat. Nederlands en andere talen met spaties werken direct.

De tool past er geen toe, dus je filtert na de export. De bekendste Engelse lijst is de set van 179 woorden uit NLTK, die de meeste SEO-tools gebruiken. Snowball, SpaCy en scikit-learn leveren iets andere lijsten. Voor het Nederlands gebruik je de Nederlandse stopwoordenlijst uit NLTK of spaCy.

Gerelateerde tools

Tool beschikbaar in andere talen