2017-04-19 2 views
0

Ich habe versucht, ein Modell für Named Entity Recognition für eine bestimmte Domäne und mit neuen Entitäten zu trainieren. Es scheint, dass es keine fertige Pipeline dafür gibt, und es besteht die Notwendigkeit, verschiedene Pakete zu verwenden.Zug Korpus für NER mit NLTK ieer oder conll2000 Korpus

Ich möchte NLTK eine Chance geben. Meine Frage ist, wie kann ich einen NLTK NER trainieren, um neue Entitäten unter Verwendung des Ieer Corpus zu klassifizieren und anzupassen?

Ich werde natürlich Trainingsdaten mit dem IOB-Format wie bieten:

We PRP B-NP 
saw VBD O 
the DT B-NP 
yellow JJ I-NP 
dog NN I-NP 

Ich denke, ich werde die Token von mir markieren müssen.

Was mache ich als nächstes, wenn ich eine Textdatei in diesem Format habe, was sind die Schritte, um meine Daten mit dem Iser-Korpus zu trainieren, oder mit einem besseren, conll2000?

Ich weiß, dass es da draußen einige Dokumente gibt, aber es ist nicht klar für mich, was zu tun ist, nachdem Sie einen Trainingskorpus markiert haben.

Ich möchte für NLTK gehen, weil ich dann die relextract() Funktion verwenden möchten.

Bitte irgendwelche beraten.

Dank

Antwort

1

Die nltk bietet alles, was Sie brauchen. Lesen Sie das Kapitel 6 des nltk-Buches unter Learning to Classify Text. Es gibt Ihnen ein funktionierendes Beispiel für die Klassifizierung. Dann studieren Sie die Abschnitte 2 und 3 von Chapter 7, die Ihnen zeigen, wie Sie mit IOB-Text arbeiten und einen Chunking-Klassifikator schreiben. Obwohl die Beispielanwendung keine Entity-Erkennung genannt wird, sollten die Code-Beispiele fast keine Änderungen erfordern (obwohl Sie natürlich eine benutzerdefinierte Feature-Funktion benötigen, um eine ordentliche Leistung zu erhalten.)

Sie können auch den nltk's Tagger verwenden (oder einen anderen Tagger), um POS-Tags zu Ihrem Korpus hinzuzufügen, oder Sie könnten Ihre Chancen nutzen und versuchen, einen Klassifikator für Daten ohne Wortarten-Tags zu trainieren (nur die IOB-benannten Entitätskategorien). Meine Vermutung ist, dass das POS-Tagging die Leistung verbessert, und Sie sind tatsächlich viel besser dran, wenn der gleiche POS-Tagger für die Trainingsdaten verwendet wird wie für die Auswertung (und schließlich die Produktionsnutzung).

+0

Danke für die Infos Alexis, ich bin mir dieser Dokumente bewusst, aber ich kann immer noch nicht herausfinden, wie man mit dem Training vorgeht, sobald man die Trainingsdaten hat. Könntest du ein paar Beispiele geben? –

+0

Die von mir zitierten Kapitel sind sehr vollständige Tutorials. Wenn Sie irgendwo steckenbleiben, geben Sie Ihren Code (den relevanten Teil) ein und stellen Sie eine spezielle Frage zu dem Schritt, der schief geht. – alexis

+0

Ich habe meinen eigenen Klassifikator erstellt, aber immer noch einige Probleme. Ich habe eine neue Frage hier gepostet: http://stackoverflow.com/questions/43662829/how-to-call-the-classifierbasedtagger-in-nltk Wäre nett, einige Empfehlungen zu hören. –

Verwandte Themen