2014-04-14 150 views
6

我試圖在eclipse中實現coreNLP情緒分析器。獲取錯誤:斯坦福CoreNLP情緒

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

作爲類路徑,文件名或URL。我使用maven安裝了所有的NLP文件,所以我不確定它爲什麼要尋找其他的東西。這是我得到錯誤的代碼。

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

原來我需要到斯坦福corenlp-3.3.1-models.jar添加到構建路徑和它的工作。 –

回答

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

希望這將有助於.. :)