斯坦福 NLP:"No annotator named sentiment" 错误

Stanford NLP: "No annotator named sentiment" error

我正在尝试对包含我已经收集的推文的数据集应用情绪分析,对于一些实验,我 运行 用于我的论文。我已经按照 Internet 上的各种教程进行操作,到目前为止我的代码如下:

public class SentimentAnalyzer {
    public static StanfordCoreNLP pipeline;

    public SentimentAnalyzer() {
         Properties props = new Properties();
         props.setProperty("annotators", "tokenize, ssplit, parse, sentiment");
         pipeline = new StanfordCoreNLP(props);
    }

    public static int getSentiment(String tweet) {
         int mainSentiment = 0;
         if (tweet != null && tweet.length() > 0) {
             int longest = 0;
             Annotation annotation = pipeline.process(tweet);
             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();
                 }

             }
        }
        return mainSentiment;
    }
}

问题是,当我 运行 这段代码时, Java returns 一个非法参数异常:

Adding annotator tokenize
Adding annotator ssplit
Adding annotator parse
Loading parser from serialized file 
edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ... done [1,4 sec].
Adding annotator sentiment
Exception in thread "main" java.lang.IllegalArgumentException: No annotator named sentiment
    at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:78)
    at edu.stanfoJava Result: 1

但每个教程都将 "sentiment" 列为有效的注释器!该程序在调用 StanfordCoreNLP 构造函数(在 SentimentAnalyzer 构造函数内部)时特别挂起,尽管我已经尝试了我能想到的所有配置(使管道非静态,在 getSentiment() 方法中创建管道 eveytime,使用 .properties 文件相反),问题仍然存在。 我正在使用 StanfordCoreNLP 3.3.1,以及模型 .jar(虽然是 3.5.2 版本)和 ejml 0.23 - 我使用了 3.5.2 版本,但没有成功。

编辑: 我用 3.5.2 替换了 3.3.2,现在错误改变了:

Loading parser from text file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz Exception in thread "main" java.lang.RuntimeException: edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz: expecting BEGIN block; got ��

其余部分不可读,也无法复制。看来是models库的问题,至少错误指向的目录是models的。我还更新了他们 GitHub 存储库中的最新库,但错误是一样的。

事实证明,自 8 月以来,StanfordCoreNLP v.1.3.4 被排除在先前的实施之外。当我删除它时,代码开始正常工作。