OpenNLP vs Stanford CoreNLP

8

Ich habe einen kleinen Vergleich dieser beiden Pakete gemacht und bin mir nicht sicher, in welche Richtung ich gehen soll. Was ich kurz suche, ist:

  1. Benannte Entitätserkennung (Personen, Orte, Organisationen und so).
  2. Geschlechtsidentifizierung.
  3. Eine anständige Trainings-API.

Von dem, was ich sagen kann, offenbaren OpenNLP und Stanford CoreNLP ziemlich ähnliche Fähigkeiten. Stanford CoreNLP scheint jedoch viel mehr Aktivität zu haben, während OpenNLP in den letzten sechs Monaten nur wenige Commits hatte.

Basierend auf dem, was ich gesehen habe, scheint OpenNLP einfacher zu sein, neue Modelle zu trainieren und könnte allein deshalb attraktiver sein. Meine Frage ist jedoch, wozu andere als Basis für das Hinzufügen von NLP-Funktionen zu einer Java-App dienen. Ich mache mir hauptsächlich Sorgen, ob OpenNLP "nur ausgereift" oder halb verlassen ist.

    
Mike Thomsen 13.10.2016, 16:08
quelle

3 Antworten

7

In der vollständigen Offenlegung bin ich ein Beitrag zu CoreNLP, also ist dies eine voreingenommene Antwort. Aber meiner Meinung nach auf Ihre drei Kriterien:

  1. Named Entity Recognition: Ich denke, CoreNLP gewinnt hier eindeutig an Genauigkeit und Benutzerfreundlichkeit. Zum einen hat OpenNLP ein Modell pro NER-Tag, während CoreNLP alle Tags mit einem einzigen Annotator erkennt. Außerdem ist die zeitliche Auflösung mit SUTime ein schöner Vorteil in CoreNLP. Genauigkeit, meine anekdotische Erfahrung ist, dass CoreNLP besser bei Allzweck-Text ist.

  2. Geschlechtsidentifizierung. Ich denke, dass beide Tools an dieser Front schlecht dokumentiert sind. OpenNLP scheint eine GenderModel-Klasse zu haben; CoreNLP hat einen Geschlecht Annotator.

  3. Trainings-API. Ich vermute, dass die OpenNLP-Trainings-API für nicht standardmäßiges Training einfacher zu verwenden ist. Wenn Sie jedoch beispielsweise ein Modell aus einer CoNLL-Datei trainieren möchten, sollten beide einfach sein. Die Trainingsgeschwindigkeit ist mit CoreNLP tendenziell schneller als mit anderen Tools, die ich ausprobiert habe, aber ich habe es nicht formell getestet, also nehmen Sie das mit einem Körnchen Salz.

Gabor Angeli 14.10.2016, 02:03
quelle
3

Ein bisschen spät, aber ich habe OpenNLP kürzlich nur aufgrund der Tatsache betrachtet, dass Stanford GPL-lizenziert ist - wenn das für Ihr Projekt in Ordnung ist, wird Stanford oft als Benchmark / State-of-the-Art für NLP bezeichnet .

Das heißt, die Leistung für die vortrainierten Modelle hängt von Ihrem Zieltext ab, da dieser sehr domänenspezifisch ist. Wenn Ihr Zieltext den Daten ähnelt, gegen die die Modelle trainiert wurden, sollten Sie anständige Ergebnisse erzielen. Wenn nicht, müssen Sie die Modelle selbst trainieren und es hängt von den Trainingsdaten ab.

Eine Stärke von OpenNlp ist, dass es sehr erweiterbar ist und für die einfache Verwendung mit anderen Bibliotheken geschrieben ist und eine gute API zum Integrieren hat - das Training ist sehr einfach (sobald Sie Ihre Trainingsdaten haben) mit OpenNLP ( Ich habe hier darüber geschrieben - mit einem ziemlich miesen generierten Datensatz konnte ich gute Ergebnisse erzielen Nahrungsmittel zu identifizieren ), und es ist sehr konfigurierbar - Sie können alle Parameter rund um das Training sehr einfach konfigurieren und es gibt eine Reihe von Algorithmen, die Sie verwenden können (Perzeptron, Max-Entropie, und in der Snapshot-Version haben sie Naive Bayes hinzugefügt )

Wenn Sie feststellen, dass Sie die Modelle selbst trainieren müssen, würde ich OpenNlp ausprobieren und sehen, wie es nur zum Vergleich funktioniert, da Sie mit der Feinabstimmung ziemlich gute Ergebnisse erzielen können.

    
rhinds 08.11.2016 18:19
quelle
-3

Das hängt von Ihrem Zweck und Ihrem Bedarf ab, was ich über diese beiden weiß, ist OpenNLP ist opensource und CoreNLP ist natürlich nicht.

Aber wenn Sie auf die Genauigkeitsstufe Stanford CoreNLP schauen, haben Sie eine genauere Erkennung als OpenNLP . Kürzlich habe ich einen Vergleich für das Part Of Speech (POS) -Tagging für beide gemacht und ja, das ist der größte Teil in jeder NLP-Aufgabe. In meiner Analyse war der Gewinner also CoreNLP .

Auch für NER gibt es CoreNLP , die genauere Ergebnisse haben als OpenNLP .

Wenn Sie also gerade starten, können Sie später OpenNLP verwenden, wenn Sie möchten, können Sie zu Stanford CoreNLP migrieren.

    
victor 14.10.2016 06:05
quelle

Tags und Links