from sklearn.feature_extraction.text import CountVectorizer import nltk nltk.download('stopwords', quiet=True) from nltk.corpus import stopwords def get_top_n_words_en(corpus, n, ngram_range): vec = CountVectorizer(ngram_range=ngram_range, stop_words='english').fit(corpus) bag = vec.transform(corpus) sum_words = bag.sum(axis=0) words_freq = [(word, sum_words[0, idx]) for word, idx in vec.vocabulary_.items()] return sorted(words_freq, key=lambda x: x[1], reverse=True)[:n] def get_top_n_words_id(corpus, n, ngram_range): vec = CountVectorizer(ngram_range=ngram_range, stop_words=stopwords.words('indonesian')).fit(corpus) bag = vec.transform(corpus) sum_words = bag.sum(axis=0) words_freq = [(word, sum_words[0, idx]) for word, idx in vec.vocabulary_.items()] return sorted(words_freq, key=lambda x: x[1], reverse=True)[:n] def convert_for_download(df): return df.to_csv(index=False).encode("utf-8")