Привет, я изучаю ИИ для создания чат-бота, сейчас я тестирую классификацию с помощью sklearn, мне удается получить хорошие результаты с помощью следующего кода.
def tuned_nominaldb():
global Tuned_Pipeline
pipeline = Pipeline([
('tfidf', TfidfVectorizer(analyzer=text_process)),
('clf', OneVsRestClassifier(MultinomialNB(
fit_prior=True, class_prior=None))),
])
parameters = {
'tfidf__max_df': (0.25, 0.5, 0.75),
'tfidf__ngram_range': [(1, 1), (1, 2), (1, 3)],
'clf__estimator__alpha': (1e-2, 1e-3)
}
Tuned_Pipeline = GridSearchCV(pipeline, parameters, cv=2, n_jobs=2, verbose=10)
Tuned_Pipeline.fit(cumle_train, tur_train)
мои ярлыки:
- Сквернословие
- Политика
- религиозный
- Общий
когда я ввожу любое предложение, я чаще всего получаю правильную метку в качестве вывода. но моя проблема в том, что я хочу получить несколько ярлыков, например, если я комбинирую ненормативную лексику и политику, это предсказывает только нецензурную лексику, как я могу получить несколько ярлыков, например, ненормативная лексика + политика.
Я попытался добавить следующий код, но получил ошибку, что строка не ожидалась для подходящего метода.
multiout = MultiOutputClassifier(Tuned_Pipeline, n_jobs=-1)
multiout.fit(cumle_train, tur_train)
print(multiout.predict(cumle_test))
Спасибо большое за вашу помощь