Dziel i rządź: chmura porównawcza na podstawie polaryzacji
Teraz, gdy już wiesz, jak polaryzacja może posłużyć do podziału korpusu, czas to wykorzystać w praktyce! Ten kod przeprowadzi cię przez proces dzielenia korpusu na podstawie sentymentu, dzięki czemu będziesz mógł przyjrzeć się informacjom zawartym w poszczególnych podzbiorach, a nie tylko całości.
W sesji R masz dostępny obiekt oz_pol, utworzony przez zastosowanie polarity() do tekstu „Czarnoksiężnik z Krainy Oz".
Dla uproszczenia przygotowaliśmy prostą funkcję pol_subsections(), która podzieli korpus według wartości polaryzacji. Funkcja przyjmuje ramkę danych, w której każdy wiersz to zdanie lub dokument. Ramka jest filtrowana tak, żeby zachować wyłącznie wiersze z wartością polaryzacji większą lub mniejszą od 0. Następnie zdania pozytywne i negatywne (o niezerowej polaryzacji) są łączone z parametrem collapse, grupując terminy w jeden korpus. Na koniec oba dokumenty są łączone w jeden wektor złożony z dwóch odrębnych dokumentów.
pol_subsections <- function(df) {
x.pos <- subset(df$text, df$polarity > 0)
x.neg <- subset(df$text, df$polarity < 0)
x.pos <- paste(x.pos, collapse = " ")
x.neg <- paste(x.neg, collapse = " ")
all.terms <- c(x.pos, x.neg)
return(all.terms)
}
Na tym etapie pomijasz zdania neutralne i skupiasz się na organizacji pozostałego tekstu. W tym ćwiczeniu ponownie używamy operatora %>%, który przekazuje obiekty do funkcji. Po prostym czyszczeniu danych użyj comparison.cloud(), aby stworzyć wizualizację.
To ćwiczenie jest częścią kursu
Analiza sentymentu w R
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
oz_df <- oz_pol$all %>%
# Select text.var as text and polarity
___(text = ___, polarity = ___)
# Apply custom function pol_subsections()
all_terms <- ___(___)
all_corpus <- all_terms %>%
# Source from a vector
___() %>%
# Make a volatile corpus
___()