2016-07-30 41 views
4

私はsklearnで膨大な量のテキストデータを処理しています。まず、テキストのコンテキスト(単語数)をベクトル化し、TfidfTransformerを実行する必要があります。私はCountVectorizerからの出力をTfidfTransformerの入力に持っていないような次のコードを持っています。Sklearnの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() 

私はこのコードを実行すると、私はこのエラーを取得:

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

私は、テキストをベクトル化していたし、今では、マトリクス状にだと思った - 私が見逃している移行手順はありますか?ありがとうございました!!

あなたはおそらく、おそらく、 pipelineのためにこのような何かを探している

答えて

2

:このパイプラインで

pipeline = Pipeline([ 
    ('vect', CountVectorizer()), 
    ('tfidf', TfidfTransformer()), 
]) 

または

pipeline = make_pipeline(CountVectorizer(), TfidfTransformer()) 

、通常の操作(例えば、fitを行い、fit_transformを、など)。

this exampleも参照してください。

+0

ありがとうございます。私は確かにそれを読む必要があります。 – achimneyswallow

+3

ようこそ。あなたは*パイプラインで読む必要があります - それはおそらくsklearnの基本的な考えです。 –

6

このライン

X = vectorizer(TEXT) 

は、ベクトライザーの出力を生成しません(これは例外を発生させるものです、それはTFIDF自体とは何の関係もありません)、あなたはfit_transformを呼び出すことになっています。さらに、次の呼び出しも間違っています。データはコンストラクタではなく、fit_transformの引数として渡す必要があります。

X = vectorizer.fit_transform(TEXT) 
transformer = TfidfTransformer() 
X = transformer.fit_transform(X) 
+0

ありがとうございます。これは機能します。 – achimneyswallow

関連する問題