Stanford nlp 使用stanford core nlp时出错

Stanford nlp 使用stanford core nlp时出错,stanford-nlp,sentiment-analysis,Stanford Nlp,Sentiment Analysis,我在使用斯坦福nlp时遇到问题。我在尝试使用斯坦福核心NLP工具时遇到了各种各样的错误。我想知道所传递句子的情感。但是,当从eclipse运行代码并将所需的JAR添加到类路径时,我无法让nlp工具工作 这是我想要执行的代码 import java.util.Properties; import edu.stanford.nlp.ling.CoreAnnotations; import edu.stanford.nlp.ling.CoreLabel; import edu.stanford.nl

我在使用斯坦福nlp时遇到问题。我在尝试使用斯坦福核心NLP工具时遇到了各种各样的错误。我想知道所传递句子的情感。但是,当从eclipse运行代码并将所需的JAR添加到类路径时,我无法让nlp工具工作

这是我想要执行的代码

import java.util.Properties;

import edu.stanford.nlp.ling.CoreAnnotations;
import edu.stanford.nlp.ling.CoreLabel;
import edu.stanford.nlp.ling.CoreAnnotations.TokensAnnotation;
import edu.stanford.nlp.pipeline.Annotation;
import edu.stanford.nlp.pipeline.SentimentAnnotator;
import edu.stanford.nlp.pipeline.StanfordCoreNLP;
import edu.stanford.nlp.rnn.RNNCoreAnnotations;
import edu.stanford.nlp.sentiment.SentimentCoreAnnotations;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.util.CoreMap;
import edu.stanford.nlp.util.TypesafeMap.Key;

public class sentiment_demo {

    public static void sentiment_analysis(String line)
    {
        //Uses Stanford NLP sentimnet analysis
        //found in latest model released from stanford
        // ver 3.3.1
        //applies sentiment analysis to text 

        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)) {
                System.out.println(sentence);
                for (Tree token: sentence.get(SentimentCoreAnnotations.AnnotatedTree.class))
                {
                    //System.out.println(token);
                }
                Tree tree = sentence.get(SentimentCoreAnnotations.AnnotatedTree.class);
                int sentiment = RNNCoreAnnotations.getPredictedClass(tree);
                System.out.println(sentiment);
                String partText = sentence.toString();
                //System.out.println(partText);
                if (partText.length() > longest) {
                    mainSentiment = sentiment;
                    longest = partText.length();
                }

            }
        }
        if(mainSentiment==2)
        {
            System.out.println("Average");
        }
        else if(mainSentiment>2)
        {
            System.out.println("Positive");
        }
        else if(mainSentiment<2)
        {
            System.out.println("Negative ");
        }

        if (mainSentiment == 2 || mainSentiment > 4 || mainSentiment < 0) {
            //return null;
        }
    }
    public static void main(String[] args)
    {
        sentiment_analysis("Cristiano Ronaldo, is a Portuguese professional footballer who plays for Spanish club Real Madrid and the Portugal national team. He is a forward and serves as captain for Portugal.Often ranked as the best player in the world and rated by some in the sport as the greatest of all time");
    }
}
import java.util.Properties;
导入edu.stanford.nlp.ling.core注释;
导入edu.stanford.nlp.ling.corelab;
导入edu.stanford.nlp.ling.CoreAnnotations.TokensAnnotation;
导入edu.stanford.nlp.pipeline.Annotation;
导入edu.stanford.nlp.pipeline.mountainAnnotator;
导入edu.stanford.nlp.pipeline.StanfordCoreNLP;
导入edu.stanford.nlp.rnn.rnn注释;
导入edu.stanford.nlp.touction.mountain注释;
导入edu.stanford.nlp.trees.Tree;
导入edu.stanford.nlp.util.CoreMap;
导入edu.stanford.nlp.util.TypesafeMap.Key;
公众课堂情绪演示{
公共静态空洞分析(细线)
{
//使用斯坦福NLP Sentinet分析
//在斯坦福大学发布的最新型号中发现
//第3.3.1版
//将情感分析应用于文本
Properties props=新属性();
props.setProperty(“注释器”、“标记化、ssplit、解析、情感”);
StanfordCoreNLP管道=新的StanfordCoreNLP(道具);
int=0;
if(line!=null&&line.length()>0){
int=0;
注释=pipeline.process(行);
for(CoreMap语句:annotation.get(coreanotations.SentencesAnnotation.class)){
System.out.println(句子);
for(树标记:句子.get(感伤CoreAnnotations.AnnotatedTree.class))
{
//System.out.println(令牌);
}
Tree-Tree=句子.get(momentCoreAnnotations.AnnotatedTree.class);
int=rnncorencenotations.getPredictedClass(树);
系统输出打印(情绪);
String partText=句子.toString();
//System.out.println(partText);
if(partText.length()>最长){
主要情绪=情绪;
最长=partText.length();
}
}
}
if(main==2)
{
系统输出打印项次(“平均”);
}
否则如果(主情绪>2)
{
系统输出打印项次(“正”);
}
else if(主情绪4 | |主情绪<0){
//返回null;
}
}
公共静态void main(字符串[]args)
{
情绪分析(“克里斯蒂亚诺·罗纳尔多,葡萄牙职业足球运动员,效力于西班牙皇家马德里俱乐部和葡萄牙国家队。他是一名前锋,担任葡萄牙队队长。经常被评为世界上最好的球员,并被一些体育界人士评为有史以来最伟大的球员”);
}
}
这是我设置的库

我正在使用eclipse火星。起初它显示了ejml库的错误。但后来我导入了EJMLJAR文件,所以错误得到了解决,但现在它导致了这个错误

Adding annotator tokenize
Adding annotator ssplit
Adding annotator parse
Loading parser from serialized file edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz ... done [1.6 sec].
Adding annotator sentiment
Exception in thread "main" edu.stanford.nlp.io.RuntimeIOException: java.lang.ClassNotFoundException: edu.stanford.nlp.neural.SimpleTensor
    at edu.stanford.nlp.sentiment.SentimentModel.loadSerialized(SentimentModel.java:470)
    at edu.stanford.nlp.pipeline.SentimentAnnotator.<init>(SentimentAnnotator.java:45)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP$14.create(StanfordCoreNLP.java:845)
    at edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:81)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:260)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:127)
    at edu.stanford.nlp.pipeline.StanfordCoreNLP.<init>(StanfordCoreNLP.java:123)
    at sentiment_demo.sentiment_analysis(sentiment_demo.java:28)
    at sentiment_demo.main(sentiment_demo.java:70)
Caused by: java.lang.ClassNotFoundException: edu.stanford.nlp.neural.SimpleTensor
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at java.io.ObjectInputStream.resolveClass(Unknown Source)
    at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
    at java.io.ObjectInputStream.readClassDesc(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    at java.util.TreeMap.buildFromSorted(Unknown Source)
    at java.util.TreeMap.buildFromSorted(Unknown Source)
    at java.util.TreeMap.readObject(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    at java.util.TreeMap.buildFromSorted(Unknown Source)
    at java.util.TreeMap.buildFromSorted(Unknown Source)
    at java.util.TreeMap.readObject(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at java.io.ObjectStreamClass.invokeReadObject(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.defaultReadFields(Unknown Source)
    at java.io.ObjectInputStream.readSerialData(Unknown Source)
    at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
    at java.io.ObjectInputStream.readObject0(Unknown Source)
    at java.io.ObjectInputStream.readObject(Unknown Source)
    at edu.stanford.nlp.io.IOUtils.readObjectFromURLOrClasspathOrFileSystem(IOUtils.java:298)
    at edu.stanford.nlp.sentiment.SentimentModel.loadSerialized(SentimentModel.java:466)
添加注释器标记化
添加注释器ssplit
添加注释器解析
正在从序列化文件edu/stanford/nlp/models/lexparser/englishPCFG.ser.gz加载解析器。。。完成[1.6秒]。
添加注释者情绪
线程“main”edu.stanford.nlp.io.RuntimeIOException:java.lang.ClassNotFoundException:edu.stanford.nlp.neural.SimpleSensor中的异常
在edu.stanford.nlp.thousion.thousionModel.loadSerialized上(thousionModel.java:470)
位于edu.stanford.nlp.pipeline.感伤注释器。(感伤注释器.java:45)
位于edu.stanford.nlp.pipeline.StanfordCoreNLP$14.create(StanfordCoreNLP.java:845)
位于edu.stanford.nlp.pipeline.AnnotatorPool.get(AnnotatorPool.java:81)
位于edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:260)
位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:127)
位于edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:123)
在情绪演示。情绪分析(情绪演示。java:28)
在感悟demo.main(感悟demo.java:70)
原因:java.lang.ClassNotFoundException:edu.stanford.nlp.neural.SimpleSensor
位于java.net.URLClassLoader.findClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(未知源)
位于java.io.ObjectInputStream.resolveClass(未知源)
位于java.io.ObjectInputStream.readNonProxyDesc(未知源)
位于java.io.ObjectInputStream.readClassDesc(未知源)
位于java.io.ObjectInputStream.ReadOrderinaryObject(未知源)
位于java.io.ObjectInputStream.readObject0(未知源)
位于java.io.ObjectInputStream.readObject(未知源)
位于java.util.TreeMap.buildFromSorted(未知源)
位于java.util.TreeMap.buildFromSorted(未知源)
位于java.util.TreeMap.readObject(未知源)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于java.io.ObjectStreamClass.invokeReadObject(未知源)
位于java.io.ObjectInputStream.readSerialData(未知源)
位于java.io.ObjectInputStream.ReadOrderinaryObject(未知源)
位于java.io.ObjectInputStream.readObject0(未知源)
位于java.io.ObjectInputStream.readObject(未知源)
位于java.util.TreeMap.buildFromSorted(未知源)
位于java.util.TreeMap.buildFromSorted(未知源)
在java.uti
import edu.stanford.nlp.neural.rnn.RNNCoreAnnotations;