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
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ącscale()do kolumny z wynikami polaryzacjibos_pol$all$polarity. - Dla pozytywnych komentarzy użyj
subset(), wybierając wiersze, w których nowa kolumnabos_reviews$scaled_polarityjest większa niż (>) zero. - Dla negatywnych komentarzy użyj
subset(), wybierając wiersze, w których nowa kolumnabos_reviews$scaled_polarityjest mniejsza niż (<) zero. - Utwórz
pos_terms, stosującpaste()dopos_comments. - Utwórz
neg_terms, stosującpaste()doneg_comments. - Połącz oba zagregowane dokumenty –
pos_termsineg_terms– w jeden korpus o nazwieall_terms. - Postępując zgodnie ze standardowym przepływem pracy w
tm, zagnieździjVectorSource()wewnątrzVCorpus()i zastosuj doall_terms. - Utwórz
TermDocumentMatrix()na podstawie obiektuall_corpus. Zwróć uwagę, że jest to TDM ważony TfIdf z podstawowymi funkcjami czyszczenia. - Przekształć
all_tdmnaall_tdm_mza pomocąas.matrix(). Następnie w istniejącym kodzie zmień nazwy kolumn na"positive"i"negative". - Na koniec! zastosuj
comparison.cloud()do macierzyall_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")
)