斯坦福CoreNLP情绪

时间:2014-04-14 15:24:52

标签: java dependencies nlp stanford-nlp

我正在尝试在eclipse中实现coreNLP情绪分析器。得到错误:

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

作为类路径,文件名或URL。我使用maven安装了所有NLP文件,因此我不确定它为什么要寻找其他东西。这是我收到错误的代码。

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;



}
}

1 个答案:

答案 0 :(得分: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);
        }
    }
}

希望它会有所帮助.. :)