Resuelva la correlación usando Stanford CoreNLP - no se puede cargar el modelo de analizador

Quiero hacer un trabajo muy simple: dada una cadena que contiene pronombres, quiero resolverlos.

por ejemplo, quiero convertir la frase "María tiene un corderito. Es linda". en "María tiene un corderito. María es linda".

He intentado utilizar Stanford CoreNLP. Sin embargo, parece que no puedo hacer que el analizador comience. He importado todos los archivos jars incluidos en mi proyecto usando Eclipse, y he asignado 3 GB a la JVM (-Xmx3g).

El error es muy incómodo:

Excepción en el subproceso "main" java.lang.NoSuchMethodError: edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel (Ljava / lang / String; [Ljava / lang / String;) Ledu / stanford / nlp / parser / lepx / Láser Lexicalized;

No entiendo de dónde viene esa L, creo que es la raíz de mi problema ... Esto es bastante raro. He intentado acceder a los archivos de origen, pero no hay ninguna referencia incorrecta.

Código:

import edu.stanford.nlp.semgraph.SemanticGraphCoreAnnotations.CollapsedCCProcessedDependenciesAnnotation;
import edu.stanford.nlp.dcoref.CorefCoreAnnotations.CorefChainAnnotation;
import edu.stanford.nlp.dcoref.CorefCoreAnnotations.CorefGraphAnnotation;
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.trees.TreeCoreAnnotations.TreeAnnotation;
import edu.stanford.nlp.ling.CoreLabel;
import edu.stanford.nlp.dcoref.CorefChain;
import edu.stanford.nlp.pipeline.*;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.semgraph.SemanticGraph;
import edu.stanford.nlp.util.CoreMap;
import edu.stanford.nlp.util.IntTuple;
import edu.stanford.nlp.util.Pair;
import edu.stanford.nlp.util.Timing;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import java.util.Properties;

public class Coref {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) throws IOException, ClassNotFoundException {
    // 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);

    // read some text in the text variable
    String text = "Mary has a little lamb. She is very cute."; // 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);
      System.out.println(tree);

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

    // This is the coreference link graph
    // Each chain stores a set of mentions that link to each other,
    // along with a method for getting the most representative mention
    // Both sentence and token offsets start at 1!
    Map<Integer, CorefChain> graph = 
      document.get(CorefChainAnnotation.class);
    System.out.println(graph);
  }
}

Rastreo de pila completa:

Agregar tokenize de anotador Agregar ssplit de anotador Agregar pos de anotador Cargando modelo POS [edu / stanford / nlp / models / pos-tagger / english-left3words / english-left3words-distsim.tagger] ... Cargando propiedades predeterminadas de edu / stanford / tagger capacitado nlp / models / pos-tagger / english-left3words / english-left3words-distsim.tagger Leyendo el modelo POS tagger de edu / stanford / nlp / models / pos-tagger / english-left3words / english-left3words-distsim.tagger ... hecho [2.1 seg]. hecho [2.2 seg]. Agregando el lema del anotador Agregando el anotador ner Cargando clasificador desde edu / stanford / nlp / models / ner / english.all.3class.distsim.crf.ser.gz ... hecho [4.0 seg]. Cargando el clasificador de edu / stanford / nlp / models / ner / english.muc.distsim.crf.ser.gz ... hecho [3.0 seg]. Cargando el clasificador desde edu / stanford / nlp / models / ner / english.conll.distsim.crf.ser.gz ... hecho [3.3 seg]. Adición del anotador del anotador Excepción en el hilo "main" java.lang.NoSuchMethodError: edu.stanford.nlp.parser.lexparser.LexicalizedParser.loadModel (Ljava / lang / String; [Ljava / lang / String;) Ledu / stanford / np /pp / / lexparser / LexicalizedParser; at edu.stanford.nlp.pipeline.ParserAnnotator.loadModel (ParserAnnotator.java:115) en edu.stanford.nlp.pipeline.ParselineAnnotp. (StanfordCoreNLP.java:603) en edu.stanford.nlp.pipeline.StanfordCoreNLP $ 12.create (StanfordCoreNLP.java:585) en edu.stanford.2.cip.pipeline.AnnotatorPool.get (AnnotatorPool.java.62) .nlp.pipeline.StanfordCoreNLP.construct (StanfordCoreNLP.java:329) en edu.stanford.nlp.pipeline.StanfordCoreNLP. (StanfordCoreNP.P.P.P.C.P.). ) en edu.stanford.nlp.pipeline.StanfordCoreNLP. (StanfordCoreNLP.java:178) en Coref.main (Coref.java:41)

Respuestas a la pregunta(1)

Su respuesta a la pregunta