Мой тест на разделение данных не работает.униграммы показывают одинаковые слова для всех категорий - PullRequest
2 голосов
/ 24 июня 2019

вывод униграмм для обеих категорий При разбиении данных текстового классификатора на тестовую последовательность и использовании 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("")
...