This is a Java project for Sentiment Analysis using Stanford CoreNLP.
The Stanford CoreNLP provides statistical NLP, deep learning NLP, and rule-based NLP tools for major computational linguistics problems, which can be incorporated into applications with human language technology needs..
The underlying technology of this is based on a new type of Recursive Neural Network that builds on top of grammatical structures.
The Java documentation for stanford nlp can be found here.
The live Demo of Stanfod sentiment analysis.
-
Download the project and import into Eclipse
-
Set the build path which must have the following libraries
- stanford-corenlp-3.8.0
- ejml-0.23
- stanford-corenlp-3.8.0-models
Note: The stanford-corenlp-3.8.0-models has all the trained models. It is not set in the build path of this project due to size constraint.
Download the jar file from Stanford NLP site
- Run the MainApp.java file
All the dependencies can be downloaded from Stanford NLP site .
// creates a StanfordCoreNLP object, with POS tagging, lemmatization, NER, parsing, and sentiment
props = new Properties();
props.setProperty("annotators", "tokenize, ssplit, parse, sentiment");
StanfordCoreNLP pipeline; = new StanfordCoreNLP(props);
Run the Annotators on the text and then get the SentimentAnnotatedTree
// this is the parse tree of the current sentence
Tree tree = sentence.get(SentimentCoreAnnotations.SentimentAnnotatedTree.class);
//print the sentiment score using RNNCoreAnnotations
System.out.println("Sentiment Score: " + RNNCoreAnnotations.getPredictedClass(tree));
How to find 5 classes of sentiment classification: very negative, negative, neutral, positive, and very positive.
// this matrix contains the confidences
SimpleMatrix sm = RNNCoreAnnotations.getPredictedClass(tree);
The estimated probability/confidence looks something like this from 'sm' object
Type = dense , numRows = 5 , numCols = 1
0.111
0.758
0.087
0.035
0.009
This project has the following output
Sentiment Score: 1.0%
Sentiment Type: Negative%
Very positive: 2.0%
Positive: 12.0%
Neutral: 25.0%
Negative: 52.0%
Very negative: 10.0%