查询和文档之间的余弦相似度
Cosine Similarity between Query and Documents
所以我在信息检索概念上苦苦挣扎。它与给定查询的文档的余弦相似度有关。
我正在处理大约 1000 个文件以生成具有 [docID x 术语] 的术语频率矩阵。
我生成了这个矩阵,但我不知道如何处理查询并从中生成余弦相似度。
我得到了一个查询,其中包含我应该通过语料库解析的术语,我已经完成了。并生成一个向量,其中所有 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])
我的思考过程是这样的:
[docID x terms] 的词频矩阵(行 x 列)
收到针对语料库的查询
检索包含这些术语出现在
中的所有 docID 的向量
检索与检索到的 docID 对应的每一行
计算所有检索到的行之间的余弦相似度?
这是用这样的多维数组计算余弦相似度的正确思考方式吗?
我建议你看看6th Chapter of IR Book(尤其是6.3)。
您还需要将查询视为文档。为您的查询构造一个向量,就像为您的文档构造它一样。然后,为了获得最佳匹配,您需要针对查询的所有文档向量计算相似度。
请记住,您还可以选择一个文档向量,并计算它与语料库中所有其他文档的相似度。通过这种方式,您可以计算文档之间的相似度。
希望对您有所帮助。
干杯
所以我在信息检索概念上苦苦挣扎。它与给定查询的文档的余弦相似度有关。
我正在处理大约 1000 个文件以生成具有 [docID x 术语] 的术语频率矩阵。
我生成了这个矩阵,但我不知道如何处理查询并从中生成余弦相似度。
我得到了一个查询,其中包含我应该通过语料库解析的术语,我已经完成了。并生成一个向量,其中所有 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])
我的思考过程是这样的:
[docID x terms] 的词频矩阵(行 x 列)
收到针对语料库的查询
检索包含这些术语出现在
中的所有 docID 的向量
检索与检索到的 docID 对应的每一行
计算所有检索到的行之间的余弦相似度?
这是用这样的多维数组计算余弦相似度的正确思考方式吗?
我建议你看看6th Chapter of IR Book(尤其是6.3)。
您还需要将查询视为文档。为您的查询构造一个向量,就像为您的文档构造它一样。然后,为了获得最佳匹配,您需要针对查询的所有文档向量计算相似度。
请记住,您还可以选择一个文档向量,并计算它与语料库中所有其他文档的相似度。通过这种方式,您可以计算文档之间的相似度。
希望对您有所帮助。
干杯