Ich versuche, einen maschinellen Lernalgorithmus mit scikit-learn
zu schreiben, der Text analysiert und basierend auf Trainingsdaten klassifiziert.Behalten Sie die Reihenfolge der Textdaten bei der Vektorisierung
Das Beispiel für die Verwendung von Textdaten, die direkt aus der Dokumentation scikit-learn
entnommen wurden, verwendet eine CountVectorizer
, um ein Sparse-Array zu generieren, wie oft jedes Wort angezeigt wird.
>>> from sklearn.feature_extraction.text import CountVectorizer
>>> count_vect = CountVectorizer()
>>> X_train_counts = count_vect.fit_transform(twenty_train.data)
Leider berücksichtigt dies keine Reihenfolge der Phrasen. Es ist möglich, größere ngrams
(CountVectorizer(ngram_range=(min, max))
) zu verwenden, um bestimmte Ausdrücke zu betrachten, aber dies erhöht die Anzahl der Merkmale schnell und ist nicht einmal so groß.
Gibt es eine gute Möglichkeit, auf andere Weise mit geordnetem Text umzugehen? Ich bin definitiv offen für die Verwendung eines Parsers für natürliche Sprache (nltk
, textblob
, etc.) zusammen mit scikit-learn
.
Das Bag-of-words + Naive Bayes-Modell funktioniert in einigen Kontexten ziemlich gut. Machst du eine binäre Klassifizierung oder Multi-Klasse? – bpachev
@bpachev Ich beginne mit der binären Klassifizierung, aber ich würde gerne zu Multi-Klasse kommen, sobald mein binärer Klassifizierer anständig arbeitet. – 2Cubed