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

是否可以使用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,从而能实现相似度计算。但这依赖于分词、文本、特征词这些各种细节,需要不断优化才行。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)