CountVectorizer:transform 方法在单个文本行上返回多维数组
Posted
技术标签:
【中文标题】CountVectorizer:transform 方法在单个文本行上返回多维数组【英文标题】:CountVectorizer: transform method returns multidimensional array on a single text line 【发布时间】:2017-02-25 19:04:03 【问题描述】:首先,我将它放在短信语料库中:
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)
这里发生了什么?还有一件事——所有的数字都是零
【问题讨论】:
str1
中的clf.transform(str1)
是什么?
【参考方案1】:
您总是需要将数组或向量传递给transform
;如果只想转换单个元素,则需要传递一个单例数组,然后提取其内容:
clf.transform([str1])[0]
顺便说一句,你得到一个二维数组作为输出的原因是 a 字符串实际上存储为一个字符列表,因此矢量化器将你的字符串视为一个数组,其中每个字符都被视为单个文档。
【讨论】:
以上是关于CountVectorizer:transform 方法在单个文本行上返回多维数组的主要内容,如果未能解决你的问题,请参考以下文章
CountVectorizer fit-transform() 不适用于自定义 token_pattern
如何使用带有 countVectorizer.fit_transform() 的腌制分类器来标记数据