Zacznij terazZacznij za darmo

Skalowana chmura porównawcza

Pamiętasz „inflację ocen" w wynikach polaryzacji dla recenzji wynajmu? Czasem inny sposób na wyciągnięcie wniosków polega na przeskalowaniu wyników z powrotem do 0, a następnie podzieleniu korpusu na podzbiory. Oznacza to, że niektóre wcześniej pozytywne komentarze mogą trafić do podzbioru negatywnego (lub odwrotnie), ponieważ średnia zostaje przesunięta do 0. W tym ćwiczeniu przeskalojesz wyniki, a następnie ponownie wyrenderujesz wykres comparison.cloud(). Usunięcie „inflacji ocen" może ujawnić dodatkowe spostrzeżenia.

Wcześniej zastosowałeś/aś polarity() do kolumny bos_reviews$comments i utworzyłeś/aś comparison.cloud(). W tym ćwiczeniu przed stworzeniem chmury zastosujesz scale() na wynikach polaryzacji. Sprawdź, czy wizualizacja pokaże coś nowego!

To głównie ćwiczenie powtórkowe – większość kodu jest już gotowa. Wystarczy, że uzupełnisz odpowiednie obiekty i parametry!

To ćwiczenie jest częścią kursu

Analiza sentymentu w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Przejrzyj fragment wczytanego obiektu bos_pol$all, indeksując go jako [1:6,1:3].
  • Dodaj nową kolumnę o nazwie scaled_polarity, stosując scale() do kolumny z wynikami polaryzacji bos_pol$all$polarity.
  • Dla pozytywnych komentarzy użyj subset(), wybierając wiersze, w których nowa kolumna bos_reviews$scaled_polarity jest większa niż (>) zero.
  • Dla negatywnych komentarzy użyj subset(), wybierając wiersze, w których nowa kolumna bos_reviews$scaled_polarity jest mniejsza niż (<) zero.
  • Utwórz pos_terms, stosując paste() do pos_comments.
  • Utwórz neg_terms, stosując paste() do neg_comments.
  • Połącz oba zagregowane dokumenty – pos_terms i neg_terms – w jeden korpus o nazwie all_terms.
  • Postępując zgodnie ze standardowym przepływem pracy w tm, zagnieździj VectorSource() wewnątrz VCorpus() i zastosuj do all_terms.
  • Utwórz TermDocumentMatrix() na podstawie obiektu all_corpus. Zwróć uwagę, że jest to TDM ważony TfIdf z podstawowymi funkcjami czyszczenia.
  • Przekształć all_tdm na all_tdm_m za pomocą as.matrix(). Następnie w istniejącym kodzie zmień nazwy kolumn na "positive" i "negative".
  • Na koniec! zastosuj comparison.cloud() do macierzy all_tdm_m. Zwróć uwagę na nowe, najczęściej występujące negatywne słowa – może uda się odkryć coś nieoczekiwanego!

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# Review
___

# Scale/center & append
bos_reviews$___ <- scale(___)

# Subset positive comments
pos_comments <- subset(bos_reviews$comments, ___)

# Subset negative comments
neg_comments <- subset(bos_reviews$comments, ___)

# Paste and collapse the positive comments
pos_terms <- paste(___, collapse = " ")

# Paste and collapse the negative comments
neg_terms <- paste(___, collapse = " ")

# Organize
all_terms<- c(___, ___)

# VCorpus
all_corpus <- ___(VectorSource(___))

# TDM
all_tdm <- TermDocumentMatrix(
  ___, 
  control = list(
    weighting = weightTfIdf, 
    removePunctuation = TRUE, 
    stopwords = stopwords(kind = "en")
  )
)

# Column names
___ <- as.matrix(___)
colnames(all_tdm_m) <- c("___", "___")

# Comparison cloud
comparison.cloud(
  ___, 
  max.words = 100,
  colors = c("darkgreen", "darkred")
)
Edytuj i uruchom kod