根据文本语料库Scikit-Learn中的出现列出词汇表中的单词

时间:2013-04-18 08:27:07

标签: python machine-learning scikit-learn text-extraction

我在CountVectorizer的某些文档中添加了scikit-learn。我想在文本语料库中看到所有术语及其相应的频率,以便选择停用词。例如

'and' 123 times, 'to' 100 times, 'for' 90 times, ... and so on

这有内置功能吗?

2 个答案:

答案 0 :(得分:22)

如果cvCountVectorizerX是矢量化语料库,那么

zip(cv.get_feature_names(),
    np.asarray(X.sum(axis=0)).ravel())

(term, frequency)提取的语料库中的每个不同字词返回CountVectorizer对的列表。

(需要asarray + ravel小舞蹈来解决scipy.sparse中的一些怪癖。)

答案 1 :(得分:3)

没有内置功能。我找到了一种基于Ando Saabas's answer更快的方法:

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)]