# Load necessary libraries
library(tidyverse)
library(tidytext)
library(lubridate)
# Sample text data with dates
feedback <- data.frame(
text = c("I love this product!", "Terrible service.", "Okay experience.",
"Wonderful!", "Worst support ever."),
date = as.Date(c("2024-01-10", "2024-01-12", "2024-01-15", "2024-01-18", "2024-01-20"))
)
# Tokenize, clean, and assign sentiment
data("stop_words")
sentiment_data <- feedback %>%
unnest_tokens(word, text) %>%
anti_join(stop_words, by = "word") %>%
inner_join(get_sentiments("bing"), by = "word") %>%
count(date, sentiment) %>%
pivot_wider(names_from = sentiment, values_from = n, values_fill = 0) %>%
mutate(score = positive - negative,
sentiment_label = case_when(
score > 0 ~ "Positive",
score < 0 ~ "Negative",
TRUE ~ "Neutral"
))
# Trend visualization (bar plot over time)
ggplot(sentiment_data, aes(x = date, y = score, fill = sentiment_label)) +
geom_col() +
scale_fill_manual(values = c("Positive" = "green", "Negative" = "red", "Neutral" = "gray")) +
labs(title = "Sentiment Trend Over Time", x = "Date", y = "Sentiment Score") +
theme_minimal()
# Distribution visualization (pie chart)
ggplot(sentiment_data, aes(x = "", fill = sentiment_label)) +
geom_bar(width = 1) +
coord_polar("y") +
theme_void() +
labs(title = "Overall Sentiment Distribution")
Comments