1、主要内容:
在文档规模很大的情况下,满足布尔查询的结果文档数量可能非常多,往往会大大超过用户能够浏览的文档的数目。需要对搜索出来的文档进行评分和排序。
①、参数化索引及域索引的概念;目的:1、可以通过元数据(文档的作者、标题、出版日期等)来对文档进行索引和检索;2、上述索引能够提供一个简单的文档评分;
②、词项字在文档中的权重的概念,并通过期出现的统计信息进行权重计算;
③、每篇文档被表示为上述权重计算结果的向量,通过它可以计算查询和每篇文档的相似度。(向量空间方法);
④、向量空间模型中的权重计算的各种变形。
2、参数化索引及域索引:
①、元数据:指的是和文档有关的一些特定形式的数据,比如文档的作者、标题以及出版日期等等;
②、字段:元数据包含字段信息,如文档的创建日期、文档的格式、作者的信息,其取值通常是有限的。有点类似数据库中表中的字段(属性);
③、参数化索引:对每个字段(比如文档的创建时间)都存在一个与之对应的参数化索引,通过它我们只会选择在时间字段上满足查询需求的文档;
④、域索引:域可以是由任意的、数目无限制的文本组成。比如,吧文档的标题和摘要当做域。可以对文档的不同域建立索引。参数化索引,词典常常来自固定的词汇表,但是在域索引中,词典来自域中自由文本的所有词汇。
图6-2
经过编码后:
图6-3
⑤、域加权平均:给定一系列文档,嘉定每篇文档有l个域,其对应的权重分别是g1,g2,g3……gl∈[0,1],并且满足其和为1。令si未查询和文档的第i个域的匹配得分(1:匹配,0:未匹配)。则域加权评分方法可以定义为: ,该方法也成为排序式布尔检索。
这里的关键在于计算出该文档的得分。
⑥、权重学习:
这是一个二次规划问题,可参见 《数学规划》第5章,约束规划部分。
⑦、词项频率及权重计算:
提出问题:温昂中所有词项的重要性是一样的吗?
核心思想:将文档频率(df t,表示出现词项t的所有文档数目)高的赋予较低的权重。越是经常出现的词汇其价值越小,比如说停用词。使用逆文档频率来表示。
逆文档频率:idf t=log(N/df t)。其中N为总的文档数。
词项频率:词项t在文档d中出现的次数,记为tf t,d。
权重计算:tf-idf t,d=tf t,d×idf t
1、当t只在少数几篇文档中多次出现时,权重取值最大,此时能够对这些文档提供最强的区分能力;
2、当t在一篇文档中出现次数很少,或者在很多文档中出现,权重取值次之,此时对最后的相关度计算作用不大;
3、如果t在所有文档中都出现,那么权重取值最小。
⑧、向量空间模型(VSM):
是信息检索领域一系列相关处理的基础,比如文档的评分、文档的分类和聚类等。(可看《集体智慧编程》第六章 文档过滤和《机器学习实战》第四章 基于概率论的分类方法:朴素贝叶斯 中从文本中构建词向量P58)
下面有一个示例:
图6-12
示例6-4:
⑩向量相似度计算算法如下图:
图6-14
对于最后一步,求得最高的K个得分,可以使用二项堆来实现,见《 算法导论》第19章 二项堆。
还有其他的方法计算tf-idf权重,如tf的亚现行尺度变换方法,基于最大值的tf归一化等;
问题:在实际的计算中,相似度都是数万维的向量的内积计算,计算量大。