tidytext_woord <- haagse_raadsvragen %>%
unnest_tokens(input = text, output = text,
token = "words")18 Prepareren van tekstdata
Je hebt je Word- of PDF-bestanden met de kennis uit de vorige paragraaf ingelezen. Maar vóór je aan de slag kunt gaan met een tekstanalyse, zul je de dataset eerst voor deze analyse moeten prepareren. Afhankelijk van de toepassing of gebruikte package kan dit op verschillende manieren, maar wij maken vooral gebruik van de package tidytext dat de ingelezen tekst omzet in het zogenoemde tidy text format. Hierbij wordt elke token een record (rij) in de dataset . Meestal is de token een woord, maar het kan ook een n-gram1, zin, paragraaf of zelfs een hele pagina zijn.
Het omzetten van een ingelezen tekst naar het tidy text format, gaat met de functie unnest_tokens(). Voor deze paragraaf maken we gebruik van het in Paragraaf 17.3 gemaakte object haagse_raadsvragen dat op basis van PDF-bestanden is gemaakt. Het omzetten van uit Word-document ingelezen tekst gaat op precies dezelfde manier. We geven hier een aantal voorbeelden:
18.1 woord
Je ziet dat de Tibble inhoud_pdf_tibble() die bestond uit 5 records - één record per pagina - met de functie unnest_tokens() met het argument token = "words" is omgezet in een Tibble met 200471 records: één record per woord. Hieronder zie je de eerste 10 records:
# A tibble: 10 × 4
bestandsmap bestandsnaam text pagina
<chr> <chr> <chr> <int>
1 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… geme… 1
2 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… ris 1
3 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… numm… 1
4 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… 3142… 1
5 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… schr… 1
6 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… vrag… 1
7 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… fina… 1
8 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… reva 1
9 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… indi… 1
10 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… mari… 1
Als je goed naar de dataset kijkt vallen er een aantal zaken op:
- hoofdletters zijn omgezet in kleine letters. Met het argument
to lower = FALSEkun je eventueel zorgen dat dit niet gebeurt; - alle leestekens zijn verdwenen;
- alle overige kolommen - waaronder het pagina-nummer - is nog steeds in de nieuwe Tibble aanwezig.
18.2 n-gram
tidytext_ngrams <- haagse_raadsvragen %>%
unnest_tokens(input = text, output = text,
token = "ngrams", n = 2)Je ziet dat de Tibble haagse_raadsvragen met de functie unnest_tokens() met het argument token = "ngrams" nu is omgezet in een Tibble met 199710 records: één record per - in dit geval - 3-gram. Hieronder zie je de eerste 5 records:
# A tibble: 10 × 4
bestandsmap bestandsnaam text pagina
<chr> <chr> <chr> <int>
1 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… geme… 1
2 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… ris … 1
3 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… numm… 1
4 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… 3142… 1
5 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… schr… 1
6 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… vrag… 1
7 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… fina… 1
8 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… reva… 1
9 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… indi… 1
10 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine Re… mari… 1
De N-gram in tidytext_ngrams lijkt erg op tidytext_woord, alleen bepaal je nu met het argument n het aantal woorden dat in een N-gram terecht komt én daarmee hoe groot tidytext_ngrams wordt.
18.3 zin
tidytext_zin <- haagse_raadsvragen %>%
unnest_tokens(input = text, output = text,
token = "sentences")Je ziet dat de Tibble inhoud_pdf_tibble() met de functie unnest_tokens() met het argument token = "sentences" nu is omgezet in een Tibble met 12197 records: één record per zin. Hieronder zie je de eerste 5 records:
# A tibble: 5 × 4
bestandsmap bestandsnaam text pagina
<chr> <chr> <chr> <int>
1 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine ReV… geme… 1
2 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine ReV… het … 1
3 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine ReV… over… 1
4 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine ReV… 1) k… 1
5 _bestanden/raadsvragen 314287_RIS314287 Financieringsmachine ReV… 2) z… 1
Als je goed kijkt zullen je een aantal zaken opvallen:
- alle
linebreaksen dubbele spaties zijn uit de tekst gehaald; - De leestekens zijn nu níet verdwenen. De functie gebruikt een punt (
.) als eindpunt van een zin.
18.4 paragraaf
tidytext_paragraaf <- haagse_raadsvragen %>%
unnest_tokens(input = text, output = text,
token = "paragraphs")Je ziet dat de Tibble inhoud_pdf_tibble() met de functie unnest_tokens() met het argument token = "paragraphs" nu is omgezet in een Tibble met 7058 records: één record per paragraaf. Hieronder zie je de eerste 10 records:
Het meest opvallende is dat een dubbele linebreak is gebruikt om een paragraaf te detecteren.
Een n-gram is een opeenvolgende verzameling van n aantal woorden, waarbij je de n kunt vervangen voor een positief getal. Als je de tekst
dit is een mooi boekwilt omzetten in 2-gram’s, krijg je de volgende elementen:dit is,is een,een mooi,mooi boek. N-grams worden gebruikt om combinaties van woorden te analyseren.↩︎