#' @title rSentiment Word Frequency
#' @description Blank Description.
#' @param s NRC Sentiment Data
#' @param n Name
#' @keywords package
#' @return NULL
#' @export
#' @examples sentiment.wordfreq()
#' sentiment.wordfreq(nk.tweets, nk.name)
sentiment.wordfreq <- function(s, n, rw) {
if('tidytext' %in% rownames(installed.packages()) == TRUE) {
require(tidytext)} else {
install.packages("tidytext", repos = "http://cran.us.r-project.org")
require(tidytext)}
if('textdata' %in% rownames(installed.packages()) == TRUE) {
require(textdata)} else {
install.packages("textdata", repos = "http://cran.us.r-project.org")
require(textdata)}
if('dplyr' %in% rownames(installed.packages()) == TRUE) {
require(dplyr)} else {
install.packages("dplyr", repos = "http://cran.us.r-project.org")
require(dplyr)}
if('ggrepel' %in% rownames(installed.packages()) == TRUE) {
require(ggrepel)} else {
install.packages("ggrepel", repos = "http://cran.us.r-project.org")
require(ggrepel)}
# Make New Data from Input
nk.tidy <- s
nk.name <- n
rw <- NA
nk.remove.words <- rw
theme.sentiment <- function() {theme(
plot.title = element_text(hjust = 0.5), legend.position = "none",
axis.text.x = element_blank(), axis.ticks = element_blank(),
panel.grid.major = element_blank(), panel.grid.minor = element_blank())}
nk.tidy <- nk.tweets %>%
#Unnest - Break the text into individual words
unnest_tokens(word, text) %>%
#Remove undesirables
filter(!word %in% nk.remove.words) %>%
# Remove words with less than 3 characters (an, is)
filter(!nchar(word) < 3) %>%
# Stop words provided by tidytext package
anti_join(stop_words)
# glimpse(nk.tidy)
nk.nrc <- nk.tidy %>% inner_join(get_sentiments("nrc"))
nk.sentiment.word.freq <- nk.nrc %>% group_by(sentiment) %>%
count(word, sort = TRUE) %>% arrange(desc(n)) %>% slice(seq_len(8)) %>% ungroup()
nk.sentiment.word.freq.plot <- nk.sentiment.word.freq %>%
ggplot(aes(word, 1, label = word, fill = sentiment )) +
geom_point(color = "transparent") +
geom_label_repel(force = 1,nudge_y = .5, direction = "y",
box.padding = 0.04, segment.color = "transparent", size = 3) +
facet_grid(~sentiment) +
theme.sentiment() +
theme(axis.text.y = element_blank(), axis.text.x = element_blank(),
axis.title.x = element_text(size = 6),
panel.grid = element_blank(), panel.background = element_blank(),
panel.border = element_rect("lightgray", fill = NA),
strip.text.x = element_text(size = 9)) +
xlab(NULL) + ylab(NULL) +
ggtitle(paste("Top Words per Emotion for Query", nk.name)) +
coord_flip()
nk.sentiment.word.freq.plot
return(nk.sentiment.word.freq.plot)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.