2016-05-09 5 views
1

Ich habe gerade OpenNLP für ein kleines Programm verwendet, wo ich einen Absatz in Sätze segmentieren sollte.OpenNLP - Wird für Abkürzungen auch mit Abkürzungswörterbuch noch ein Training benötigt?

Obwohl ich in der Lage war, die Aufgabe nach dem Lesen einiger Dokumentation und dem Durchlaufen ihrer Testfälle zu erledigen, konnte ich nicht anders als feststellen, dass ich immer noch für alle Abkürzungen (Beispiel Yahoo!) trainieren muss, auch wenn ich erstellt habe ein benutzerdefiniertes Abkürzungswörterbuch, übergab es an SentenceDetectorFactory und benutzte es, um SentenceDetectorME zu trainieren.

Ich verwende einen ähnlichen Ansatz wie in diesem test case verwendet.

Ich konnte dieses Verhalten in ihrer Dokumentation nicht finden, noch konnte ich irgendeine Erklärung finden. Gibt es etwas, das mir fehlt?

Edit: Erklärung meines Problems

Obwohl ich noch eine Ausbildung auf Herstellung eingestellt als geeignet für die Domain arbeiten bin ich arbeite in, meine Testdaten aus unstrukturierten Daten aus Web kommen. Manchmal enthält es eine Abkürzung, die keiner meiner Teammitglieder je erwartet hat. Z.B.

Company (acq. by another company) is a good company. 

In diesem Fall sind wir davon ausgegangen, nie acquired das Wort wie acq. auftreten, die eindeutig als Abkürzung verwendet wird.

Jetzt können wir entweder acq. als Abkürzung hinzufügen und das Modell wie angekündigt weiterarbeiten lassen oder das Modell dafür trainieren. Aber selbst nachdem wir es in das Abkürzungswörterbuch aufgenommen hatten, wurde es nicht als Abkürzung behandelt und wir haben am Ende ein Modell für diese Abkürzung gelernt. Dies scheint eine Abweichung vom Konzept des Abkürzungswörterbuchs zu sein.

Ich versuchte ein kleines Beispiel in NLTK mit PunktSentenceTokenizerlike this one, und es funktioniert perfekt.

Ich bin mir nicht sicher, ob ich ein Trainingssatz mit sogar 25.000 Sätzen habe, es wird einen Unterschied machen, wenn OpenNLP das Abkürzungswörterbuch ignoriert.

Antwort

2

Wie groß sind Ihre Trainingsdaten?

Wie gesagt in der Dokumentation:

The training data should contain at least 15000 sentences to create a model which performs well. 

, die das Problem sein könnte, sollten einige große Trainingsdaten geben ein Modell zu machen!

+0

Ja, Opennlp ist unberechenbar! Ich weiß jetzt nicht weiter! -.- hast du [diese] (http://atigeo.com/blog/2016/article-title-2) durchlaufen? –

+0

Ja, das habe ich schon. Ich werde antworten, wenn ich mindestens 15.000 Trainingsstichproben erstellt habe. –