Stanford Parser - use el modelo alemán jar

Quiero usar el analizador stanford dentro del coreNLP. Ya tengo este ejemplo funcionando:

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

PERO: Necesito el modelo alemán. Así que descargué "stanford-german-2016-01-19-models.jar".

Pero, ¿cómo puedo configurar este archivo jar para su uso? Solo encontré:

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

pero tengo un frasco con los modelos germn, NO un ... ser.gz.

¿Puede alguien ayudar?

Respuesta 1

Aquí hay un código de muestra para analizar una oración en alemán:

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

Asegúrese de descargar el kit de herramientas completo para usar este código de muestra.

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

También asegúrese de tener un frasco de modelos alemanes en su CLASSPATH. El código anterior sabrá mirar todos los frascos en su CLASSPATH y reconocerá que el archivo está en el frasco alemán.

Respuesta: 2

Primero que nada: Esto funciona, ¡Gracias! Pero, no necesito esta forma compleja con todos estos anotadores. Es por eso que quería comenzar con la simple CoreNLP Api. Ese es mi código:

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

¿Cómo puedo hacer que el archivo de propiedades alemanas funcione con este ejemplo?

O a la inversa: ¿cómo obtengo solo la palabra con la etiqueta pos en su ejemplo?

Respuesta: 3

Estoy haciendo un juego / simulación de estilo de cuadrícula basado en errores que "detectan" y comen alimentos. Estoy usando un gridPane (llamado worldGrid) de etiquetas para mostrar la cuadrícula de errores y alimentos. Esto obviamente va a ser ...

Dada la siguiente jerarquía de tipos hipotéticos: BaseElement + StringElement + .... + .... + BooleanElement + .... + .... + ... Tengo una interfaz de clase en la forma: ...

Mi proyecto finalmente está completo, pero mi único problema es que mi maestro no acepta "interrupciones" en nuestro código. ¿Alguien puede ayudarme a resolver este problema? He estado trabajando en ello durante días y simplemente no puedo ...

Soy muy nuevo en Java, perdón si la pregunta es demasiado simple. Estoy tratando de evaluar si una matriz es parte de la secuencia de Fibonacci. No sé cómo devolver el valor "verdadero" cuando todo "para" ...