2016-05-08 9 views
2

Ich möchte Stanford Parser innerhalb der CoreNLP verwenden. Ich habe schon dieses Beispiel arbeitet:Stanford Parser - Verwenden Sie Deutsch Modell Glas

http://stanfordnlp.github.io/CoreNLP/simple.html

ABER: Ich habe das Deutsch-Modell benötigen. Also habe ich "stanford-german-2016-01-19-models.jar" heruntergeladen.

Aber wie kann ich diese JAR-Datei für die Verwendung festlegen? ich nur gefunden:

LexicalizedParser lp = LexicalizedParser.loadModel("englishPCFG.ser.gz"); 

aber ich habe ein Glas mit den Germn Modelle, KEIN ... ser.gz.

Kann anyboady helfen?

+1

Ich würde davon ausgehen, dass das Jar die Daten enthält, und Sie würden das Glas zum Build-Pfad Ihres Projekts hinzufügen, um darauf zuzugreifen, nein? –

+0

Sie haben Recht. Natürlich habe ich die deutsche .jar-Datei bereits zu meinem Build-Pfad in Eclipse hinzugefügt. Aber es muss eine Option geben, wo ich diese deutsche Datei einstellen muss. Wenn nicht, wie kann das Programm wissen, welche Sprache es verwenden soll? – Tobi123

+0

Edit: Natürlich kann ich auch einen deutschen Satz für die Eingabe verwenden, aber die Ergebnis-Tags sind falsch/ergeben keinen Sinn. – Tobi123

Antwort

3

Hier ist ein Beispielcode für einen deutschen Satz Parsing:

import edu.stanford.nlp.io.IOUtils; 
import edu.stanford.nlp.ling.CoreAnnotations; 
import edu.stanford.nlp.pipeline.*; 
import edu.stanford.nlp.simple.*; 
import edu.stanford.nlp.trees.*; 
import edu.stanford.nlp.util.CoreMap; 
import edu.stanford.nlp.util.PropertiesUtils; 
import edu.stanford.nlp.util.StringUtils; 

import java.util.*; 

public class SimpleGermanExample { 

    public static void main(String[] args) { 
     String sampleGermanText = "..."; 
     Annotation germanAnnotation = new Annotation(sampleGermanText); 
     Properties germanProperties = StringUtils.argsToProperties(
       new String[]{"-props", "StanfordCoreNLP-german.properties"}); 
     StanfordCoreNLP pipeline = new StanfordCoreNLP(germanProperties); 
     pipeline.annotate(germanAnnotation); 
     for (CoreMap sentence : germanAnnotation.get(CoreAnnotations.SentencesAnnotation.class)) { 
      Tree sentenceTree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class); 
      System.out.println(sentenceTree); 
     } 
    } 
} 

diesen Beispielcode zu verwenden Stellen Sie sicher, das volle Toolkit herunterladen.

http://stanfordnlp.github.io/CoreNLP/

Auch stellen Sie sicher, dass es jar deutsche Modelle in Ihrem CLASSPATH. Der obige Code weiß, dass Sie alle Objekte in Ihrem CLASSPATH betrachten müssen, und erkennt, dass sich diese Datei im deutschen Jar befindet.

+0

Vielen Dank - ich werde das später versuchen. So einfach zu unetrstand: Diese {"-props", "StanfordCoreNLP-german.properties"} ist der Teil zu sagen, die corenlp es Shell deutschen Modell verwenden? – Tobi123

+0

Ja das ist richtig. – StanfordNLPHelp

+0

Es gibt eine Datei namens: StanfordCoreNLP-german.properties im deutschen Model Jar. – StanfordNLPHelp

0

Zunächst einmal: Das funktioniert, danke! Aber ich brauche diesen komplexen Weg nicht mit all diesen Annotatoren. Deshalb wollte ich mit dem einfachen CoreNLP Api beginnen. Das ist mein Code:

import edu.stanford.nlp.simple.*; 
import java.util.*; 

public class Main { 

public static void main(String[] args) { 

    Sentence sent = new Sentence("Lucy is in the sky with diamonds."); 
    List<String> posTags = sent.posTags(); 
    List<String> words = sent.words(); 
    for (int i = 0; i < posTags.size(); i++) { 
     System.out.println(words.get(i)+" "+posTags.get(i)); 
    } 
    } 
} 

Wie kann ich mit diesem Beispiel die deutschen Dateien Datei arbeiten?

Oder anders herum: Wie bekomme ich in Ihrem Beispiel nur das Wort mit dem pos-Tag?

Verwandte Themen