Что не так с вашим кодом
all_tokens_lower = [t.lower() for t in word_frequency_no_stop]
В строке выше используйте токены вместо word_frequency_no_stop
.
Вы получили значение word_frequency_no_stop
из
word_frequency_no_stop = Counter(tokens_no_stop)
, которые возвращают дикт, который будет иметь каждое слово только один раз.
В вашем случае это означает, что вы рассчитываете как 2 coz, у него будет слово с заглавными буквами и слово в нижнем регистре.
например.word_frequency_no_stop = { 'Project': 7, 'project': 2}
, поэтому он будет возвращать счет как 2 и для других слов
Используйте код ниже
stop_list = stopwords.words('english') + list(string.punctuation)
tokens_no_stop = [token.lower() for token in tokens if token not in stop_list]
word_frequency_no_stop = Counter(tokens_no_stop)
for word, freq in word_frequency_no_stop.most_common(20):
print(word, freq)