Testen des NLTK-Klassifikators für eine bestimmte Datei

8

Der folgende Code führt Naive Bayes Film Review Classifier aus. Der Code generiert eine Liste der informativsten Funktionen.

Hinweis: Der Ordner **movie review** befindet sich in nltk .

%Vor%

Link des Codes von alvas

Wie kann ich den Klassifizierer für eine bestimmte Datei testen?

Bitte lassen Sie mich wissen, ob meine Frage mehrdeutig oder falsch ist.

    
ZaM 27.03.2015, 13:34
quelle

2 Antworten

8

Lesen Sie zuerst diese Antworten sorgfältig durch, sie enthalten Teile der Antworten, die Sie benötigen, und erläutern kurz, was der Klassifikator macht und wie er in NLTK funktioniert:

Klassifikator für annotierte Daten testen

Nun, um Ihre Frage zu beantworten. Wir gehen davon aus, dass Ihre Frage ein Follow-up dieser Frage ist: Mit meinem eigenen Korpus anstelle des Film-Kommentar-Korpus für die Klassifikation in NLTK

Wenn Ihr Testtext wie der movie_review -Korpus strukturiert ist, können Sie die Testdaten einfach wie für die Trainingsdaten lesen:

Nur für den Fall, dass die Erklärung des Codes unklar ist, hier ist eine Walkthrough:

%Vor%

Die zwei Zeilen oben sollen ein Verzeichnis my_movie_reviews mit einer solchen Struktur lesen:

%Vor%

Dann extrahiert die nächste Zeile Dokumente mit dem pos/neg -Tag, das Teil der Verzeichnisstruktur ist.

%Vor%

Hier ist die Erklärung für die obige Zeile:

%Vor%

Der gleiche Prozess sollte angewendet werden, wenn Sie die Testdaten lesen !!!

Nun zur Feature-Verarbeitung:

Die folgenden Zeilen ergänzen die Top 100 Features für den Klassifikator:

%Vor%

Neben der Verarbeitung der Dokumente in klassifizierbares Format:

%Vor%

Nun, um das Verständnis der langen Liste für train_set und 'test_set:

zu erklären %Vor%

Sie müssen die Dokumente wie oben für die Feature-Extraktionen auch in den Testdokumenten bearbeiten !!!

So können Sie die Testdaten lesen:

%Vor%

Fahren Sie dann mit den oben beschriebenen Verarbeitungsschritten fort und tun Sie dies, um die Bezeichnung für das Testdokument zu erhalten, wie @yvespeirsman geantwortet hat:

%Vor%

Wenn der obige Code und die obige Erklärung für Sie keinen Sinn ergeben, dann sollten Sie dieses Tutorial lesen, bevor Sie fortfahren: Ссылка

Nehmen wir an, Sie haben keine Anmerkung in Ihren Testdaten, d. h. Ihre test.txt ist nicht in der Verzeichnisstruktur wie die movie_review und nur eine einfache Textdatei:

%Vor%

Dann hat es keinen Sinn, es in ein kategorisiertes Korpus zu lesen, Sie können einfach die Dokumente lesen und markieren, d. h .:

%Vor%

ABER Sie können die Ergebnisse NICHT ohne Annotation auswerten , so dass Sie das Tag nicht überprüfen können, wenn if-else , auch Ihren Text tokenisieren müssen , wenn Sie Verwenden Sie nicht den CategorizedPlaintextCorpusReader.

Wenn Sie nur eine Klartextdatei test.txt :

markieren möchten %Vor%

Noch einmal, bitte kopieren Sie nicht einfach die Lösung und versuchen Sie zu verstehen, warum und wie sie funktioniert.

    
alvas 29.03.2015, 11:10
quelle
4

Sie können eine Datei mit classifier.classify () testen. Diese Methode verwendet ein Wörterbuch mit den Features als Schlüssel und True oder False als deren Werte, je nachdem, ob das Feature im Dokument vorkommt oder nicht. Es gibt die wahrscheinlichste Bezeichnung für die Datei gemäß dem Klassifizierer aus. Sie können dieses Etikett dann mit dem korrekten Etikett für die Datei vergleichen, um festzustellen, ob die Klassifizierung korrekt ist.

In Ihren Trainings- und Test-Sets sind die Feature-Wörterbücher immer das erste Element in den Tupeln, die Label sind das zweite Element in den Tupeln.

Damit können Sie das erste Dokument im Testset wie folgt klassifizieren:

%Vor%     
yvespeirsman 29.03.2015 03:19
quelle