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