青春小尾巴- 2020-05-18 14:39 采纳率: 0%
浏览 760

是否可以使用TF-IDF矩阵计算余弦相似度

最近在做基于内容的课程推荐,使用到了sklearn中的TfidfVectorizer。
核心流程如下:

vectorizer = TfidfVectorizer() 
 #corpus存储的是分好词的语料库
tfidf = vectorizer.fit_transform(corpus)#得到TF-IDF矩阵
weight = tfidf.toarray()
similarity_matrix = cosine_similarity(weight)#计算余弦相似度

以上代码段是我之前在一些博客上看到的,我疑惑的是:
我们一般使用文本的词向量来计算文本之间的相似度的,但是这里使用TF-IDF矩阵作为参数传入cosine_similarity(),也就是使用TF-IDF矩阵替代词频矩阵来计算余弦相似度。虽然词频矩阵和TF-IDF矩阵结构很相似,词频矩阵只有0和1,而TF-IDF矩阵是将1换为TF-IDF值。但是从严谨的角度来说,这样做可以吗?

  • 写回答

1条回答 默认 最新

  • Eastmount 优质创作者: python技术领域 2020-08-09 21:49
    关注

    你好,这样是可以做的,因为不论是词频还是TF-IDF,这个矩阵的表头对应的特征是固定的,如果两个文本非常相似即特征词很多相同,则对应矩阵相同特征词出现的数据会存在,反之不相似的文本特征词数据不会太重复,再通过COS计算的时候,相似的COS值更接近1,从而能实现相似度计算。但这依赖于分词、文本、特征词这些各种细节,需要不断优化才行。

    评论

报告相同问题?