java.lang.NullPointerException 在使用 stanford-nlp 进行情感分析时 API

java.lang.NullPointerException while doing sentimental analysis with stanford-nlp API

我是 stanford-nlp 的新手 API。我正在尝试与 stanford API 进行情感分析,但它抛出异常。请查看以下日志。

Adding annotator tokenize
Adding annotator ssplit
Adding annotator pos
Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger ... done [1.4 sec].
Adding annotator lemma
Adding annotator ner
Loading classifier from edu/stanford/nlp/models/ner/english.all.3class.distsim.crf.ser.gz ... done [5.3 sec].
Loading classifier from edu/stanford/nlp/models/ner/english.muc.7class.distsim.crf.ser.gz ... done [2.3 sec].
Loading classifier from edu/stanford/nlp/models/ner/english.conll.4class.distsim.crf.ser.gz ... done [4.7 sec].
Adding annotator parse
Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ... done [1.1 sec].
Adding annotator dcoref
Adding annotator sentiment
Exception in thread "main" java.lang.NoClassDefFoundError: org/ejml/simple/SimpleBase
    at edu.stanford.nlp.pipeline.SentimentAnnotator.<init>    (SentimentAnnotator.java:48)
    at  edu.stanford.nlp.pipeline.StanfordCoreNLP.create(StanfordCoreNLP.java:850)
    at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:81)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:262)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:129)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:125)
    at io.stanford.NLP.findSentiment(NLP.java:30)
    at io.stanford.TestStanford.main(TestStanford.java:8)
Caused by: java.lang.ClassNotFoundException: org.ejml.simple.SimpleBase
    at java.net.URLClassLoader.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    ... 8 more

生成此输出的代码是什么?我强烈怀疑您没有在注释器列表中包含 "sentiment" 注释器,无论是在您用于 运行 代码的属性文件中,还是在您传递到注释管道的属性对象中。如果没有 运行 情感注释器,文档将不会附加情感注释,因此在尝试检索它们时将为空指针。

对于 Stanford CoreNLP 3.5.2 发行版,应该有一个名为 ejml-0.23.jar 的 .jar 文件,其中包含缺少的 class ;确保将这个 jar 放在你的 class 路径中,事实上你可能想要在你的 class 路径中包含 Stanford CoreNLP 3.5.2 的所有 jar!