CountVectorizer:transform方法在单个文本行上返回多维数组

时间:2016-10-16 21:07:34

标签: python python-2.7 text scikit-learn sklearn-pandas

首先,我把它放在短信的语料库中:

from sklearn.feature_extraction.text import CountVectorizer
clf = CountVectorizer()
X_desc = clf.fit_transform(X).toarray()

似乎工作正常:

X.shape = (5574,)
X_desc.shape = (5574, 8713)

然后我将变换方法应用到文本行,正如我们所知,它应该具有(,8713)形状,但我们看到的是:

str2 = 'Have you visited the last lecture on physics?'
print len(str2), clf.transform(str2).toarray().shape
  

52(52,8713)

这里发生了什么?还有一件事 - 所有数字都是零

1 个答案:

答案 0 :(得分:3)

您始终需要将数组或向量传递给transform;如果您只想转换单个元素,则需要传递单个数组,然后提取其内容:

clf.transform([str1])[0]

顺便说一下,你得到一个二维数组作为输出的原因是一个字符串实际上存储为一个字符列表,因此vectoriser将你的字符串视为一个数组,其中每个字符都被视为单个文件。