6

I'm trying to implement the coreNLP sentiment analyzer in eclipse. Getting the error:

Unable to resolve "edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz"

As either class path, filename or URL. I installed all of the NLP files using maven so I am not sure why it is looking for something else. Here is the code I am getting the error on.

import java.util.Properties;


import edu.stanford.nlp.ling.CoreAnnotations;
import edu.stanford.nlp.neural.rnn.RNNCoreAnnotations;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import edu.stanford.nlp.sentiment.SentimentCoreAnnotations;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.util.CoreMap;

public class StanfordSentiment {


StanfordCoreNLP pipeline; 



public StanfordSentiment(){
    Properties props = new Properties();
    props.setProperty("annotators", "tokenize, ssplit, parse, sentiment");

    pipeline = new StanfordCoreNLP(props);


}

public float calculateSentiment (String text) {


        float mainSentiment = 0;

        int longest = 0;
        Annotation annotation = pipeline.process(text);
        for (CoreMap sentence : annotation.get(CoreAnnotations.SentencesAnnotation.class)) {
            Tree tree = sentence.get(SentimentCoreAnnotations.AnnotatedTree.class);
            int sentiment = RNNCoreAnnotations.getPredictedClass(tree) - 2;
            String partText = sentence.toString();
            if (partText.length() > longest) {
                mainSentiment = sentiment;
                longest = partText.length();
            }

        }

       return mainSentiment;



}
}
dertkw
  • 7,798
  • 5
  • 37
  • 45
English Grad
  • 1,365
  • 5
  • 21
  • 40

1 Answers1

7
public class SentimentAnalysis {

    public static void main(String[] args) throws IOException {
        String text = "I am very happy";
        Properties props = new Properties();
        props.setProperty("annotators",
                "tokenize, ssplit, pos, lemma, parse, sentiment");
        StanfordCoreNLP pipeline = new StanfordCoreNLP(props);

        Annotation annotation = pipeline.process(text);
        List<CoreMap> sentences = annotation
                .get(CoreAnnotations.SentencesAnnotation.class);
        for (CoreMap sentence : sentences) {
            String sentiment = sentence
                    .get(SentimentCoreAnnotations.ClassName.class);
            System.out.println(sentiment + "\t" + sentence);
        }
    }
}

Hope it will help..:)

demongolem
  • 9,474
  • 36
  • 90
  • 105
aug13
  • 369
  • 4
  • 6