查询和文档之间的余弦相似度

所以我在信息检索概念上挣扎。这是关于给定查询的文档的余弦相似度。


我正在处理大约 1000 个文件以生成带有 [docID x terms] 的词频矩阵。


我生成了这个矩阵,但我对如何处理查询并从中生成余弦相似度感到困惑。


我得到了一个查询,其中包含我应该通过语料库解析的术语,我已经完成了。并生成一个向量,其中所有 docID 都包含至少一个单词。


所以我应该根据余弦相似度计算所有这些行向量?


例子:


查询是一个列表,其中包含词频矩阵中的列位置和词条


OccurenceVector 是一个包含查询中包含单词的所有文档的数组


Query = [[2796, 'crystalline'], [6714, 'lens'], [5921, 'including'], [5566, 'humans']]

OccurrenceVector = array([ 13,  14,  15,  72,  79, 138, 142, 164, 165, 166, 167, 168, 169,

   170, 171, 172, 180, 181, 182, 183, 184, 185, 186, 211, 212, 213,

   499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511,

   512, 513])

我的思考过程是这样的:

  1. [docID x term] 的词频矩阵(行 x 列)

  2. 接收带有针对语料库的术语的查询

  3. 检索包含这些术语出现的所有 docID 的向量

  4. 检索对应于检索到的 docID 的每一行

  5. 计算检索到的所有行之间的余弦相似度?

这是考虑使用这样的多维数组计算余弦相似度的正确方法吗?


芜湖不芜
浏览 192回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python