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() 的腌制分类器来标记数据

CountVectorizer 在短词上引发错误

如何从 CountVectorizer 保存和加载词汇表?

sklearn 中的 countvectorizer 仅适用于英语吗?

使用 CountVectorizer 的无空格 unicode 句子的正则表达式