分享

基于lucene的案例开发2:索引数学模型

本帖最后由 nettman 于 2015-4-16 22:42 编辑

问题导读

1.什么是文档、词元、域?
2.影响一个词元在一篇文档中的重要性主要有哪两个因素?
3.空间向量模型(VSM)可以表达什么?
4.对文档信息的检索,通过什么模型可以转化为求两个向量之间的夹角大小?






基于lucene的案例开发1:lucene初始认知

      通过前一篇博客,对所以也许有了一个大致的了解,知道检索是一个怎样的过程,这篇博客就简单的介绍一下lucene实现的数学模型。
      前面我们已经提到lucene实现的索引是一种反向索引,有词典和倒排表组成(实际的结构要比这个复杂很多),那索引的数学模型又是怎样的呢?在开始这个之前,还是先熟悉下几个名词。
      文档(Document)上篇博客的索引创建过程中列举的几个事例,每一句话都可以看成一个文档,当然该文档只有一个域(Field),通过标准分词技术,我们将这个域的值分成了很多的词元(Term),文档、域、词元这三个就是我们需要理解的三个名词。(这里自己想一下我们这次的案例 小说信息中,哪些是文档、域和词元?)

计算权重(Term Weight)过程
      从上面的介绍可知,一个文档可以分成多个词元(不同的分词技术,分成不同的词元),不同的词元对于文档的重要程度也是不同的。影响一个词元在一篇文档中的重要性主要有下面两个因素:
1、Term Frequency(tf) :即此Term在此文档中出现的次数,tf越大,说明该词元越重要;
2、Document Frequency(df) :即有多少文档包含此Term,df越大,说明该词元越不重要。

      上面这两个因素对权重的影响也很好理解,这就好比我们自己的技能一样,掌握很深的技能对自己工作的重要程度要大于那些一般的技能,当然,如果某项技能只有你自己或者少数几个人了解,那你在这方面就有很大的竞争力(好像又扯远了)。那我们来看一下公式:

1.png


当然这只是一个简单典型的计算公式,lucene在实际的实现过程中就与此少有不同。

空间向量模型(VSM)
      我们可以把一篇文档看作是一系列词元的集合,每个词元都有一个权重,如下:
Document = {term1, term2, term3 …… termN}
DocumentVector = {weight1, weight2, weight3 …… weightN}
      我们把所以的文档放到一个N维的空间向量中(所有文档分成N个词元,就N维向量;其中文档D在m坐标上的映射为文档D中的m词元的权重),如图:

2.png

      这样我们再计算两个文档相关程度的时候,就可以看他们之间的夹角大小即可(夹角越小,相关程度越高,否则相关程度越低)。当然该N维向量也可以用于用户的检索。

检索索引

     在这个数学模型中,对文档信息的检索,就转化为求两个向量之间的夹角大小,当然,我们也需要对用户的搜索关键词进行分词创建空间向量,如下图:

3.png
      从上图中,我们可以认为两个向量之间的夹角越小,相关性越大,否则相关性越小,因此我们计算夹角的余弦值作为两者的相关性。这样我们通过计算查询向量与每一个向量的夹角余弦值就可得到该查询字符串与索引中的记录的相关度,然后对其排序即可得到最终的结果。

      下一篇再介绍一下lucene的文件结构就不再介绍lucene的基本原理了,后面就简单的介绍一下案例中可能用到的API。所以如果想详细的了解lucene的原理,请参照网上其他学习资料或者相关的资料书。



相关内容:
基于lucene的案例开发1:lucene初始认知

基于lucene的案例开发2:索引数学模型

基于lucene的案例开发3:索引文件结构

基于lucene的案例开发4:创建索引

基于lucene的案例开发5:搜索索引

基于lucene的案例开发6:分词器介绍

基于lucene的案例开发7:Query查询

基于lucene的案例开发8:IndexSearcher中检索方法

基于lucene的案例开发9:案例初识

基于lucene的案例开发10:搜索后台基础,JsonUtil & XmlUtil类介绍

基于lucene的案例开发11:项目常用类ClassUtil & CharsetUtil介绍

基于lucene的案例开发12:数据库连接池

基于lucene的案例开发13:实现实时索引基本原理

基于lucene的案例开发14:实时索引管理类IndexManager

基于lucene的案例开发15:实时索引的检索

基于lucene的案例开发16:实时索引的修改

基于lucene的案例开发17:查询语句创建PackQuery

基于lucene的案例开发18:纵横小说更新列表页抓取

基于lucene的案例开发19:纵横小说简介页采集

基于lucene的案例开发20:纵横小说章节列表采集

基于lucene的案例开发21:纵横小说阅读页采集

转载请注明出处: http://blog.csdn.net/xiaojimanman/article/details/42818185

已有(1)人评论

跳转到指定楼层
zhujun182104906 发表于 2015-4-10 11:17:14
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条