Используйте scikit-learn для классификации по нескольким категориям

Я пытаюсь использовать один из контролируемых методов обучения scikit-learn для классификации фрагментов текста в одну или несколько категорий. Функция прогнозирования всех алгоритмов, которые я пробовал, просто возвращает одно совпадение.

Например, у меня есть фрагмент текста:

"Theaters in New York compared to those in London"

И я обучил алгоритм выбирать место для каждого фрагмента текста, который я ему подаю.

В приведенном выше примере я бы хотел, чтобы он возвращал New Yorkи London, но он возвращает только New York.

Можно ли использовать scikit-learn для возврата нескольких результатов? Или даже вернуть метку со следующей наивысшей вероятностью?

Спасибо за помощь.

---Обновление

Я пытался использовать OneVsRestClassifier, но по-прежнему получаю только один вариант для каждого фрагмента текста. Ниже приведен пример кода, который я использую.

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

Результат: ['Нью-Йорк' 'Лондон' 'Лондон']

76
задан petezurich 22 April 2018 в 19:08
поделиться