Estoy tratando de usar uno de los métodos de aprendizaje supervisado de scikit-learn para clasificar fragmentos de texto en una o más categorías. La función de predicción de todos los algoritmos que probé solo devuelve una coincidencia.
Por ejemplo, tengo un fragmento de texto:
"Theaters in New York compared to those in London"
Y he entrenado el algoritmo para que elija un lugar para cada fragmento de texto que le proporcione.
En el ejemplo anterior, me gustaría que regresara New Yorky London, pero solo regresa New York.
¿Es posible usar scikit-learn para devolver múltiples resultados? ¿O incluso devolver la etiqueta con la siguiente probabilidad más alta?
Gracias por tu ayuda.
---Actualizar
Intenté usarlo, OneVsRestClassifierpero solo obtengo una opción por texto. A continuación se muestra el código de muestra que estoy usando
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
Resultado: ['Nueva York' 'Londres' 'Londres']