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)
我以为我已经对文本进行了矢量化,现在它已经在矩阵中了 - 是否有一个我错过的过渡步骤?谢谢!!
这条线
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)
您可能正在寻找管道,也许是这样的:
pipeline = Pipeline([
('vect', CountVectorizer()),
('tfidf', TfidfTransformer()),
])
Run Code Online (Sandbox Code Playgroud)
或者
pipeline = make_pipeline(CountVectorizer(), TfidfTransformer())
Run Code Online (Sandbox Code Playgroud)
在此管道上,执行常规操作(例如fit,fit_transform、 等)。
另请参阅此示例。
| 归档时间: |
|
| 查看次数: |
3629 次 |
| 最近记录: |