2011-12-25 19 views

Respuesta

9

Hay poca documentación de resolución de correferencia para OpenNLP en este momento excepto a very short mention of how to run it in the readme.

Si no está involucrado en el uso de OpenNLP, considere el Stanford CoreNLP package, que incluye a Java example of how to run it,, que incluye cómo realizar la resolución de correferencia utilizando el paquete. También incluye a page summarizing it's performance, and the papers published on the coreference package.

11

Recientemente me encontré con el mismo problema y escribí algunas notas de blog para usar las herramientas de OpenNLP 1.5.x. Es un poco denso para copiar en su totalidad, por lo que here's a link with more details.


En un nivel alto, es necesario cargar la apropiada OpenNLP coreference model libraries y también el WordNet 3.0 dictionary. Teniendo en cuenta estas dependencias, inicializar el objeto enlazador es bastante sencillo:

// LinkerMode should be TEST 
//Note: I tried LinkerMode.EVAL before realizing that this was the problem 
Linker _linker = new DefaultLinker("lib/opennlp/coref", LinkerMode.TEST); 

Utilizando el Linker, sin embargo, es un poco menos obvio. Es necesario:

  1. Romper el contenido hacia abajo en las oraciones y las fichas correspondientes
  2. Crear un objeto de análisis sintáctico para cada frase
  3. Wrap cada frase Procesar el fin de indicar el orden frase:

    final DefaultParse parseWrapper = new DefaultParse(parse, idx);
  4. iterar sobre cada frase ane de análisis utilización del enlazador para conseguir los objetos de cada Mención de análisis:

    final Mention[] extents = 
        _linker.getMentionFinder().getMentions(parseWrapper);
  5. Por último, la utilización del enlazador para identificar las distintas entidades a través de todos los objetos se encuentran:

    DiscourseEntity[] entities = _linker.getEntities(arrayOfAllMentions);
+0

¿Me podría indicar la forma en que esto se haría desde la línea de comandos? Gracias. – Haritz

+0

En el blog dijiste que cargaste los modelos usando 'getResourceAsStream' pero al final no describiste cómo le dijiste a Linker que cargara los modelos usando' getResourceAsStream'. ¿Cómo cargaste los modelos? – justhalf

+0

@justhalf Eso es en realidad solo un error de copiar y pegar de un paso anterior en el blog. El 'Linker' toma el camino a los modelos de correferencia directamente, por lo que no es necesario usar' getResourceAsStream'. Gracias por atrapar eso! – dpdearing

Cuestiones relacionadas