I am trying to do sentiment analysis on a review dataset. Since I care more about identifying (extracting) negative sentiments in reviews (unlabeled now but I try to manually label a few hundreds or use Alchemy API), if the review is overall neutral or positive but a part has negative sentiment, I'd like my model to consider it more toward as a negative review. Could someone give me advices on how to do this? I'm thinking about using bag of words/word2vect with supervised (random forest, SVM) /unsupervised learning models (Kmeans).
2 Answers
0
votes
When you annotate the sentiment, don't annotate 'Positive', 'Negative', and 'Neutral'. Instead, annotate them as either "has negative" or "doesn't have negative". Then your sentiment classification will only be concerned with how strongly the features indicate negative sentiment, which appears to be what you want.
0
votes
By using bag of words method you can give more weight to negative words. Default is -1 for negative and +1 for positive words.
library(qdap)
Dict <- key.pol
Dict$y <- ifelse(Dict$y==-1,-3,Dict$y)
# explore on small chat
polarity("Food is good i like it. The delivery is bad",polarity.frame = Dict)$all
Here in-spite of two positive words its negative.