НачатьНачать бесплатно

Нормализованное облако сравнения

Помните об «инфляции оценок» показателей тональности в отзывах на жильё? Иногда полезно нормализовать оценки относительно нуля и только затем разбить корпус на подмножества. Это означает, что некоторые ранее позитивные комментарии могут оказаться в негативном разделе — и наоборот, поскольку среднее значение теперь сдвинуто к нулю. В этом упражнении вы нормализуете оценки и заново построите comparison.cloud(). Устранение «инфляции оценок» может помочь выявить дополнительные закономерности.

Ранее вы применяли polarity() к столбцу bos_reviews$comments и строили comparison.cloud(). В этом упражнении вы сначала применяете scale() к результату, а затем строите comparison.cloud(). Посмотрите, изменится ли визуализация!

Поскольку это во многом повторительное упражнение, большая часть кода уже написана — просто подставьте нужные объекты и параметры!

Это упражнение является частью курса

Анализ тональности в R

Посмотреть курс

Инструкции к упражнению

  • Просмотрите фрагмент предзагруженного объекта bos_pol$all, используя индексацию [1:6,1:3].
  • Добавьте новый столбец scaled_polarity, применив scale() к столбцу показателей тональности bos_pol$all$polarity.
  • Для позитивных комментариев примените subset() по условию, что новый столбец bos_reviews$scaled_polarity больше (>) нуля.
  • Для негативных комментариев примените subset() по условию, что новый столбец bos_reviews$scaled_polarity меньше (<) нуля.
  • Создайте pos_terms, применив paste() к pos_comments.
  • Создайте neg_terms, применив paste() к neg_comments.
  • Объедините свёрнутые документы pos_terms и neg_terms в единый корпус all_terms.
  • Следуя стандартному рабочему процессу tm, вложите VectorSource() внутрь VCorpus(), применив их к all_terms.
  • Создайте TermDocumentMatrix() на основе объекта all_corpus. Обратите внимание: это TDM с весами TfIdf и базовыми функциями очистки.
  • Преобразуйте all_tdm в матрицу all_tdm_m с помощью as.matrix(). Затем переименуйте столбцы в уже готовом коде: "positive" и "negative".
  • И наконец! Примените comparison.cloud() к матрице all_tdm_m. Обратите внимание на наиболее частотные негативные слова — возможно, они раскроют неожиданную закономерность!

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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")
)
Редактировать и запускать код