私はベクトル空間モデル (VSM) の初心者です。そして、このサイトのコードを試しました
。これは VSM の非常に優れた紹介ですが、どうにかして著者とは異なる結果を得ることができました。導入が書かれてからscikit Learnが大きく変更されたように見えるので、互換性の問題が原因である可能性があります。私も説明を誤解していたのかもしれません。
以下のコードを使用して間違った答えを得ました。誰かがそれの何が悪いのか理解できますか? 以下のコードの結果と下の正しい答えを投稿します
私は手で計算を行ったので、ウェブサイトの結果が良いことを知っています. 同じコードを使用する別のStackoverflow の質問がありますが、Web サイトと同じ結果は得られません。
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. ]]