我是向量空间模型(VSM)的初学者。我尝试了
这个站点的代码。这是对 VSM 的一个很好的介绍,但我设法从作者那里得到了不同的结果。这可能是因为一些兼容性问题,因为自编写介绍以来scikit learn似乎发生了很大变化。可能是我也误解了解释。
我使用下面的代码得到了错误的答案。有人能弄清楚它有什么问题吗?我在下面发布代码的结果和下面的正确答案
我已经手工完成了计算,所以我知道网站的结果很好。还有另一个Stackoverflow 问题使用相同的代码,但它也没有得到与网站相同的结果。
import numpy, scipy, sklearn
train_set = ("The sky is blue.","The sun is bright.")
test_set = ("The sun is the sky is bright.", "We can see the shining sun, the bright sun.")
from sklearn.feature_extraction.text import CountVectorizer
vectorizer = CountVectorizer(stop_words= 'english')
vectorizer.fit_transform(train_set)
smatrix = vectorizer.transform(test_set)
from sklearn.feature_extraction.text import TfidfTransformer
tfidf = TfidfTransformer(norm='l2', sublinear_tf=True)
tfidf.fit(smatrix)
#print smatrix.todense()
print tfidf.idf_
tf_idf_matrix = tfidf.transform(smatrix)
print tf_idf_matrix.todense()
tf-idf 的结果向量
#[ 2.09861229 1. 1.40546511 1. ]
tf-idf 的右向量
#[0.69314718, -0.40546511, -0.40546511, 0]
结果 tf_idf_matrix
#[[ 0. 0.50154891 0.70490949 0.50154891]
#[ 0. 0.50854232 0. 0.861037 ]]
正确答案
# [[ 0. -0.70710678 -0.70710678 0. ]
# [ 0. -0.89442719 -0.4472136 0. ]]