3

用語に基づいてドキュメントの tf-idf を計算しました。次に、LSA を適用して項の次元を減らしました。「similarity_dist」には負の値が含まれています (下の表を参照)。0-1 の範囲で余弦距離を計算するにはどうすればよいですか?

tf_vectorizer = CountVectorizer(max_df=0.95, min_df=2, tokenizer=tokenize_and_stem, stop_words='english')
%time tf = tf_vectorizer.fit_transform(descriptions)
print(tf.shape)
svd  = TruncatedSVD(100)
normalizer = Normalizer(copy=False)
lsa = make_pipeline(svd, normalizer)
tfidf_desc = lsa.fit_transform(tfidf_matrix_desc)
explained_variance = svd.explained_variance_ratio_.sum()
print("Explained variance of the SVD step: {}%".format(int(explained_variance * 100)))

similarity_dist = cosine_similarity(tfidf_desc)
pd.DataFrame(similarity_dist,index=descriptions.index, columns=descriptions.index).head(10)

print(tfidf_matrix_desc.min(),tfidf_matrix_desc.max())
#0.0 0.736443429828

print(tfidf_desc.min(),tfidf_desc.max())
#-0.518015429416 0.988306783341

print(similarity_dist.max(),similarity_dist.min())
#1.0 -0.272010919022

ここに画像の説明を入力

4

1 に答える 1

9

cosine_similarity は -1 から 1 の範囲です

コサイン距離は次のように定義されます。

cosine_distance = 1 - cosine_similarity 

したがって、cosine_distance の範囲は 0 ~ 2 になります。

https://en.wikipedia.org/wiki/Cosine_similarityを参照

コサイン距離は、正の空間の補数によく使用される用語です。つまり、D_C(A,B) = 1 - S_C(A,B) です。

注: 0 から 1 の範囲にする必要がある場合は、cosine_distance / 2 を使用できます。

于 2016-05-26T08:27:14.663 に答える