在scipy中稀疏矩阵的含义是什么?

我有一个自然语言处理任务,并且我在使用scikit-learn。在阅读教程时,我了解到如何对文本进行向量化,以及如何使用这些向量化模型来供分类算法使用。假设我有一些文本,并且我想按照以下方式对其进行向量化:

from sklearn.feature_extraction.text import CountVectorizercorpus =['''计算机科学是计算及其应用的科学和实用方法。'''#这是另一个观点'''它是对方法论程序的可行性、结构、表达和机械化的系统研究,这些程序是信息获取、表示、处理、存储、通信和访问的基础,无论这些信息是以计算机内存中的比特形式编码,还是以生物细胞中的基因和蛋白质结构形式转录。'''         #另一个'''计算机科学家专注于计算理论和计算系统的设计''']vectorizer = CountVectorizer(analyzer='word')X = vectorizer.fit_transform(corpus)print X

问题是我不理解输出的含义,我看不出文本与向量化器返回的矩阵之间有任何关系:

  (0, 12)   3  (0, 33)   1  (0, 20)   3  (0, 45)   7  (0, 34)   1  (0, 2)    6  (0, 28)   1  (0, 4)    1  (0, 47)   2  (0, 10)   2  (0, 22)   1  (0, 3)    1  (0, 21)   1  (0, 42)   1  (0, 40)   1  (0, 26)   5  (0, 16)   1  (0, 38)   1  (0, 15)   1  (0, 23)   1  (0, 25)   1  (0, 29)   1  (0, 44)   1  (0, 49)   1  (0, 1)    1  : :  (0, 30)   1  (0, 37)   1  (0, 9)    1  (0, 0)    1  (0, 19)   2  (0, 50)   1  (0, 41)   1  (0, 14)   1  (0, 5)    1  (0, 7)    1  (0, 18)   4  (0, 24)   1  (0, 27)   1  (0, 48)   1  (0, 17)   1  (0, 31)   1  (0, 39)   1  (0, 6)    1  (0, 8)    1  (0, 35)   1  (0, 36)   1  (0, 46)   1  (0, 13)   1  (0, 11)   1  (0, 43)   1

此外,我不理解当我使用toarray()方法时输出的变化:

print X.toarray()

输出到底是什么意思,它与语料库有什么关系?

[[1 1 6 1 1 1 1 1 1 1 2 1 3 1 1 1 1 1 4 2 3 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1  1 1 1 1 1 1 1 1 7 1 2 1 1 1]]

回答:

CountVectorizer生成文档-词矩阵。让我们看一个简化的代码示例:

from sklearn.feature_extraction.text import CountVectorizercorpus =['''计算机硬件''','''计算机数据和软件数据''']vectorizer = CountVectorizer(analyzer='word')X = vectorizer.fit_transform(corpus)print Xprint X.toarray()

你有两个文档,即语料库的元素,以及五个词项,即单词。你可以按以下方式计算文档中的词项数:

      | and computer data hardware software      +-------------------------------------doc 0 |            1             1 doc 1 |   1        1    2                 1 

X以关联的方式表示上述矩阵,即从(行,列)到词项频率的映射,X.toarray()则将X显示为列表的列表。以下是执行结果:

  (1, 0)    1  (0, 1)    1  (1, 1)    1  (1, 2)    2  (0, 3)    1  (1, 4)    1[[0 1 0 1 0] [1 1 2 0 1]]

正如@dmcc所指出的,你遗漏了逗号,这使得corpus只有一个文档。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注