Ich erbte ein Java-System, das um CoreNLP geschrieben wurde, was bedeutet, dass Systemklassen CoreNLP-Klassen an einigen Stellen als Felder verwenden, zusätzlich zum CoreNLP-Parser.Gibt es eine Brücke zwischen Stanfords CoreNLP- und OpenNLP-Parsern?
Ich möchte die Genauigkeit des Systems mit verschiedenen Parsern testen, und zu diesem Zweck habe ich den Code umgestaltet, um einen verallgemeinerten Parseradapter zu verwenden, dessen Unterklassen das notwendige Bridging zwischen der CoreNLP API und der spezifischen Parserimplementierung durchführen sollten .
Jetzt ist die Unterklasse StanfordParserAdapter trivial. Mein Problem beginnt mit der OpnNlpParserAdapter-Unterklasse. Gibt es eine Brücke zwischen diesen Parsern, die ich benutzen kann? Wenn das so ist, wird es mir (und möglicherweise anderen) viel Arbeit ersparen.
Beispiel: Mit einem List<HasWord>
zu analysieren, produziert CoreNLP Tree
. Ich möchte, dass der OpenNLP-Parser (durch den Überbrückungscode) ein gleichwertiges Stanford Tree
-Objekt erzeugt, wenn er die gleiche Eingabe erhält.
Ich denke nicht, Bridging ist auch die optimale Lösung, aber ich bin nicht im Begriff, die Hälfte des Systems umschreiben, nur um OpenNLP direkt zu verwenden ...: -/ Ich habe kein Problem mit der Konfiguration oder Verwendung von OpenNLP (oder andere Parser für diese Angelegenheit), meine Frage war speziell über den Überbrückungscode. Irgendwann könnte es für jemand anderen hilfreich sein. – Yuval
die Hälfte des Systems umschreiben? es ist nur das Hinzufügen der opennlp jars und Erstellen einer Parser-Methode, nicht wahr? :/ – Nuwanda
Wenn Sie den ersten Satz der Frage gelesen haben, sehen Sie, dass viele Klassen mit Stanford-Klassen geschrieben wurden. Ich wünschte, ich könnte einfach den Stanford-Parser ausstecken und einen neuen Parser an seiner Stelle einstecken ... – Yuval