我已经CountVectorizer
在scikit-learn
. 我想在文本语料库中查看所有术语及其对应的频率,以便选择停用词。例如
'and' 123 times, 'to' 100 times, 'for' 90 times, ... and so on
是否有任何内置功能?
我已经CountVectorizer
在scikit-learn
. 我想在文本语料库中查看所有术语及其对应的频率,以便选择停用词。例如
'and' 123 times, 'to' 100 times, 'for' 90 times, ... and so on
是否有任何内置功能?
如果cv
是你的CountVectorizer
并且X
是向量化语料库,那么
zip(cv.get_feature_names(),
np.asarray(X.sum(axis=0)).ravel())
返回提取(term, frequency)
的语料库中每个不同术语的对列表。CountVectorizer
(需要小asarray
+ravel
舞蹈来解决 . 中的一些怪癖scipy.sparse
。)
没有内置的。根据Ando Saabas 的回答,我找到了一种更快的方法:
from sklearn.feature_extraction.text import CountVectorizer
texts = ["Hello world", "Python makes a better world"]
vec = CountVectorizer().fit(texts)
bag_of_words = vec.transform(texts)
sum_words = bag_of_words.sum(axis=0)
words_freq = [(word, sum_words[0, idx]) for word, idx in vec.vocabulary_.items()]
sorted(words_freq, key = lambda x: x[1], reverse=True)
输出
[('world', 2), ('python', 1), ('hello', 1), ('better', 1), ('makes', 1)]