A curated list of Sentiment Analysis methods, implementations and misc.
Go to file
2017-02-21 23:00:08 -05:00
LICENSE Initial commit 2017-02-21 20:53:09 -05:00
README.md update readme 2017-02-21 23:00:08 -05:00

Sentment Analysis

A curated list of Sentiment Analysis methods, implementations and misc.

Sentiment Analysis is the field of study that analyzes people's opinions, sentiments, evaluations, attitudes, and emotions from written languages. (Liu 2012)

The goal of this repository is to provide adequate links for scholars who want to research in this domain; And at the same time, be sufficiently accessible for developers who want to integrate sentiment analysis into their applications.

Sentiment Analysis (SA) happens at various levels:

  • Document-level SA evaluate sentiment of a single entity (i.e. a product) from a review document.
  • Sentence-level SA evaluate sentiment from a single sentence.
  • Aspect-level SA performs finer-grain analysis. For example, the sentence “the iPhones call quality is good, but its battery life is short.” evaluates two aspects: call quality and battery life, of iPhone (entity). The sentiment on iPhones call quality is positive, but the sentiment on its battery life is negative. (Liu 2012)

Most recent research focuses on Aspect-based approaches. But not all opensource implementations are caught up yet.

There are many different approaches to solve the problem. Some use Lexical methods, such as looking at the frequency of positive and negative words (from i.e. SentiWordNet) occuring in the given sentence. Some use Supervised Machine Learning, such as Naive Bayes and Support Vector Machine (SVM.) Some use Unsupervised Machine Learning, such as Latent Dirichlet Allocation (LDA) and word embeddings (Word2Vec). Recent work also apply Deep Learning methods such as Convolutional Neural Network (CNN) and Long Short-term Memory (LSTM), and also their attention-based variants.

Survey Papers

Liu, Bing. "Sentiment analysis and opinion mining." Synthesis lectures on human language technologies 5.1 (2012): 1-167. [pdf]

Vinodhini, G., and R. M. Chandrasekaran. "Sentiment analysis and opinion mining: a survey." International Journal 2.6 (2012): 282-292. [pdf]

Medhat, Walaa, Ahmed Hassan, and Hoda Korashy. "Sentiment analysis algorithms and applications: A survey." Ain Shams Engineering Journal 5.4 (2014): 1093-1113. [pdf]

Baseline Systems

Wang, Sida, and Christopher D. Manning. "Baselines and bigrams: Simple, good sentiment and topic classification." Proceedings of the 50th Annual Meeting of the Association for Computational Linguistics: Short Papers-Volume 2. Association for Computational Linguistics, 2012. [pdf]

Open Source Implementations

NodeJS

thisandagain/sentiment: Lexical, Dictionary-based, AFINN-based.

thinkroth/Sentimental Lexical, Dictionary-based, AFINN-based.

Java

LingPipe: Lexical, Corpus-based.

CoreNLP: Supervised Machine Learning

ASUM: Unsupervised Machine Learning, Latent Dirichlet Allocation. [paper]

Python

nltk: VADER sentiment analysis tool, Lexical, Dictionary-based, Rule-based. [paper]

vivekn/sentiment: Supervised Machine Learning, Naive Bayes Classifier. [paper]

xiaohan2012/twitter-sent-dnn: Supervised Machine Learning, Deep Learning, Convolutional Neural Network. [paper]

kevincobain2000/sentiment_classifier: Supervised Machine Learning, Naive Bayes Classifier, Max Entropy Classifier, SentiWordNet.

pedrobalage/SemevalAspectBasedSentimentAnalysis: Aspect-Based, Supervised Machine Learning, Conditional Random Field.

ganeshjawahar/mem_absa: Aspect-Based, Supervised Machine Learning, Deep Learning, Attention-based, External Memory. [paper]

R

timjurka/sentiment: Supervised Machine Learning, Naive Bayes Classifier.

Golang

cdipaolo/sentiment: Supervised Machine Learning, Naive Bayes Classifier. Based on cdipaolo/goml.

Ruby

malavbhavsar/sentimentalizer: Lexical, Dictionary-based.

7compass/sentimental: Lexical, Dictionary-based.

Contributing

👍🎉 First off, thanks for taking the time to contribute! 🎉👍

Steps to contribute:

  • Make your awesome changes
  • Submit pull request; if you add a new entry, please give a very brief explanation why you think it should be added.