基于tf-idf-Python的文档间余弦相似度和TS-SS相似度

基于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

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

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

此处article_master是一个包含所有文档文本内容的数据框。
正如Chris Clark所解释的,TfidfVectorizer生成归一化向量;因此,线性_核结果可用作余弦相似性

余弦模拟内容=线性内核(tfidf矩阵内容、tfidf矩阵内容)


这就是我的困惑所在。

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

InnerProduct(vec1,vec2) / (VectorSize(vec1) * VectorSize(vec2))
线性核计算所述的内积

因此,问题是:

  • 为什么我不把内积除以向量大小的乘积

  • 为什么标准化免除了我的这一要求

  • 现在,如果我想计算ts ss相似度,我还能使用吗 归一化tf idf矩阵余弦值(由 线性核(仅适用)


  • 感谢@timleathart的回答,我终于知道了原因

    归一化向量的大小为1,因此,是否明确除以大小并不重要。这在数学上是等价的

    tf idf矢量器使单个行(矢量)正常化,使其全部长度为1。由于余弦相似性只与角度有关,因此向量的大小差异并不重要


    使用ts ss的主要原因是考虑了矢量的角度和大小差异。因此,即使使用标准化向量没有错;但是,这超出了使用三角形相似性组件的全部目的。

    您可能会在或上提出这样的问题:对于像这样的机器学习问题,哪些地方是好地方?这些问题更具学术性,而不是实际实现!我还在统计堆栈交换中发布了这个问题;但仍然在那里等待。
    InnerProduct(vec1,vec2) / (VectorSize(vec1) * VectorSize(vec2))