[英]Normalize cosine similarity values calculated based on tf-idf
我计算基于余弦相似度的tf-idf矩阵:
tfidf_vectorizer_desc = TfidfVectorizer(min_df=5, max_df=0.8, use_idf=True, smooth_idf=True, sublinear_tf=False, tokenizer=tokenize_and_stem)
%time tfidf_matrix_desc = tfidf_vectorizer_desc.fit_transform(descriptions) #fit the vectorizer to text
sim_desc = cosine_similarity(tfidf_matrix_desc)
但是,sim_desc包含的相似度大于1.0(请参见下文)。 据我所知,cosine_similarity返回的值介于0到1之间。 在这种情况下,我需要归一化余弦相似度分数吗?
sim_desc = cosine_similarity(tfidf_matrix_desc)
print(np.where(sim_desc < 0 ))
print(np.where(sim_desc > 1))
print(format(np.amax(sim_desc), '.20g'),format(np.amin(sim_desc), '.20g'))
(array([], dtype=int64), array([], dtype=int64))
(array([ 0, 0, 0, ..., 1496, 1496, 1497]), array([ 0, 1, 735, ..., 1495, 1496, 1497]))
1.0000000000000006661 0
您尚未指定正在使用的库,因此如果您需要标准化余弦相似度得分,我将无法回答。
但是,这是事实:
余弦相似度实际上返回-1到+1之间的值。 如果两个向量完全相反180度,则余弦相似度为-1。
参考: http : //blog.christianperone.com/2013/09/machine-learning-cosine-similarity-for-vector-space-models-part-iii/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.