[使用tf-idf-Python的文档之间的余弦相似度和TS-SS相似度

问题描述 投票:1回答:1

计算基于文本的文档之间的余弦相似度的一种常见方法是计算tf-idf,然后计算tf-idf矩阵的线性核。

TF-IDF矩阵是使用TfidfVectorizer()计算的。

from sklearn.feature_extraction.text import TfidfVectorizer
tfidf = TfidfVectorizer(stop_words='english')
tfidf_matrix_content = tfidf.fit_transform(article_master['stemmed_content'])

这里article_master是一个包含所有文档的文本内容的数据框。如Chris Clark here所述,TfidfVectorizer产生归一化向量;因此linear_kernel结果可以用作余弦相似度。

cosine_sim_content = linear_kernel(tfidf_matrix_content, tfidf_matrix_content)

这是我的困惑所在。

有效地,两个向量之间的余弦相似度是:

InnerProduct(vec1,vec2) / (VectorSize(vec1) * VectorSize(vec2))

线性内核按照here计算InnerProduct。>

Linear Kernel Formulae

所以问题是:

  1. 为什么不将内积与矢量大小的乘积相除?

  2. 为什么规范化使我免除此要求?

  3. 现在,如果我想计算ts-ss相似度,是否仍可以使用归一化的tf-idf矩阵

  4. 余弦值(通过仅线性核)?

计算基于文本的文档之间的余弦相似度的一种常见方法是计算tf-idf,然后计算tf-idf矩阵的线性核。 TF-IDF矩阵使用...

python machine-learning tf-idf cosine-similarity tfidfvectorizer
1个回答
0
投票

感谢@timleathart的回答here我终于知道了原因。

© www.soinside.com 2019 - 2024. All rights reserved.