1. Nauka
  2. /
  3. Kursy
  4. /
  5. Analiza sentymentu w R

Connected

ćwiczenie

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ę.

Instrukcje 1/3

undefined XP
    1
    2
    3
  • Wyodrębnij potrzebne dane z oz_pol.
    • Wywołaj select(), deklarując pierwszą kolumnę text jako text.var (surowy tekst), a drugą kolumnę polarity jako wyniki polaryzacji polarity.
  • Zastosuj teraz pol_subsections() na oz_df. Nowy obiekt nazwij all_terms.
  • Aby utworzyć all_corpus, zastosuj VectorSource() na all_terms, a następnie przekaż wynik %>% do VCorpus().