DTM versus tidytext-matrix
De tidyverse is een verzameling R-pakketten met een gedeelde filosofie die ontworpen zijn om samen te werken. In dit hoofdstuk behandel je enkele tidy-functies om data te bewerken. In deze oefening vergelijk je een DTM met een tidy-tekstdataframe, een zogeheten tibble.
Binnen de tidyverse is elke observatie één rij in een dataframe. Dat maakt werken in verschillende pakketten veel eenvoudiger, omdat de fundamentele datastructuur hetzelfde is. Delen van deze cursus leunen sterk op het tidytext-pakket, dat deze data-organisatie gebruikt.
Misschien ken je de %>%-operator al uit het magrittr-pakket. Die geeft een object aan de linkerkant door als het eerste argument van de functie aan de rechterkant.
In het onderstaande voorbeeld geef je het object data door aan function1(). Let op dat de haakjes leeg zijn. Dat resultaat wordt vervolgens doorgegeven aan function2(). In de laatste functie hoef je het data-object niet toe te voegen, omdat het is doorgegeven vanuit de output van function1(). Je voegt wel een fictieve parameter toe, some_parameter als TRUE. Deze pipes leveren uiteindelijk het object op.
object <- data %>%
function1() %>%
function2(some_parameter = TRUE)
Om de %>%-operator te gebruiken hoef je niet per se het magrittr-pakket te laden, want hij is ook beschikbaar in het dplyr-pakket.
dplyr bevat ook de functies inner_join() (waar je later meer over leert) en count() om data te tellen. De laatste functie die je nodig hebt is mutate() om nieuwe variabelen te maken of bestaande te wijzigen.
object <- data %>%
mutate(new_Var_name = Var1 - Var2)
of om een variabele te wijzigen
object <- data %>%
mutate(Var1 = as.factor(Var1))
Je gebruikt ook de functie pivot_wider() uit tidyr om de data zo te organiseren dat elke rij een regel uit het boek is en de positieve en negatieve waarden kolommen zijn.
| index | negative | positive |
|---|---|---|
| 42 | 2 | 0 |
| 43 | 0 | 1 |
| 44 | 1 | 0 |
Om een DTM om te zetten naar een tidy-formaat gebruik je tidy() uit het broom-pakket.
tidy_format <- tidy(Document_Term_Matrix)
Deze oefening gebruikt tekst uit de Griekse tragedie, Agamemnon. Agamemnon is een verhaal over overspel en moord. Je kunt hier een kopie downloaden: hier.
Deze oefening maakt deel uit van de cursus
Sentimentanalyse in R
Oefeninstructies
We hebben voor deze oefening al een opgeschoonde DTM gemaakt, ag_dtm.
- Maak
ag_dtm_mdooras.matrix()toe te passen opag_dtm. - Indexeer met haken,
[en],ag_dtm_mnaar rij2206. - Pas
tidy()toe opag_dtm. Noem het nieuwe objectag_tidy. - Bekijk
ag_tidyop rijen[831:835, ]om het tidy-formaat te vergelijken. Je ziet een woord terugkomen uit het onderzochte deel vanag_dtm_min stap 2.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
# As matrix
ag_dtm_m <- ___
# Examine line 2206 and columns 245:250
ag_dtm_m[___, 245:250]
# Tidy up the DTM
ag_tidy <- ___
# Examine tidy with a word you saw
ag_tidy[___, ]