返回CountVectorizer中的行索引,其中scikit中的特定要素具有非零条目

时间:2014-04-18 22:40:24

标签: python scikit-learn word-frequency

我一直在搜索Python的sklearn包的文档。

我创建了一个CountVectorizer对象,用我的语料库进行拟合和转换。

我正在寻找能够返回某些特定列的所有具有非零条目行的索引的函数。

因此,如果我的CountVectorizer中的行包含音乐评论,并且列由要素组成,(例如,有一列用于单词"歌词"的计数),是否有一个函数sci kit-learn可以返回包含这个词的音乐评论的标记吗?

我查看了inverse_transform(X)函数,但它没有执行此功能。

我怀疑我不是第一个对此功能感兴趣的人。

sklearn中是否存在此类功能,如果没有,是否有其他对类似程序感兴趣的人如何实现此功能?

提前致谢。

更新:

我最好的解决方案是迭代列数(在我的情况下,我有100个功能):

for i in range(99):
    print X.indices[X.indptr[i]:X.indptr[i+1]]

但这看起来很浪费,因为它是迭代的,并且范围必须是硬编码的,并且它返回稀疏列的空列表。

1 个答案:

答案 0 :(得分:2)

我没有看到文档中的功能也会完成这一功能,但这应该可以帮到你:

def lookUpWord(vec,dtm,word):
    i = vec.get_feature_names().index(word)
    return dtm[:,i].nonzero()[0]

这是一个简单的例子:

>>> from sklearn.feature_extraction.text import CountVectorizer
>>> 
>>> corpus = [
...     'This is the first document.',
...     'This is the second second document.',
...     'And the third one.',
...     'Is this the first document?'
...     ]
>>> 
>>> X = CountVectorizer()
>>> Y = X.fit_transform(corpus)
>>> lookUpWord(X,Y,'first')
array([0, 3], dtype=int32)