从skVarn中的CountVectorizer到TfidfTransformer的转换

ach*_*low 5 python vectorization tf-idf scikit-learn

我在sklearn处理大量的文本数据.首先,我需要对文本上下文进行矢量化(字数统计),然后执行TfidfTransformer.我有以下代码似乎没有从CountVectorizer输出到TfidfTransformer的输入.

TEXT = [data[i].values()[3] for i in range(len(data))]

from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer

vectorizer = CountVectorizer(min_df=0.01,max_df = 2.5, lowercase = False, stop_words = 'english')

X = vectorizer(TEXT)
transformer = TfidfTransformer(X)
X = transformer.fit_transform()
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到此错误:

Traceback (most recent call last):
File "nlpQ2.py", line 27, in <module>
X = vectorizer(TEXT)
TypeError: 'CountVectorizer' object is not callable
Run Code Online (Sandbox Code Playgroud)

我以为我已经对文本进行了矢量化,现在它已经在矩阵中了 - 是否有一个我错过的过渡步骤?谢谢!!

lej*_*lot 7

这条线

X = vectorizer(TEXT)
Run Code Online (Sandbox Code Playgroud)

不会产生矢量化器的输出(这是引发异常的那个,它与TfIdf本身无关),你应该调用fit_transform.此外,你的下一个电话也是错误的.您必须将数据作为参数传递fit_transform给构造函数,而不是传递给构造函数.

X = vectorizer.fit_transform(TEXT)
transformer = TfidfTransformer()
X = transformer.fit_transform(X)
Run Code Online (Sandbox Code Playgroud)


Ami*_*ory 3

您可能正在寻找管道,也许是这样的:

pipeline = Pipeline([
    ('vect', CountVectorizer()),
    ('tfidf', TfidfTransformer()),
])
Run Code Online (Sandbox Code Playgroud)

或者

pipeline = make_pipeline(CountVectorizer(), TfidfTransformer())
Run Code Online (Sandbox Code Playgroud)

在此管道上,执行常规操作(例如fitfit_transform、 等)。

另请参阅此示例