Я занимаюсь разработкой классификатора текстовых тем, который может обозначать предложения или небольшие вопросы.Пока он может маркировать около 30 известных предметов.
Работает хорошо, но начинает смешивать похожие вопросы друг с другом.
Например, эти 3 ярлыка:
1) Метка - backup_proxy_intranet: Как настроить резервный прокси для приложения в интрасети?... и 140 похожих вопросов, содержащих «резервный прокси-сервер для приложения для интрасети» ...
2) Метка - smartphone_intranet: Как использовать приложение интранет в моем смартфоне?и ... и 140 похожих вопросов, содержащих «приложение интранет в моем смартфоне» ...
3) Метка - ticket_intranet: Как связать заказ билета с приложением интранет?... и 140 похожих вопросов, содержащих «заказ билетов через приложение для интрасети» ...
После обучения эти 3 всегда возвращают метку backup_proxy_intranet .Что я могу сделать, чтобы отделить их?
series = series.dropna()
series = shuffle(series)
X_stemmed = []
for x_t in series['phrase']:
stemmed_text = [stemmer.stem(i) for i in word_tokenize(x_t)]
X_stemmed.append(' '.join(stemmed_text))
x_normalized = []
for x_t in X_stemmed:
temp_corpus=x_t.split(' ')
corpus=[token for token in temp_corpus if token not in stops]
x_normalized.append(' '.join(corpus))
X_train,X_test,y_train,y_test = train_test_split(x_normalized,series['target'],random_state=0,test_size=0.20)
vect = CountVectorizer(ngram_range=(1,3)).fit(X_train)
X_train_vectorized = vect.transform(X_train)
sampler = SMOTE()
model = make_pipeline(sampler, LogisticRegression())
print()
print("-->Model: ")
print(model)
print()
print("-->Training... ")
model.fit(X_train_vectorized,y_train)
filename = '/var/www/html/python/intraope_bot/lib/textTopicClassifier.model'
pickle.dump(model,open(filename, 'wb'))
filename2 = '/var/www/html/python/intraope_bot/lib/textTopicClassifier.vector'
pickle.dump(vect,open(filename2, 'wb'))
С наилучшими пожеланиями!