首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lucene是如何构建VSM的?

lucene是如何构建VSM的?
EN

Stack Overflow用户
提问于 2014-02-14 15:25:54
回答 1查看 785关注 0票数 1

我理解了VSM,TFIDF和余弦相似的概念,但是,在阅读lucene网站之后,我仍然对lucene如何构建VSM和计算每个查询的相似度感到困惑。

据我所知,VSM是一个矩阵,每个术语的TFIDF值都被填充。当我尝试从一组文档构建VSM时,使用这个工具http://sourceforge.net/projects/wvtool/花了很长时间--这实际上与编码无关,因为直观地构建一个包含大量数据的VSM矩阵很费时,但对于lucene来说似乎并非如此。

另外,使用预先构建的VSM,查找最相似的文档(基本上是计算两个文档或查询与文档之间的相似性)通常很耗时(假设有数百万个文档,因为必须计算每个人的相似度),但是lucene似乎真的很快。我想这也与它如何在内部构建VSM有关。如果可能的话,有人也能解释一下吗?

因此,请在这里帮助我理解两点: 1. lucene如何如此快速地构建VSM,可以用来计算相似度。2.为什么lucene的相似度计算在数百万份文档中如此之快。

如果给出一个真实的例子,我会很感激的。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-14 15:43:12

据我所知,VSM是一个矩阵,每个术语的TFIDF值都被填充。

这更恰当地称为术语-文档矩阵。VSM更像是一个概念框架,由此产生了余弦相似的概念。

Lucene存储术语频率和文档频率,这些频率可用于获取文档和查询项的tf-以色列国防军权重。它使用这些来计算一个余弦相似度的变体概述的这里。因此,术语文档矩阵的行在索引中表示,这是一个哈希表映射项到(document,tf)对,再加上一个单独的表映射项到它们的df值。

一个人必须计算出与其他人相似的情况。

那是胡说。如果您回顾余弦相似性的教科书定义,您会发现它是查询和文档中相应术语权重的乘积之和。发生在文档中而不是查询中的术语(反之亦然)对相似性没有影响。因此,要计算余弦相似度,只需考虑那些与查询有一些共同术语的文档。Lucene就是这样获得它的速度的:它对查询项进行哈希表查找,并且只计算与查询的单词包具有非零交集的文档的相似之处。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21783193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档