NLTK - Multi-Label-Klassifizierung

8

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:

  1. Ist dieser Klassifikator nach NLTK, geeignet für Multi-Label-Daten? - Bei allen Beispielen, die ich gesehen habe, geht es mehr um die 2-Klassen-Klassifizierung, z. B. ob etwas als positiv oder negativ.
  2. Die Dokumente sind so, dass sie eine Reihe von Schlüsselqualifikationen haben sollten - leider habe ich kein Korpus, wo diese Fähigkeiten liegen. Also habe ich einen Ansatz mit dem Verständnis genommen, eine Wortzahl pro Dokument wäre kein guter Dokumentenextraktor - ist das korrekt? Jedes Dokument wurde von Einzelpersonen geschrieben, so dass ich für individuelle Variation im Dokument weglassen muss. Mir ist SkLearn MBNaiveBayes bekannt, das sich mit der Anzahl der Wörter beschäftigt.
  3. Gibt es eine alternative Bibliothek, die ich verwenden sollte, oder eine Variation dieses Algorithmus?

Danke!

    
redrubia 09.05.2014, 18:39
quelle

1 Antwort

2

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,

  1. 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 '.

  2. 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)

  3. 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.

    
shyamal 09.08.2016, 17:46
quelle