Я пытаюсь решить проблему классификации текста.У меня есть ограниченное количество меток, которые фиксируют категорию моих текстовых данных.Если входящие текстовые данные не соответствуют ни одной метке, они помечаются как «Другие».В приведенном ниже примере я построил классификатор текста, чтобы классифицировать текстовые данные как «завтрак» или «итальянский».В тестовом сценарии я включил пару текстовых данных, которые не вписываются в метки, которые я использовал для обучения.Это проблема, с которой я сталкиваюсь.В идеале, я хочу, чтобы модель сказала - «Другое» для «я люблю походы» и «все должны понимать математику».Как я могу это сделать?
import numpy as np
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import TfidfTransformer
X_train = np.array(["coffee is my favorite drink",
"i like to have tea in the morning",
"i like to eat italian food for dinner",
"i had pasta at this restaurant and it was amazing",
"pizza at this restaurant is the best in nyc",
"people like italian food these days",
"i like to have bagels for breakfast",
"olive oil is commonly used in italian cooking",
"sometimes simple bread and butter works for breakfast",
"i liked spaghetti pasta at this italian restaurant"])
y_train_text = ["breakfast","breakfast","italian","italian","italian",
"italian","breakfast","italian","breakfast","italian"]
X_test = np.array(['this is an amazing italian place. i can go there every day',
'i like this place. i get great coffee and tea in the morning',
'bagels are great here',
'i like hiking',
'everyone should understand maths'])
classifier = Pipeline([
('vectorizer', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', MultinomialNB())])
classifier.fit(X_train, y_train_text)
predicted = classifier.predict(X_test)
proba = classifier.predict_proba(X_test)
print(predicted)
print(proba)
['italian' 'breakfast' 'breakfast' 'italian' 'italian']
[[0.25099411 0.74900589]
[0.52943091 0.47056909]
[0.52669142 0.47330858]
[0.42787443 0.57212557]
[0.4 0.6 ]]
Я считаю категорию «Другие» шумом и не могу смоделировать эту категорию.