I've been reading Bing Liu's book on Sentiment Analysis. He mentions all of these slightly different approaches seen in research since 2004, but doesn't talk much about efficacy at all.

That leaves me - someone who has not done any sentiment analysis before - wondering what approaches are seeing the best results currently. And it specifically needs to be an approach that can extract the sentiments of individual topics found in the text, not just if a document/sentence is positive or negative.

In case it makes a huge difference: the object of analysis will be reddit comments, not tweets or reviews which seem to be the most common source of data.


It's hard to say what is state-of-the-art in general without breaking aspect-level sentiment analysis down into its subtasks:

1) Aspect extraction

2) Sentiment classification

As you've probably read in Liu's book, aspect extraction can be done relatively well by extracting the most common noun phrases and adding some heuristics. This works particularly well when you are dealing with texts that revolve around a few topics. Topic-model based techniques (LDA etc) are better, but more complicated to implement.

As for classification, all current state-of-the-art approaches use neural networks (Recurrent NNs or Convolutional NNs). At sentence-level Kim (2014) is still soa on several datasets. There was a paper by Wang et al. about attention-based LSTMs for aspect-level sentiment analysis in EMNLP last year.

I'd suggest looking at the recent SemEval tasks (2014 task 4, 2015 task 12, 2016 task 5) on aspect-based sentiment analysis. There's a lot of good ideas that you could pick up on there.


Basically, there are two types of sentiment analysis.

  1. Symbolic approach - the sentiment of the sentence is classified based on the kind of words used in the sentence. Involves a lexical database such as wordnet and some rules based on the grammatical structure of the language as knowledge representation.
  2. Vector models - rather than detecting the sentiment in a sentence, the query sentence is classified into one of the category based on the training dataset and the features are represented as word vectors. Distributed and Distributional representations are types of it.

Whether it is coarse-classification (positive - negative) or fine-classification (types of emotions in it), a training dataset is needed if you are going to approach it via vector models as it is much more easier to play with.

The skip-gram model and continuous bag of words model developed in Google based on Recurrent neural network language model made a breakthrough in Natural language processing seems to be the state-of-art model in Distributional representation.

Since the code has been open-sourced, the c-code is available here and the python library is maintained here.

It doesn't matter if you are going to use reddit comments, tweets or reviews. What matters is how well the sentences are classified for the training data. Because garbage in is garbage out.

  • $\begingroup$ Thanks a lot for your reply. You do seem be talking about sentence-level sentiment analysis here, while I need it at aspect-level, am I correct in this assessment? I'm talking about extraction of individual topics or aspects of topics from a sentence and their sentiments, and not just whether a sentence is positive or negative-sounding. $\endgroup$ – Simon Gray Feb 24 '16 at 10:58
  • $\begingroup$ @SimonGray: I guess by aspect-level, you mean the semantic meaning in the text. if that is the case, then the model which I have suggested is the right one for it. The results are amazing. PS: im working on emotion detection in sentences using that model. $\endgroup$ – chmodsss Feb 24 '16 at 16:05
  • $\begingroup$ what I need is sentiment expressed towards entities in the sentences, not whether or not the sentences themselves are positive or negative, is that what you mean by semantic meaning in the text? I need to be able to trace the sentiment to a specific target. $\endgroup$ – Simon Gray Feb 25 '16 at 13:02
  • $\begingroup$ @SimonGray: No, semantic meaning doesn't mean just positive or negative. It means the contextual information which the sentence conveys, for example, emotion detection model will consider which emotion is embedded in the sentence. $\endgroup$ – chmodsss Feb 25 '16 at 16:43
  • $\begingroup$ ok, but what about tracing sentiment to specific targets in the sentence? Are we still only at sentence-level here since you say "embedded in the sentence"? :-) $\endgroup$ – Simon Gray Feb 26 '16 at 9:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.