Zacznij terazZacznij za darmo

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

Zobacz kurs

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 
  ___()
Edytuj i uruchom kod