Как улучшить мой классификатор текстовых тем? - PullRequest
0 голосов
/ 13 февраля 2019

Я занимаюсь разработкой классификатора текстовых тем, который может обозначать предложения или небольшие вопросы.Пока он может маркировать около 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'))

С наилучшими пожеланиями!

1 Ответ

0 голосов
/ 13 февраля 2019

Я думаю, что вы, возможно, захотите использовать TfidfVectorizer от sklearn: он должен помочь вам увеличить счет!

>>> from sklearn.feature_extraction.text import TfidfVectorizer
>>> corpus = [
...     "Label - backup_proxy_intranet: How to set up a backup proxy for intranet app? ... and 140 similar questions containing 'backup proxy for intranet app'"
...     Label - smartphone_intranet: How to use intranet app in my smartphone? and ... and 140 similar questions containing 'intranet app in my smartphone'...
... ]
>>> vectorizer = TfidfVectorizer()
>>> X = vectorizer.fit_transform(corpus)
>>> print(vectorizer.get_feature_names())
...