Friday, January 6, 2012

Sentiment analysis with Latent Semantic Analysis

Part of Roistr's work was generating an effective model for latent semantic analysis (LSA). If you don't know about LSA, it is described as a bag-of-words method of analysing text: you create the standard word by document matrix, transform it with the term frequency / inverse document frequency algorithm, and then use a method (most commonly singular value decomposition) to transform the matrix into 3 component matrices. One of these matrices has its dimensionality reduced (generally somewhere between 200 - 400 dimensions) and the matrices are multiplied back together. The resulting matrix can be used to provide surprisingly human-like judgements on text. More information ishere.

I did a few experiments recently on whether LSA could be used for sentiment analysis. The research question was given a set of movie reviews rated by experts as positive and negative, could I use LSA to find out which was which?

My first idea was to use a standard model and compare documents against 2 others: one was filled with positive sentiment words; the other with negative sentiment words. The concept was to see whether a document was more proximate to the positive-sentiment words document or the negative-sentiment words document.

The results showed that despite an observed non-significant difference, there was no ability to discriminate sentiment.

The second method I used created 2 LSA models, one using a dictionary of purely positive words and another using a dictionary of purely negative words. I then used these model to analyse text documents and see which produced the better understanding by comparing analysis via both of the sentiment models against the analysis of the standard model. The theory is that a strong expression of sentiment should show a greater departure from the standard model than a weaker expression.

This showed no significant differences which implies no ability to discriminate according to positive or negative sentiment.

So no luck so far but it's important to discuss the things that don't work as well as those that do.

There are weaknesses with this work that might have confounded the conclusion:

  • It only analysed entire documents. This may be acceptable for many tweets which are single topic / single expression but not for more complex documents (e.g., product reviews)
  • The lists of sentiment words may have been incomplete
  • The standard model may not be suitable for this purpose - it is an excellent component to understand semantic meaning (topic identification, semantic extraction and so on) but sentiment analysis is a different kettle of fish. 

However, I feel confident that the two approaches I've discussed are not worth pursuing in more detail. They might have a great role to play in combination with other methods which is another avenue we're currently exploring.