вывод униграмм для обеих категорий При разбиении данных текстового классификатора на тестовую последовательность и использовании chi2 для поиска униграмм он показывает одинаковые униграммы для обеих моих категорий, и обучение также не выполняется.
Использование chi2 для поиска униграмм. Пробовал использовать другие модели для тренировки, но тот же результат.
Ожидаемые результаты должны быть следующими:
У меня есть две категории, чтобы классифицировать крикет и футбол.
и в каждой из этих надписей должны быть разрешены только конкретные и отличные слова. но для каждого крикета и футбольной униграммы подходит один и тот же набор слов.
X = df.Content_Parsed
y = df.Category_Code
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1,
random_state = 42)
ngram_range = (1,2)
min_df = 1
max_df = 50.
max_features = 300
tfidf = TfidfVectorizer(encoding='utf-8',
ngram_range=ngram_range,
stop_words=None,
lowercase=False,
max_df=max_df,
min_df=min_df,
max_features=max_features,
norm='l2',
sublinear_tf=True)
features_train = tfidf.fit_transform(X_train).toarray()
labels_train = y_train
print(features_train.shape)
labels_train.head()
features_test = tfidf.transform(X_test).toarray()
labels_test = y_test
print(features_test.shape)
from sklearn.feature_selection import chi2
import numpy as np
for Product, category_id in sorted(category_codes.items()):
features_chi2 = chi2(features_train, labels_train == category_id)
indices = np.argsort(features_chi2[0])
feature_names = np.array(tfidf.get_feature_names())[indices]
unigrams = [v for v in feature_names if len(v.split(' ')) == 1]
bigrams = [v for v in feature_names if len(v.split(' ')) == 2]
print("# '{}' category:".format(Product))
print(" . Most correlated unigrams:\n. {}".format('\n. '.join(unigrams[-5:])))
print(" . Most correlated bigrams:\n. {}".format('\n. '.join(bigrams[-2:])))
print("")