当前位置: 首页 > 面试题库 >

余弦相似度

薛泰
2023-03-14
问题内容

我计算了两个文档的tf / idf值。以下是tf / idf值:

1.txt
0.0
0.5
2.txt
0.0
0.5

这些文件就像:

1.txt = > dog cat
2.txt = > cat elephant

如何使用这些值来计算余弦相似度?

我知道我应该计算点积,然后找到距离并除以点积。如何使用我的值来计算?

还有一个问题: 两个文档的字数相同是否重要?


问题答案:
            a * b
sim(a,b) =--------
           |a|*|b|

a * b是点积

一些细节:

def dot(a,b):
  n = length(a)
  sum = 0
  for i in xrange(n):
    sum += a[i] * b[i];
  return sum

def norm(a):
  n = length(a)
  for i in xrange(n):
    sum += a[i] * a[i]
  return math.sqrt(sum)

def cossim(a,b):
  return dot(a,b) / (norm(a) * norm(b))

是。在某种程度上,a和b必须具有相同的长度。但是a和b通常具有稀疏表示,您只需要存储非零条目,就可以更快地计算范数和点。



 类似资料:
  • 问题内容: 假设您在数据库中按以下方式构造了一个表: 为了清楚起见,应输出: 请注意,由于向量存储在数据库中,因此我们仅需要存储非零条目。在此示例中,我们只有两个向量$ v_ {99} =(4,3,4,0)$和$ v_ {1234} =(0,5,2,3)$都在$ \ mathbb {R}中^ 4 $。 这些向量的余弦相似度应为$ \ displaystyle \ frac {23} {\ sqrt

  • 问题内容: 我正在使用Elasticsearch进行研究。我打算使用余弦相似度,但我注意到它不可用,而我们将BM25作为默认评分功能。 有什么理由吗?余弦相似度是否不适用于查询文档?为什么选择BM25作为默认值?谢谢 问题答案: 长期的Elasticsearch使用TF / IDF算法来查找查询中的相似性。但是以前的数字版本更有效地更改为BM25。您可以阅读文档中的信息。好的文章解释了什么是ela

  • 我有一个PySpark数据帧,df1,看起来像: 我有第二个PySpark数据帧,df2 我想得到两个数据帧的余弦相似性。并有类似的东西

  • 本文向大家介绍TF-IDF与余弦相似性的应用(二) 找出相似文章,包括了TF-IDF与余弦相似性的应用(二) 找出相似文章的使用技巧和注意事项,需要的朋友参考一下 上一次,我用TF-IDF算法自动提取关键词。 今天,我们再来研究另一个相关的问题。有些时候,除了找到关键词,我们还希望找到与原文章相似的其他文章。比如,"Google新闻"在主新闻下方,还提供多条相似的新闻。 为了找出相似的文章,需要用

  • 问题内容: 如何找到向量之间的余弦相似度? 我需要找到相似性来衡量两行文本之间的相关性。 例如,我有两个句子: 用户界面系统 用户界面机 …及其在tF-idf之后的向量,然后使用LSI进行标准化,例如 和。 如何测量这些向量之间的相似性? 问题答案: 我最近在大学的信息检索部门做了一些tf-idf的工作。我使用了这种余弦相似度方法,该方法使用Jama:Java Matrix Package 。 有

  • 我试图用余弦相似性来找出两个文本文件的相似性。当我提供文本时,我可以发现这一点。但我想在阅读完电脑中的文本文件后得到结果。