I'm working on a sentiment analysis study of twitter data using the Maximum Entropy classifier. I've gathered dozens of thousands of tweets. To produce features, I used unigram, bigram and dictionary. The first goal is to divide them into topics (also with maxent classifier), and it went well. The second goal is for each topic, assign a sentiment label, either positive (P), neutral (0), or negative (N) to the tweet.
When labeling the training data, I noticed that 'neutral' is assigned to the majority of tweets. Proportionally, I have a P:0:N ratio of 2:10:1. This created a problem that in the model, I have abundant features for 'neutral', but not so many for others. The cross validation result for the model is like 80% precision for all labels, but recall is 40% for N and 50% for P.
Bringing in more training data did not improve recall much.
Generally how do I improve recall on a label that is only 7% of the training data?