Aan de slagGa gratis aan de slag

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

Cursus bekijken

Oefeninstructies

We hebben voor deze oefening al een opgeschoonde DTM gemaakt, ag_dtm.

  • Maak ag_dtm_m door as.matrix() toe te passen op ag_dtm.
  • Indexeer met haken, [ en ], ag_dtm_m naar rij 2206.
  • Pas tidy() toe op ag_dtm. Noem het nieuwe object ag_tidy.
  • Bekijk ag_tidy op rijen [831:835, ] om het tidy-formaat te vergelijken. Je ziet een woord terugkomen uit het onderzochte deel van ag_dtm_m in 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[___, ]
Code bewerken en uitvoeren