R code and workflow for sentiment analysis in library and information science research
Abstract
R Code used in the paper Assessing library topics using sentiment analysis in R (2020).
Full text
Appendix 1 2 install.packages 3 4 5 6 7 8 library(twitteR) 9 library(graphics) 10 library(purrr) 11 library(stringr) 12 library(tm) 13 library(syuzhet) 14 15 api_key <- 16 api_secret <- 17 access_token <- 18 access_token_secret <- 19 setup_twitter_oauth(api_key,api_secret,access_token,access_token_secret) 20 21 label_for_tweets <- userTimelin 22 label_for_tweets2 <- 23 24 tweets <- tbl_df(map_df(c(label_for_tweets,label_for_tweets2), as.data.frame)) 25 26 27 28 tweets <- 29 30 cleantweets <- Corpus(VectorSource(tweets$text)) 31 32 removeurl <- 33 cleantweets <- tm_map(cleantweets, content_transformer(removeurl)) 34 35 removenonAscii <- function(x) textclean::replace_non)ascii(x) 36 cleantweets <- tm_map(cleantweets, content_transformer(removenonAscii)) 37 38 cleantweets <- tm_map(cleantweets, content_transformer(tolower)) 39 cleantweets <- tm_map(cleantweets, removePunctuation) 40 cleantweets <- 41 42 cleantweets <- 43 44 cleantweets <- tm_map(cleantweets, stripWhitespace0
45 46 sentiments <- get_nrc_sentiment(cleantweets$content) 47 48 49 50 sentiments <- get_sentiment(cleantweets$content) 51 tweetsentiment <- dplyr::bind_cols(tweets,data.frame(sent)) 52 53 meanSent <- function(i, n) { mean(tweetsentiment$sent[i:n]) } 54 55 (scores <- c(label_for_tweets=meanSent(number, number), 56 label_for_tweets2=meanSent(number,number))) 57 58 dtm<-DocumentTermMatrix(cleantweets) dtm mat <- as.matrix(dtm) v <- sort(rowSums(m), decreasing=TRUE) d <- data.frame(word=names(v), freq=v) 59 60 wordcloud(d$word, d$freq, random.order=FALSE, rot.per=0.3, scale=c(4, .3), max.words=50, colors=black) 61