Я намагаюся використовувати один із контрольованих методів навчання 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
Результат: ['Нью-Йорк' 'Лондон' 'Лондон']