Voglio fare "coreference resolution" usando OpenNLP. La documentazione di Apache (Coreference Resolution) non copre come eseguire la "risoluzione di coreference" "". Qualcuno ha qualche doc/tutorial su come farlo?Correzione risoluzione usando OpenNLP
risposta
Per OpenNLP esiste una piccola documentazione sulla risoluzione delle coreure al momento ad eccezione di a very short mention of how to run it in the readme.
Se non si è investiti nell'uso di OpenNLP, prendere in considerazione lo Stanford CoreNLP package, che include a Java example of how to run it, tra cui come eseguire la risoluzione di coreference utilizzando il pacchetto. Include anche a page summarizing it's performance, and the papers published on the coreference package.
Recentemente ho riscontrato lo stesso problema e ho scritto alcune note del blog per l'utilizzo degli strumenti OpenNLP 1.5.x. È un po 'denso da copiare nella sua interezza, quindi here's a link with more details.
Ad alto livello, è necessario caricare l'appropriata OpenNLP coreference model libraries e anche il WordNet 3.0 dictionary. A fronte di tali dipendenze, l'inizializzazione dell'oggetto linker è abbastanza semplice:
// 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);
Utilizzando il Linker, però, è un po 'meno ovvio. È necessario:
- Rompere il contenuto verso il basso in frasi e le corrispondenti gettoni
- Creare un oggetto di analisi per ogni frase
Avvolgere ogni frase Analizzare in modo da indicare l'ordine frase:
final DefaultParse parseWrapper = new DefaultParse(parse, idx);
Iterate su ogni frase analizza e usa il linker per ottenere gli oggetti di menzione da ogni analisi:
final Mention[] extents = _linker.getMentionFinder().getMentions(parseWrapper);
Infine, usare il Linker di individuare le entità distinte in tutti gli oggetti Menzione:
DiscourseEntity[] entities = _linker.getEntities(arrayOfAllMentions);
La prego di indicare come ciò sarebbe stato fatto da linea di comando? Grazie. – Haritz
Nel blog hai detto di caricare i modelli usando 'getResourceAsStream' ma alla fine non hai descritto come hai detto a Linker di caricare i modelli usando' getResourceAsStream'. Come hai caricato i modelli? – justhalf
@justhalf Questo è in realtà solo un errore di copia + incolla da un precedente passaggio sul blog. Il 'Linker' prende direttamente il percorso verso i modelli di core-core, quindi non c'è bisogno di usare' getResourceAsStream'. Grazie per averlo capito! – dpdearing