在Scikit-learn分类器中查找最常见的术语

4
我正在遵循 Scikit learn文档中的示例,其中在某些数据集上使用了CountVectorizer问题: count_vect.vocabulary_.viewitems()列出了所有术语及其频率。 如何按出现次数对它们进行排序? sorted(count_vect.vocabulary_.viewitems())似乎不起作用。

嗨!也许你想看看我的答案 https://dev59.com/2WQo5IYBdhLWcg3wZusc#48490046 - Cristhian Boujon
1个回答

16

vocabulary_.viewitems() 实际上并没有列出词项及其频率,而是将词项映射到它们的索引。频率(每个文档)由 fit_transform 方法返回,该方法返回一个稀疏(coo)矩阵,其中行为文档,列为单词(通过 vocabulary_ 将列索引映射到单词)。您可以通过以下方式获取总频率:

matrix = count_vect.fit_transform(doc_list)
freqs = zip(count_vect.get_feature_names(), matrix.sum(axis=0))    
# sort from largest to smallest
print sorted(freqs, key=lambda x: -x[1])

4
由于matrix.sum()返回的是一个矩阵,您需要将"matrix.sum(axis=0)"替换为"matrix.sum(axis=0).tolist()[0]",以便得到一个列表。请注意,此更改不会修改原始意图。 - Zouzias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接