2014-04-14 12 views
6

Próbuję wdrożyć analizator sentencji coreNLP w czasie zaćmienia. Otrzymanie błędu:Stanford CoreNLP sentiment

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

Jako ścieżkę klasy, nazwę pliku lub adres URL. Zainstalowałem wszystkie pliki NLP używając programu maven, więc nie jestem pewien, dlaczego szuka czegoś innego. Oto kod, na który dostaję błąd.

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; 



} 
} 
+6

Okazuje się, że muszę dodać Stanford-corenlp-3.3.1-models.jar na buildpath i to działało. –

Odpowiedz

6
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); 
     } 
    } 
} 

nadzieję, że pomoże .. :)

Powiązane problemy