基于tf-idf-Python的文档间余弦相似度和TS-SS相似度
计算基于文本的文档之间余弦相似度的常用方法是计算tf-idf,然后计算tf-idf矩阵的线性核 TF-IDF矩阵使用TfidfVectorizer()计算 此处article_master是一个包含所有文档文本内容的数据框。基于tf-idf-Python的文档间余弦相似度和TS-SS相似度,python,machine-learning,tf-idf,cosine-similarity,tfidfvectorizer,Python,Machine Learning,Tf Idf,Cosine Similarity,Tfidfvectorizer,计算基于文本的文档之间余弦相似度的常用方法是计算tf-idf,然后计算tf-idf矩阵的线性核 TF-IDF矩阵使用TfidfVectorizer()计算 此处article_master是一个包含所有文档文本内容的数据框。 正如Chris Clark所解释的,TfidfVectorizer生成归一化向量;因此,线性_核结果可用作余弦相似性 余弦模拟内容=线性内核(tfidf矩阵内容、tfidf矩阵内容) 这就是我的困惑所在。 实际上,2个向量之间的余弦相似性为: InnerProduct(v
正如Chris Clark所解释的,TfidfVectorizer生成归一化向量;因此,线性_核结果可用作余弦相似性
余弦模拟内容=线性内核(tfidf矩阵内容、tfidf矩阵内容)
这就是我的困惑所在。 实际上,2个向量之间的余弦相似性为:
InnerProduct(vec1,vec2) / (VectorSize(vec1) * VectorSize(vec2))
线性核计算所述的内积
因此,问题是:
感谢@timleathart的回答,我终于知道了原因 归一化向量的大小为1,因此,是否明确除以大小并不重要。这在数学上是等价的 tf idf矢量器使单个行(矢量)正常化,使其全部长度为1。由于余弦相似性只与角度有关,因此向量的大小差异并不重要
使用ts ss的主要原因是考虑了矢量的角度和大小差异。因此,即使使用标准化向量没有错;但是,这超出了使用三角形相似性组件的全部目的。您可能会在或上提出这样的问题:对于像这样的机器学习问题,哪些地方是好地方?这些问题更具学术性,而不是实际实现!我还在统计堆栈交换中发布了这个问题;但仍然在那里等待。
InnerProduct(vec1,vec2) / (VectorSize(vec1) * VectorSize(vec2))