Получить конкретные классы н-граммов - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть набор твитов, каждый из которых помечен как hate (1) или non hate (0).Я векторизовал данные, используя [3,4] символов n-грамм мешок слов (sklearn's CountVectorizer ), и я хочу извлечь наиболее частые n-граммы для каждыйкласс .Следующий код работает, но он обобщает все данные вместо того, чтобы фокусироваться на самих классах.

bag_of_words = CountVectorizer(
    ngram_range =(3,4),
    analyzer='char'
)

bag_of_words_mx = bag_of_words.fit_transform(X)

vocab = bag_of_words.vocabulary_
count_values = bag_of_words_mx.toarray().sum(axis=0)

# output n-grams
for ng_count, ng_text in sorted([(count_values[i],k) for k,i in vocab.items()]):
    if ng_count > 1:
        print(ng_count, ng_text)

Есть ли способ как-то отсортировать словарь по классам?

1 Ответ

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

Попробуйте bag_of_words_mx[y == 0] и bag_of_words_mx[y == 1], где y - массив, содержащий вашу целевую переменную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...