Разделяй и властвуй: облако сравнения на основе полярности
Теперь, когда вы увидели, как полярность можно использовать для разделения корпуса, давайте попробуем это на практике! Этот код поможет вам разделить корпус по тональности, чтобы изучить информацию в подмножествах, а не в целом.
В вашей R-сессии есть объект oz_pol, созданный путём применения polarity() к тексту «Удивительный волшебник из Страны Оз».
Для удобства мы создали простую пользовательскую функцию pol_subsections(), которая разделяет корпус по значению полярности. Сначала функция принимает фрейм данных, в котором каждая строка — это предложение или документ корпуса. Затем фрейм данных разбивается на подмножества: строки с полярностью больше 0 и строки с полярностью меньше 0. Положительные и отрицательные предложения — то есть предложения с ненулевой полярностью — объединяются с помощью параметра collapse, чтобы все термины сгруппировались в единый корпус. Наконец, два документа объединяются в один вектор из двух отдельных документов.
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)
}
На этом этапе нейтральные предложения исключены, и вы сосредотачиваетесь на организации оставшегося текста. В этом упражнении мы снова используем оператор %>%, чтобы передавать объекты в функции. После простой очистки данных постройте визуализацию с помощью comparison.cloud().
Это упражнение является частью курса
Анализ тональности в R
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
oz_df <- oz_pol$all %>%
# Select text.var as text and polarity
___(text = ___, polarity = ___)
# Apply custom function pol_subsections()
all_terms <- ___(___)
all_corpus <- all_terms %>%
# Source from a vector
___() %>%
# Make a volatile corpus
___()