I'm using Stanford CoreNLP to perform sentiment analysis on some Tweets I'm gathering. I have created a mock training model with one sentence which is scored as follows: (0 (2 bear)(2 (2 oil)(2 market))).
I'm scoring on a scale of 0 to 4, with 0 being very negative, 2 being neutral and 4 is very positive. I am testing on the following two tweets:
bear oil market
bear oil markets
It is assigning the first sentence a 0, which is correct and the second sentence is scored as 2, which is incorrect since this sentence should also be negative. The only difference between the two sentences is the s in markets in the second sentence.
My question is this: is there any way to get around the fact that ANY variation of ANY word is causing the two sentences to be scored differently?
I think the short answer is "no" -- a difference in wording always has a chance of changing the sentiment of a sentence. You can try mitigating the problem by re-training on new data.
Really, if you're running on anything but movie reviews, you should expect the model to degrade in performance at least a little, and occasionally a lot. If you have the training data, it's worth re-training.