如标题所述:countvectorizer
是否与具有 use_idf=false 的 tfidfvectorizer
相同?如果不是,为什么不呢?
那么这是否也意味着在此处添加 tfidftransformer
是多余的?
vect = CountVectorizer(min_df=1)
tweets_vector = vect.fit_transform(corpus)
tf_transformer = TfidfTransformer(use_idf=False).fit(tweets_vector)
tweets_vector_tf = tf_transformer.transform(tweets_vector)
最佳答案
不,它们不一样。 TfidfVectorizer
对其结果进行归一化,即其输出中的每个向量都具有范数 1:
>>> CountVectorizer().fit_transform(["foo bar baz", "foo bar quux"]).A
array([[1, 1, 1, 0],
[1, 0, 1, 1]])
>>> TfidfVectorizer(use_idf=False).fit_transform(["foo bar baz", "foo bar quux"]).A
array([[ 0.57735027, 0.57735027, 0.57735027, 0. ],
[ 0.57735027, 0. , 0.57735027, 0.57735027]])
这样做是为了使行上的点积是余弦相似度。此外,当给定选项 sublinear_tf=True
时,TfidfVectorizer
可以使用对数折扣频率。
要使 TfidfVectorizer
的行为与 CountVectorizer
相同,请为其提供构造函数选项 use_idf=False, normalize=None
。
关于python - countvectorizer 是否与 use_idf=false 的 tfidfvectorizer 相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22489264/