Dies ist eine Reihe von Feature -Auswahlcodes aus Textdaten. (Über Feature -Auswahl siehe hier oder hier)
Die Feature -Auswahl ist sehr wichtig, wenn Sie maschinelle Lernmetriken für natürliche Sprachdaten verwenden. Die Daten der natürlichen Sprache enthalten normalerweise viele Rauschinformationen, daher sind maschinelle Lernmetriken schwach, wenn Sie keine Feature -Auswahl verarbeiten. (Es gibt einige Ausnahmen von Algorithmen wie Entscheidungsbaum oder zufälliger Wald . Sie haben eine Merkmalsmetrik im Inneren des Algorithmus selbst)
Die Feature -Auswahl ist auch nützlich, wenn Sie Ihre Textdaten beobachten. Mit der Feature -Auswahl erfahren Sie, welche Funktionen wirklich zu bestimmten Etiketten beitragen.
Bitte besuchen Sie die Projektseite auf GitHub.
Wenn Sie Fehler finden und es an GitHub -Problem melden, bin ich froh.
Alle Pull-Requests sind begrüßt.
Dieses Paket bietet Ihnen einige Metriken für Funktionsauswahl. Derzeit unterstützt dieses Paket die folgenden Methoden zur Auswahl der Funktionen aus der Feature
Diese Methode nennt nur TfidfTransformer des Scikit-Learn.
Siehe Scikit-Learn-Dokument über detaillierte Informationen.
PMI wird durch Korrelation zwischen Merkmal (dh Token) und Kategorie (dh Label) berechnet. Konkret macht es Cross-Tisch (oder als Notfalltabelle bezeichnet) und berechnet die gemeinsame Wahrscheinlichkeit und Grenzwahrscheinlichkeit.
Um mehr zu erfahren, siehe Referenz
In Python World bieten NLTK und ein anderes Paket auch PMI. Überprüfen Sie sie und wählen Sie basierend auf Ihrer Präferenz und Verwendung.
SOA ist eine verbesserte Merkmalsauswahlmethode von PMI. PMI ist schwach, wenn die Feature eine geringe Wortfrequenz aufweist. SOA basiert auf PMI -Computing, ist jedoch bei solchen niedrigen Frequenzmerkmalen möglich. Darüber hinaus können Sie Anti-Korrelation zwischen Funktionen und Kategorien erhalten.
In diesem Paket stammt die SOA -Formel aus dem folgenden Papier.
Saif Mohammad and Svetlana Kiritchenko, "Using Hashtags to Capture Fine Emotion Categories from Tweets", Computational Intelligence, 01/2014; 31(2).
SOA(w, e) = log_2frac{freq(w, e) * freq(neg{e})}{freq(e) * freq(w, neg{e})}
Wo
BNS ist eine Merkmalsauswahlmethode für Binärklassendaten. Für binäre Klassendaten sind mehrere Methoden verfügbar, wie z. B. Informationsgewinn (IG) , Chi-Quadrat (CHI) , Odds Ratio (Chancen) .
Das Problem ist, wenn Sie Ihre Feature -Auswahl auf verzerrten Daten ausführen. Diese Methoden sind für solche verzerrten Daten schwach. BNS ist jedoch nur für verzerrte Daten möglich. Das folgende Papier zeigt, wie BNS für verzerrte Daten möglich ist.
Lei Tang and Huan Liu, "Bias Analysis in Text Classification for Highly Skewed Data", 2005
oder
George Forman, "An Extensive Empirical Study of Feature Selection Metrics for Text Classification",Journal of Machine Learning Research 3 (2003) 1289-1305
python setup.py install
Sie sehen möglicherweise die Fehlermeldung beim Ausführen dieses Befehls, wie z. B.
We failed to install numpy automatically. Try installing numpy manually or Try anaconda distribution.
Dies liegt daran, dass setup.py versucht, Numpy und Scipy mit pip zu installieren, es scheitert jedoch. Wir brauchen Numpy und Scipy, bevor wir scikit-learn installieren.
In diesem Fall treffen Sie die folgende Wahl
numpy und scipy manuellanaconda Python Distribution. Bitte besuchen Sie ihre Website. input_dict = {
"label_a" : [
[ "I" , "aa" , "aa" , "aa" , "aa" , "aa" ],
[ "bb" , "aa" , "aa" , "aa" , "aa" , "aa" ],
[ "I" , "aa" , "hero" , "some" , "ok" , "aa" ]
],
"label_b" : [
[ "bb" , "bb" , "bb" ],
[ "bb" , "bb" , "bb" ],
[ "hero" , "ok" , "bb" ],
[ "hero" , "cc" , "bb" ],
],
"label_c" : [
[ "cc" , "cc" , "cc" ],
[ "cc" , "cc" , "bb" ],
[ "xx" , "xx" , "cc" ],
[ "aa" , "xx" , "cc" ],
]
}
from DocumentFeatureSelection import interface
interface . run_feature_selection ( input_dict , method = 'pmi' , use_cython = True ). convert_score_matrix2score_record ()Dann erhalten Sie das Ergebnis
[{ 'score' : 0.14976146817207336 , 'label' : 'label_c' , 'feature' : 'bb' , 'frequency' : 1.0 }, ...] Siehe Skripte in examples/
Sie können die Entwicklungsumgebung mit Docker-Compose einrichten.
In diesem Befehl wird der Test mit dem Docker -Container ausgeführt.
$ cd tests/
$ docker-compose build
$ docker-compose up