Проблема в том, что вы не сортируете свой словарь по количеству, а по уникальному идентификатору, созданному векторизатором счета.
count_vectorizer.vocabulary_.items()
Не содержит счетчик каждой функции.count_vectorizer не сохраняет количество каждой функции.
Следовательно, вы получаете возможность увидеть самые редкие / неправильно написанные слова (поскольку они получают большее изменение большего значения - уникального идентификатора) из вашего корпуса в сюжете.Способ получения количества слов заключается в применении преобразования к вашим текстовым данным и суммировании значений каждого слова во всех документах.
По умолчанию tf-idf удаляет пунктуацию, а также вы можете передать список стоп-слов для векторизатора, который нужно удалить.Ваш код может быть уменьшен следующим образом.
from sklearn.feature_extraction.text import CountVectorizer
corpus = [
'This is the first document.',
'This document is the second document.',
'And this is the third one.',
'Is this the first document ?',
]
sw= stopwords.words('english')
count_vectorizer = CountVectorizer(stop_words=sw)
X = count_vectorizer.fit_transform(corpus)
vocab = pd.Series( X.toarray().sum(axis=0), index = count_vectorizer.get_feature_names())
vocab.sort_values(ascending=False).plot.bar(figsize=(5,5), xlim = (0, 7))
Вместо corpus
подключите столбец текстовых данных.Результат вышеупомянутого фрагмента будет