Ich versuche, eine der von scikit-learn überwachten Lernmethoden zu verwenden, um Textteile in eine oder mehrere Kategorien einzuteilen. Die Vorhersagefunktion aller Algorithmen, die ich ausprobiert habe, gibt nur eine Übereinstimmung zurück.
Zum Beispiel habe ich einen Text:
"Theaters in New York compared to those in London"
Und ich habe den Algorithmus so trainiert, dass er für jedes Textschnipsel, das ich füttere, einen Ort auswählt.
Im obigen Beispiel würde ich will es zurück New York
und London
, aber es gibt nur New York
.
Ist es möglich, mit scikit-learn mehrere Ergebnisse zurückzugeben? Oder sogar das Etikett mit der nächsthöheren Wahrscheinlichkeit zurückgeben?
Danke für Ihre Hilfe.
---Aktualisieren
Ich habe es versucht, OneVsRestClassifier
aber ich bekomme immer noch nur eine Option pro Textstück zurück. Unten ist der Beispielcode, den ich verwende
y_train = ('New York','London')
train_set = ("new york nyc big apple", "london uk great britain")
vocab = {'new york' :0,'nyc':1,'big apple':2,'london' : 3, 'uk': 4, 'great britain' : 5}
count = CountVectorizer(analyzer=WordNGramAnalyzer(min_n=1, max_n=2),vocabulary=vocab)
test_set = ('nice day in nyc','london town','hello welcome to the big apple. enjoy it here and london too')
X_vectorized = count.transform(train_set).todense()
smatrix2 = count.transform(test_set).todense()
base_clf = MultinomialNB(alpha=1)
clf = OneVsRestClassifier(base_clf).fit(X_vectorized, y_train)
Y_pred = clf.predict(smatrix2)
print Y_pred
Ergebnis: ['New York' 'London' 'London']