Collect word of bag for analysis

sent <- data.frame(words = c("just right size good love great", "love this quality", 
                             "good quality", "love very good quality", "i hate this notebook",
                             "great love improvement", "hate bad notebook is not good"), user = c(1,2,3,4,5,6,7),
                   stringsAsFactors=F)

Define positve and negative words

posWords <- c("great","improvement","love","great improvement","very good","good","right","very")
negWords <- c("hate","bad","not good","horrible")

wordsDF<- data.frame(words = posWords, value = 1,stringsAsFactors=F)
wordsDF<- rbind(wordsDF,data.frame(words = negWords, value = -1))
wordsDF$lengths<-unlist(lapply(wordsDF$words, nchar))
wordsDF<-wordsDF[ order(-wordsDF[,3]),]

Comparing word of bag to define keywords

scoreSentence <- function(sentence){
  score<-0
  for(x in 1:nrow(wordsDF)){
    count<-length(grep(wordsDF[x,1],sentence))
    if(count){
      score<-score + (count * wordsDF[x,2])
      sentence<-sub(wordsDF[x,1],'',sentence)
    }
  }
  score
}

SentimentScore<- unlist(lapply(sent$words, scoreSentence))
output <- cbind(sent, SentimentScore)

output
##                             words user SentimentScore
## 1 just right size good love great    1              4
## 2               love this quality    2              1
## 3                    good quality    3              1
## 4          love very good quality    4              2
## 5            i hate this notebook    5             -1
## 6          great love improvement    6              3
## 7   hate bad notebook is not good    7             -3