I was wondering if anybody knew where I could obtain dictionaries of positive and negative words. I\'m looking into sentiment analysis and this is a crucial part of it.
You can use vader sentiment lexicon
from nltk.sentiment.vader import SentimentIntensityAnalyzer
sentence='APPle is good for health'
sid = SentimentIntensityAnalyzer()
ss = sid.polarity_scores(sentence)
print(ss)
it will give you the polarity of sentence.
output:
{'compound': 0.4404, 'neu': 0.58, 'pos': 0.42, 'neg': 0.0}
This paper from 2002 describes an algorithm for deriving such a dictionary from text samples automatically, using only two words as a seed set.
AFINN you can find here and also create it dynamically. Like whenever unknown +ve word comes add it with +1. Like banana is new +ve word and appearing twice then it will become +2.
As much articles and data you craws your dictionary would become stronger!
Sentiwords gives 155,000 words (and their polarity, that is, a score between -1 and 1 for very negative through to very positive). The lexicon is discussed here
Arriving a bit late I'll just note that dictionaries have a limited contribution for sentiment analysis. Some sentiment bearing sentences do not contain any "sentiment" word - e.g. "read the book" which could be positive in a book review while negative in a movie review. Similarly, the sentiment word "unpredictable" could be positive in the context of a thriller but negative when describing the breaks system of the Toyota.
and there are many more...
Sources: