您的位置:首页 > 其它

lucene权重计算及空间向量模型来判断两篇文档之间的关系

2015-08-14 15:27 316 查看
首先一个文档由好多的词(term)组成,其次,对于文档之间,不同的词的重要性不同。例如:I hava a dream这句话,"have" ,"dream"就比“a”重要。

所以在判断文档之间的关系首先找到哪些词对文档关系影响大。

找出term对文档重要性的过程就是计算词的权重的过程。计算词的权重有两个参数:第一个是词(term),第二个是文档(document).

词的权重表示该词在此文档中的重要性。越重要的词有越大的权重,因而在计算文档的相关性的时候发挥更大的作用。

判断词之间的关系从而得到文档相关性的过程使用向量空间模型的算法。

1.计算词的权重(term weight)的过程:

影响一个词在一篇文档中的重要性有两个因素决定:tf(term frequency)和df(document frequency).

tf该term在文档中出现的次数。越大说明该term在文档中出现的次数就越多,该次就是重要的词。

df多少文档包含了该词。越大说明该词就越普通,就不是关键的词。

计算tw(词权重)的公式:



这仅仅只term weight计算公式的简单典型实现。实现全文检索系统的人会有自己的实现,Lucene就与此稍有不同。

2.判断term之间的关系从而得到文档相关性的过程,也即向量空间模型的算法(vector space model)。

我们把文档看做一系列的词,每个词(term)都有一个权重(term weight).不同的词会根据自己在文档中的权重来影响文档相关性的打分计算。

于是把所有文档钟词(term)的权(weight)重看做一个向量。

Document = {term1, term2, …… ,term N}

Document Vector = {weight1, weight2, …… ,weight N}

同样我们把查询语句看作一个简单的文档,也用向量来表示。

Query = {term1, term 2, …… , term N}

Query Vector = {weight1, weight2, …… , weight N}

我们把所有搜索出的文档向量及查询向量放到一个N维空间中,每个词(term)是一维。



我们认为两个向量之间的夹角越小,相关性越大。

所以我们计算夹角的余弦值作为相关性的打分,夹角越小,余弦值越大,打分越高,相关性越大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: