我正在研究斯坦福大学nlp情绪分析。我已经从一个博客尝试过此代码,但是我无法获得“正”或“负”之类的语句的情感价值或某些分数。

以下是代码。

public class SemanticAnalysis {

    public static void main(String args[]) {
        sentimentAnalysis sentiments = new sentimentAnalysis();
        sentiments.findSentiment("Stanford University is located in California. " +
                "It is a great university");
    }

}


class sentimentAnalysis {
    public String findSentiment(String line) {
        Properties props = new Properties();
        props.setProperty("annotators", "tokenize, ssplit, parse, sentiment");
        StanfordCoreNLP pipeline = new StanfordCoreNLP(props);
        int mainSentiment = 0;

        if (line != null && line.length() > 0) {
            int longest = 0;
            Annotation annotation = pipeline.process(line);

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

        if (mainSentiment == 2 || mainSentiment > 4 || mainSentiment < 0) {
            return null;
        }

        return "";
    }
}

最佳答案

您究竟希望这样做吗?您在那里的sentimentAnalysis类仅处理情感并返回null"",并且您没有使用该返回值做任何事情。此代码不会向用户提供任何反馈。

也许您应该在调试器中运行它或在其中抛出几个打印语句,以便您可以弄清楚它在做什么并找到合理的返回值。

您可以阅读大量文档以查找所需内容。如果API for the Stanford NLP library不能告诉您所有您需要知道的内容,我会感到惊讶。

关于java - 如何使用stanford nlp情感库获取诸如肯定或否定之类的情感陈述?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23493343/

10-10 19:02