假设您正在尝试在语料库中找到与给定搜索查询最相似的文档。我已经看到一些示例创建了TF-IDF向量,这些向量是给定查询的长度,有些创建TF-IDF向量,使用语料库中的每个术语。
其中一种方法是"纠正"这样做的方法?
答案 0 :(得分:1)
假设您的语料库为["funny dogs", "boring cats", "funny bunnies"]
,词汇["funny", "boring", "dogs", "cats", "bunnies"]
。文件的TF-IDF矩阵是[[0.5,0,1,0,0],[0,0.5,0,1,0],[0.5,0,0,0,1]]
。
您有两种表示新文档的方式(搜索查询):
有趣的猫的密集TF-IDF载体"是[1,0,0,1,0]
。与每个文档的余弦相似性的公式(我实际上只是做点积;我因为每个文档向量具有相同的范数而遗漏了分母)
cos("funny cats", "funny dogs") ~ 0.5*0.5+0*0+0*1+1*0+0*0 = 0.25
cos("funny cats", "boring cats") ~ 0.5*0+0*0.5+0*0+1*1+0*0 = 1
cos("funny cats", "funny bunnies") ~ 0.5*0.5+0*0+0*0+1*0+0*1 = 0.25
所以最接近的比赛是"无聊的猫"因为"猫"是一个比#34;搞笑"更为罕见且可能更具信息量的词。
"有趣的猫的稀疏TF-IDF载体"是[[0,0.25], [3,1]]
。计算是
cos("funny cats", "funny dogs") ~ 0.5*0.5+1+1 = 0.25
cos("funny cats", "boring cats") ~ 0.5+1*1 = 1
cos("funny cats", "funny bunnies") ~ 0.5*0.5+1*0 = 0.25
基本上,由于您只查看非零值,因此您执行的操作较少。这取决于词汇表中有多少单词,这可能也可能不重要。