Переход от CountVectorizer к TfidfTransformer в sklearn

Я обрабатываю огромное количество текстовых данных в 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() 

Когда я запускаю этот код, я получаю эту ошибку:

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

Я думал, что я векторизовал текст, и теперь он находится в матрице – есть ли переходный шаг, который я пропустил? Спасибо!!

Эта строка

 X = vectorizer(TEXT) 

не выводит выходные данные вектора (и это тот, который создает исключение, он не имеет ничего общего с самим TfIdf), вы должны вызвать fit_transform . Кроме того, ваш следующий звонок также неверен. Вы должны передавать данные в качестве аргумента для fit_transform , а не для конструктора.

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

Вероятно, вы ищете трубопровод , возможно, что-то вроде этого:

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

или

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

На этом конвейере выполняйте регулярные операции (например, fit , fit_transform и т. Д.).

См. Также этот пример .