DTM vs. matrice tidytext
Il tidyverse è una raccolta di pacchetti R che condividono le stesse filosofie e sono progettati per lavorare insieme. In questo capitolo vedrai alcune funzioni tidy per manipolare i dati. In questo esercizio confronterai un DTM con un data frame di testo in formato tidy chiamato tibble.
Nel tidyverse, ogni osservazione corrisponde a una singola riga di un data frame. Questo rende più semplice lavorare in pacchetti diversi, dato che la struttura dati di base è la stessa. Parti di questo corso si basano ampiamente sul pacchetto tidytext, che usa proprio questa organizzazione dei dati.
Per esempio, potresti già conoscere l'operatore %>% del pacchetto magrittr. Questo passa l'oggetto alla sua sinistra come primo argomento della funzione alla sua destra.
Nell'esempio qui sotto, stai passando l'oggetto data a function1(). Nota che le parentesi sono vuote. Il risultato viene poi passato a function2(). Nell'ultima funzione non devi aggiungere l'oggetto data perché è stato inoltrato dall'output di function1(). Aggiungi però un parametro fittizio, some_parameter, impostato a TRUE. Queste pipe, una dopo l'altra, creano infine l'object.
object <- data %>%
function1() %>%
function2(some_parameter = TRUE)
Per usare l'operatore %>%, non è strettamente necessario caricare il pacchetto magrittr, perché è disponibile anche in dplyr.
dplyr contiene anche le funzioni inner_join() (che vedrai meglio più avanti) e count() per contare i dati. L'ultima funzione di cui avrai bisogno è mutate() per creare nuove variabili o modificare quelle esistenti.
object <- data %>%
mutate(new_Var_name = Var1 - Var2)
oppure per modificare una variabile
object <- data %>%
mutate(Var1 = as.factor(Var1))
Userai anche la funzione pivot_wider() di tidyr per organizzare i dati con ogni riga corrispondente a una riga del libro e i valori positivi e negativi come colonne.
| index | negative | positive |
|---|---|---|
| 42 | 2 | 0 |
| 43 | 0 | 1 |
| 44 | 1 | 0 |
Per trasformare un DTM in formato tidy usa tidy() del pacchetto broom.
tidy_format <- tidy(Document_Term_Matrix)
Questo esercizio utilizza un testo tratto dalla tragedia greca, Agamemnon. Agamemnon è una storia di infedeltà coniugale e omicidio. Puoi scaricarne una copia qui.
Questo esercizio fa parte del corso
Sentiment Analysis in R
Istruzioni dell'esercizio
Abbiamo già creato un DTM pulito chiamato ag_dtm per questo esercizio.
- Crea
ag_dtm_mapplicandoas.matrix()aag_dtm. - Usando le parentesi,
[e], indica inag_dtm_mla riga2206. - Applica
tidy()aag_dtm. Chiama il nuovo oggettoag_tidy. - Esamina
ag_tidyalle righe[831:835, ]per confrontare il formato tidy. Vedrai una parola in comune con la parte esaminata diag_dtm_mal punto 2.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
# 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[___, ]