Ich benutze NLTK, um Dokumente zu klassifizieren - mit jeweils 1 Etikett, wobei es 10 Arten von Dokumenten gibt.
Für die Textextraktion putze ich Text (Satzzeichen entfernen, HTML-Tag entfernen, lowcasing), entfernen nltk.corpus.stopwords, sowie meine eigene Sammlung von Stoppwörtern.
Für meine Dokumentfunktion schaue ich auf alle 50k-Dokumente und sammle die obersten 2k-Wörter nach Häufigkeit (frequency_words) und dann nach jedem Dokument, das angibt, welche Wörter im Dokument auch in den globalen frequency_words enthalten sind.
Ich gebe dann jedes Dokument als hashmap von {word: boolean}
in den nltk.NaiveBayesClassifier (...) ein. Ich habe ein 20:80 Test-Trainings-Verhältnis in Bezug auf die Gesamtzahl der Dokumente.
Die Probleme, die ich habe:
Danke!
Terminologie : Dokumente sind in 10 verschiedene Klassen einzuteilen, was sie zu einem mehrklassigen Klassifikationsproblem macht. Wenn Sie Dokumente mit mehreren Labels klassifizieren möchten, können Sie dies auch als Mehrklassen-Multi-Label-Klassifikation bezeichnen.
Für die Probleme, mit denen Sie konfrontiert sind,
nltk.NaiveBayesClassifier () ist ein Out-of-Box-Klassifizierer für mehrere Klassen. Also ja, Sie können dies verwenden, um dieses Problem zu lösen. Wenn Ihre Labels a, b, c, d, e, f, g, h, i, j sind, müssen Sie die Bezeichnung "b" eines bestimmten Dokuments als "0,1, 0,0,0,0,0,0,0,0 '.
Feature Extraction ist der schwierigste Teil von Classification (Machine Learning). Ich empfehle Ihnen, verschiedene Algorithmen zu untersuchen, um die für Ihre Daten am besten geeignete auszuwählen und auszuwählen (ohne Ihre Daten zu betrachten, ist es schwer zu empfehlen, welchen Algorithmus / welche Implementierung zu verwenden ist)
Es gibt viele verschiedene Bibliotheken zur Klassifizierung. Ich persönlich habe scikit-learn benutzt und kann sagen, dass es ein guter Out-of-Box-Klassifikator war.
Hinweis: Mit scikit-learn konnte ich innerhalb einer Woche Ergebnisse erzielen, da der Datensatz sehr groß war und andere Rückschläge zu verzeichnen waren.
Tags und Links python nlp nltk document-classification