2014-06-29 49 views
2
import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.List; 
import java.util.Properties; 
import java.util.Map; 


import edu.stanford.nlp.ling.CoreAnnotations.NamedEntityTagAnnotation; 
import edu.stanford.nlp.ling.CoreAnnotations.PartOfSpeechAnnotation; 
import edu.stanford.nlp.ling.CoreAnnotations.SentencesAnnotation; 
import edu.stanford.nlp.ling.CoreAnnotations.TextAnnotation; 
import edu.stanford.nlp.ling.CoreAnnotations.TokensAnnotation; 
import edu.stanford.nlp.ling.CoreLabel; 
import edu.stanford.nlp.pipeline.Annotation; 
import edu.stanford.nlp.pipeline.StanfordCoreNLP; 
import edu.stanford.nlp.semgraph.SemanticGraph; 
import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations.CollapsedCCProcessedDependenciesAnnotation; 
import edu.stanford.nlp.trees.Tree; 
import edu.stanford.nlp.trees.TreeCoreAnnotations.TreeAnnotation; 
import edu.stanford.nlp.util.CoreMap; 


public class Stanforder { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     // creates a StanfordCoreNLP object, with POS tagging, lemmatization, NER, parsing, and coreference resolution 
     Properties props = new Properties(); 
     props.put("annotators", "tokenize, ssplit, pos, lemma, ner, parse, dcoref"); 
     StanfordCoreNLP pipeline = new StanfordCoreNLP(props); 
     String text = ""; 
     File myFile = new File("C:\\master\\stanford\\txt\\43711.txt"); 
     try { 
      BufferedReader br = new BufferedReader(new FileReader(myFile)); 
      try { 
       StringBuilder sb = new StringBuilder(); 
       String line = br.readLine(); 

       while (line != null) { 
        sb.append(line); 
        //sb.append(System.lineSeparator()); 
        line = br.readLine(); 
       } 
       text = sb.toString(); 
      } catch (Exception e){ 
       e.printStackTrace(); 
      } finally { 
       try { 
        br.close(); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 
     } catch(Exception e){ 
      e.printStackTrace(); 
     } 
     System.out.println(text); 
     // read some text in the text variable 
     // Add your text here! 

     // create an empty Annotation just with the given text 
     Annotation document = new Annotation(text); 

     // run all Annotators on this text 
     pipeline.annotate(document); 

     // these are all the sentences in this document 
     // a CoreMap is essentially a Map that uses class objects as keys and has values with custom types 
     List<CoreMap> sentences = document.get(SentencesAnnotation.class); 

     for(CoreMap sentence: sentences) { 
      // traversing the words in the current sentence 
      // a CoreLabel is a CoreMap with additional token-specific methods 
      for (CoreLabel token: sentence.get(TokensAnnotation.class)) { 
      // this is the text of the token 
      String word = token.get(TextAnnotation.class); 
      // this is the POS tag of the token 
      String pos = token.get(PartOfSpeechAnnotation.class); 
      // this is the NER label of the token 
      String ne = token.get(NamedEntityTagAnnotation.class); 
      } 

      // this is the parse tree of the current sentence 
      Tree tree = sentence.get(TreeAnnotation.class); 

      // this is the Stanford dependency graph of the current sentence 
      SemanticGraph dependencies = sentence.get(CollapsedCCProcessedDependenciesAnnotation.class); 
     } 

    } 

} 

這是形式的斯坦福大學的網站上的例子,我試圖從文件中讀取內容,我得到的線以下異常的StanfordCoreNLP(道具)構造函數:StanfordCoreNLP的NoSuchMethodError

線程「主」中的異常

java.lang.NoSuchMethodError: edu.stanford.nlp.util.Generics.newHashMap()Ljava/util/Map; at edu.stanford.nlp.pipeline.AnnotatorPool.(AnnotatorPool.java:27) at edu.stanford.nlp.pipeline.StanfordCoreNLP.getDefaultAnnotatorPool(StanfordCoreNLP.java:303) at edu.stanford.nlp.pipeline.StanfordCoreNLP.construct(StanfordCoreNLP.java:256) at edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:129) at edu.stanford.nlp.pipeline.StanfordCoreNLP.(StanfordCoreNLP.java:125) at Stanforder.main(Stanforder.java:35)

任何幫助表示讚賞。謝謝!

+0

這意味着你有一組不一致的編譯類。在那裏,有一個類的方法的調用,但該方法不再存在。通常情況下,編譯器會檢查,但如果你用沒有這個方法的類替換正確的類,你會得到這個'NoSuchMethodError'。 – laune

回答