2016-07-28 12 views
1

Hallo Leute des Internets,Erster Urtext nach der Verwendung von Stanford NLP-Parser

Wir haben folgendes Problem mit der Stanford NLP API: Wir haben einen String, die wir in eine Liste von Sätzen zu transformieren möchten. Zuerst verwendeten wir String sentenceString = Sentence.listToString(sentence); aber listToString gibt den ursprünglichen Text wegen der Tokenisierung nicht zurück. Jetzt haben wir versucht, listToOriginalTextString auf folgende Weise zu verwenden:

private static List<String> getSentences(String text) { 
     Reader reader = new StringReader(text); 
     DocumentPreprocessor dp = new DocumentPreprocessor(reader); 
     List<String> sentenceList = new ArrayList<String>(); 

     for (List<HasWord> sentence : dp) { 
      String sentenceString = Sentence.listToOriginalTextString(sentence); 
      sentenceList.add(sentenceString.toString()); 
     } 

     return sentenceList; 
    } 

Dies funktioniert nicht. Anscheinend müssen wir ein Attribut "invertible" auf "True" setzen, aber wir wissen nicht, wie. Wie können wir das tun?

Wie verwenden Sie listToOriginalTextString im Allgemeinen richtig? Welche Vorbereitungen brauchst du?

Grüßen Khayet

Antwort

0

Wenn ich richtig verstehe, wollen Sie die Zuordnung von Token auf den ursprünglichen Eingabetext nach tokenization zu erhalten. Du kannst es so machen;

 //split via PTBTokenizer (PTBLexer) 
     List<CoreLabel> tokens = PTBTokenizer.coreLabelFactory().getTokenizer(new StringReader(text)).tokenize(); 

     //do the processing using stanford sentence splitter (WordToSentenceProcessor) 
     WordToSentenceProcessor processor = new WordToSentenceProcessor(); 
     List<List<CoreLabel>> splitSentences = processor.process(tokens); 

     //for each sentence 
     for (List<CoreLabel> s : splitSentences) {     

      //for each word 
      for (CoreLabel token : s) { 
       //here you can get the token value and position like; 
       //token.value(), token.beginPosition(), token.endPosition() 
      }  

     } 
0
String sentenceStr = sentence.get(CoreAnnotations.TextAnnotation.class) 

Es gibt Ihnen Originaltextes. Ein Beispiel für die Datei JSONOutputter.java:

l2.set("id", sentence.get(CoreAnnotations.SentenceIDAnnotation.class)); 
l2.set("index", sentence.get(CoreAnnotations.SentenceIndexAnnotation.class)); 
l2.set("sentenceOriginal",sentence.get(CoreAnnotations.TextAnnotation.class)); 
l2.set("line", sentence.get(CoreAnnotations.LineNumberAnnotation.class));