tfidf 矢量化器和 tfidf 变压器有什么区别

use*_*396 2 python nltk tf-idf scikit-learn tfidfvectorizer

我知道公式tfidf vectorizer

Count of word/Total count * log(Number of documents / no.of documents where word is present)
Run Code Online (Sandbox Code Playgroud)

我在 scikit learn 中看到了 tfidf 转换器,我只是想区分它们。我找不到任何有用的东西。

Art*_*nov 9

TfidfVectorizer用于句子,而 TfidfTransformer用于现有计数矩阵,例如CountVectorizer返回的矩阵

  • 所以它基本上将 countvectorizer 返回的稀疏计数矩阵转换为 tfidf 矩阵。 (2认同)

smk*_*j33 6

Artem 的回答几乎总结了差异。为了让事情更清楚,这里引用了一个示例。

TfidfTransformer可以按如下方式使用:

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


train_set = ["The sky is blue.", "The sun is bright."] 

vectorizer = CountVectorizer(stop_words='english')
trainVectorizerArray =   vectorizer.fit_transform(article_master['stemmed_content'])

transformer = TfidfTransformer()
res = transformer.fit_transform(trainVectorizerArray)

print ((res.todense()))


## RESULT:  

Fit Vectorizer to train set
[[1 0 1 0]
 [0 1 0 1]]

[[0.70710678 0.         0.70710678 0.        ]
 [0.         0.70710678 0.         0.70710678]]
Run Code Online (Sandbox Code Playgroud)

计数特征的提取、TF-IDF 归一化和行式欧氏归一化可以使用TfidfVectorizer在一次操作中完成:

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf = TfidfVectorizer(stop_words='english')
res1 = tfidf.fit_transform(train_set)
print ((res1.todense()))


## RESULT:  

[[0.70710678 0.         0.70710678 0.        ]
 [0.         0.70710678 0.         0.70710678]]
Run Code Online (Sandbox Code Playgroud)

两个过程都会生成包含相同值的稀疏矩阵。
其他有用的参考是tfidfTransformer.fit_transformcountVectoriser_fit_transformtfidfVectoriser


小智 5

借助 Tfidftransformer,您将使用 CountVectorizer 计算字数,然后计算 IDF 值,最后计算 Tf-idf 分数。使用 Tfidfvectorizer,您将同时完成所有三个步骤。

我认为您应该阅读这篇文章,其中通过一个示例对其进行了总结