Нормализованное облако сравнения
Помните об «инфляции оценок» показателей тональности в отзывах на жильё? Иногда полезно нормализовать оценки относительно нуля и только затем разбить корпус на подмножества. Это означает, что некоторые ранее позитивные комментарии могут оказаться в негативном разделе — и наоборот, поскольку среднее значение теперь сдвинуто к нулю. В этом упражнении вы нормализуете оценки и заново построите 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")
)