DTM vs. tidytext-matris
Tidyverse är en samling R-paket som delar gemensamma principer och är utformade för att fungera tillsammans. Det här kapitlet tar upp några tidy-funktioner för att bearbeta data. I den här övningen jämför du en DTM med en tidy text-dataram som kallas tibble.
Inom tidyverse är varje observation en enskild rad i en dataram. Det gör det mycket enklare att arbeta i olika paket, eftersom den grundläggande datastrukturen är densamma. Delar av den här kursen bygger till stor del på paketet tidytext, som använder den här dataorganisationen.
Du är kanske redan bekant med operatorn %>% från paketet magrittr. Den skickar vidare ett objekt på vänster sida som första argument till funktionen på höger sida.
I exemplet nedan skickar du vidare objektet data till function1(). Lägg märke till att parenteserna är tomma. Resultatet skickas sedan vidare till function2(). I den sista funktionen behöver du inte ange data-objektet, eftersom det redan skickats vidare från utdata från function1(). Däremot anger du en fiktiv parameter, some_parameter, som TRUE. Dessa pipe-vidarebefordran skapar till slut object.
object <- data %>%
function1() %>%
function2(some_parameter = TRUE)
För att använda operatorn %>% behöver du inte nödvändigtvis läsa in paketet magrittr, eftersom den också finns tillgänglig i paketet dplyr.
dplyr innehåller även funktionerna inner_join() (som du lär dig mer om senare) och count() för att räkna data. Den sista funktionen du behöver är mutate() för att skapa nya variabler eller ändra befintliga.
object <- data %>%
mutate(new_Var_name = Var1 - Var2)
eller för att ändra en variabel
object <- data %>%
mutate(Var1 = as.factor(Var1))
Du kommer också att använda funktionen pivot_wider() från tidyr för att organisera data så att varje rad motsvarar en rad i boken, med positiva och negativa värden som kolumner.
| index | negative | positive |
|---|---|---|
| 42 | 2 | 0 |
| 43 | 0 | 1 |
| 44 | 1 | 0 |
För att konvertera en DTM till tidy-format använder du tidy() från paketet broom.
tidy_format <- tidy(Document_Term_Matrix)
Den här övningen använder text från den grekiska tragedin Agamemnon. Agamemnon är en berättelse om otrohet och mord. Du kan ladda ned en kopia här.
Den här övningen är en del av kursen
Sentimentanalys i R
Övningsinstruktioner
Vi har redan skapat en ren DTM som heter ag_dtm för den här övningen.
- Skapa
ag_dtm_mgenom att tillämpaas.matrix()påag_dtm. - Använd hakparenteser,
[och], för att indexeraag_dtm_mtill rad2206. - Tillämpa
tidy()påag_dtm. Kalla det nya objektetag_tidy. - Undersök
ag_tidyvid raderna[831:835, ]för att jämföra tidy-formatet. Du kommer att se ett vanligt ord från den undersökta delen avag_dtm_mi steg 2.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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[___, ]