基于tfidf-Python的文档间余弦相似度和TSSS相似度分析

2024-03-29 09:41:12 发布

您现在位置:Python中文网/ 问答频道 /正文

计算文本文档间余弦相似度的一种常用方法是计算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\u master是一个包含所有文档的文本内容的数据框。
正如Chris Clark here所解释的,TfidfVectorizer产生归一化向量;因此线性核结果可用作余弦相似性。你知道吗

cosine_sim_content = linear_kernel(tfidf_matrix_content, tfidf_matrix_content)


这就是我的困惑所在。

实际上,两个向量之间的余弦相似性为:

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

线性核计算内积,如here所述

Linear Kernel Formulae

所以问题是:

  1. 为什么我不把内积除以向量大小的积呢?

  2. 为什么标准化免除了我的这个要求?

  3. 如果我想计算ts-ss相似度,我还能用吗 标准化tf-idf矩阵和余弦值(由 仅线性内核)?


Tags: masterheretfarticle线性矩阵content相似性
1条回答
网友
1楼 · 发布于 2024-03-29 09:41:12

多亏了@timleathart的回答here,我终于知道了原因。你知道吗

归一化向量的震级为1,因此,是否显式除以震级并不重要。这两种方法在数学上都是等价的。你知道吗

tf-idf矢量器将单个行(矢量)标准化,使它们的长度都为1。由于余弦相似性只与角度有关,所以向量的大小差异无关紧要。你知道吗

使用ts-ss的主要原因是同时考虑了向量的角度和大小的差异。因此,尽管使用标准化向量没有什么错,但是,这超出了使用三角形相似性分量的全部目的。你知道吗

相关问题 更多 >