
信息检索学习笔记
文章平均质量分 84
信息检索,可谓跨度极大的学科。各种理论,技术,在这里融合,碰撞,擦出有趣的火花。。。
guoziqing506
这个作者很懒,什么都没留下…
展开
-
概率检索模型
概率检索模型是当前信息检索领域效果最好的模型之一,它基于对已有反馈结果的分析,根据贝叶斯原理为当前查询排序。我在之前的博客 SVM解释:二、SVM的数学基础 中介绍了如何用朴素贝叶斯算法对数据进行分类,其实概率检索模型的基本原理与朴素贝叶斯分类是一样的。先回忆一下朴素贝叶斯算法的原理:对于测试元组XXX,最终目的是要计算对于不同的类CiCiC_i,计算后验概率p(Ci|X)p(Ci|X)p(C...原创 2018-08-13 21:30:26 · 9257 阅读 · 1 评论 -
隐性语义索引(LSI)原理与实现
隐性语义索引(Latent Semantic Idexing, LSI),也叫Latent Semantic Analysis(LSA),是信息检索领域一类非常重要的技术思想。它通过对词项-文档矩阵的奇异值分解,在理论上成功地解决了潜在语义(或者叫隐性语义)的检索问题。本文将介绍关于LSI的原理和实现方法。隐含语义问题基于关键词的文档检索是IR中最简单,也是最普遍的技术手段。一般来说,...原创 2018-07-11 21:55:52 · 6445 阅读 · 1 评论 -
主成分分析(PCA)原理与实现
主成分分析(PCA)是最重要的数据降维的方法之一。针对高维数据的处理时,往往会因为数据的高维度产生大量的计算消耗,为了提高效率,一般最先想到的方法就是对数据降维。与“属性子集选择”的方法(即选择一部分有代表意义的属性直接替代原数据)不同,PCA是通过创建一个由原数据中的属性“组合”而成的,数量较小的变量集合来替代原数据。PCA的基本思想可以这样描述:找出数据的所有属性中最主要的部分,用这个部分...原创 2018-06-27 14:16:19 · 2134 阅读 · 0 评论 -
Trie树的构建和应用
Trie树又叫“字典树”,是一种在字符串计算中极为常见的数据结构。在介绍Trie树的具体结构之前,我们首先要搞明白的就是Trie树究竟是用来解决哪一类问题的,为什么这类问题可以用Trie树高效的解决。我们为什么用Trie树1. 节约字符串的存储空间假设现在我们需要对海量字符串构建字典。所谓字典就是一个集合,这个集合包含了所有不重复的字符串,字典在对文本数据做信息检索系统时的作用我想毋庸赘述了。那么现原创 2017-11-17 16:48:11 · 2934 阅读 · 3 评论 -
简单理解KMP算法
KMP算法是迄今为止最为高效的字符串匹配算法。当然,在KMP算法出现之前,有关字符串的匹配问题当然经过了一个漫长的探索过程。从一开始最简单的朴素字符串匹配算法,到Rabin-Karp算法,再到有限自动机算法等等,可以说任何一个伟大算法的诞生都不可能是一朝一夕之功,在它之前一定有大量的理论及实验的基础。所以,想要彻底理解KMP算法最好是从头开始,对整个字符串的匹配问题有个完整的了解。但是,我在这篇博文原创 2016-08-09 14:53:41 · 1486 阅读 · 1 评论 -
计算几何问题汇总--圆与矩形
我在上一篇博客中(详见:计算几何问题汇总–点与线的位置关系)谈到了计算几何最基本的问题:解决点与线(线段or直线)的位置关系判断。那么,更进一步,还需要探讨复杂一点的情况:比如面与线,面与面之间的关系。本文中,我就先说说最常见的两种几何图形:圆与矩形。我将就矩形与圆的碰撞判断问题、线与矩形、线与圆之间的碰撞问题作出分析,以及给出这些解决问题的算法、代码。在此之前,我默认所有对本文内容感兴趣的读者,都原创 2016-10-07 20:28:34 · 5082 阅读 · 1 评论 -
Bloom Filter原理与实现
在做与Web爬虫有关的任务时,经常这样需要做这样的判断:对于新爬到的URL,我们需要判断这个新的URL是否已经在已有的URL集合中存在了。但是当已经存在的URL集合的数据量极其庞大时,这个存在性的判断工作就变得很有挑战性。把这个问题抽象出来,就是说:现在需要一种算法(工具),帮助我们实现一种高效而准确的,元素针对集合的存在性判断。为了解决上面说的这一类问题,人们从简入难,想出了很多办法:原创 2016-10-19 22:37:31 · 3004 阅读 · 0 评论 -
计算几何问题汇总--点与线的位置关系
点与点之间, 线与线之间,点与线之间的位置关系是一类非常重要的问题。它不仅是平面几何学的基石,也常常应用于LBS(Location Based Service),社交网络,以及数据库查询等领域。本文中,我将给出判断这些关系的相关算法,作为参考。需要说明的是,我给出的这些问题的解法,都是建立在二维平面空间之上。有关多维空间的位置关系,大家可以仿照二维空间中问题的思路,做相应的拓展。语言上,我用的当然还原创 2016-09-20 08:53:45 · 15094 阅读 · 0 评论 -
Kd-tree原理与实现
数据应用当中,最近邻查询是非常重要的功能。不论是信息检索,推荐系统,还是数据库查询,最近邻查询(Nearst Neighbor Search)可谓无处不在。它要实现的是帮助我们找到数据中和查询最接近的一个或多个数据条目(前者叫NN search, 后者也叫kNN),其实本质上是一样的,我在这篇博客中讲的Kd-tree主要是针对NN问题的。其实,这种问题本来是很容易解决的,只要设计好了数据相似度原创 2017-02-24 17:24:37 · 22437 阅读 · 6 评论 -
LSH(Locality Sensitive Hashing)原理与实现
LSH(Locality Sensitive Hashing)翻译成中文,叫做“局部敏感哈希”,它是一种针对海量高维数据的快速最近邻查找算法。在信息检索,数据挖掘以及推荐系统等应用中,我们经常会遇到的一个问题就是面临着海量的高维数据,查找最近邻。如果使用线性查找,那么对于低维数据效率尚可,而对于高维数据,就显得非常耗时了。为了解决这样的问题,人们设计了一种特殊的hash函数,使得2个相似度很高原创 2016-11-14 11:23:35 · 79525 阅读 · 47 评论 -
B树与B+树
B树是为实现高效的磁盘存取而设计的多叉平衡搜索树。这个概念在文件系统,数据库系统中非常重要。当然,有关于B树的产生,发展,结构等等方面的介绍已经非常详细,所以本文只是介绍有关于B树和B+树最核心的知识点,也算是我本人的学习笔记。至于详细的资料,因为毕竟有着太多,所以不再赘述。可以向大家推荐一篇博客:从B树、B+树、B*树谈到R 树,这篇文章中,作者对于B树系列数据结构的讲解非常详细,我的这篇博客,原创 2017-03-20 15:59:33 · 69236 阅读 · 22 评论 -
浅谈PageRank
1996年,两位还在斯坦福大学攻读计算机理学博士学位的研究生,开始了一项研究:如何对互联网上“成万上亿”的网页进行排序。在当时看来,这只是发生在斯坦福的一个普通课题研究而已,然而包括其研究者在内,都没有意识到,这项研究最后的成果,会引发互联网搜索引擎领域一个划时代的变革。这两位博士的名字相信大家都很熟悉了,他们正是后来大名鼎鼎的Google公司的创始人:拉里佩奇(Larry Page)和谢尔盖原创 2017-04-25 18:00:09 · 28862 阅读 · 7 评论 -
索引压缩
当待搜索的数据量极为庞大时,数据所对应的索引的数据量也会非常大。就拿最常见的倒排索引来说,特别是当用户查询的关键词是常用词时,这些词所对应的倒排列表可以达到几百兆,而将这样庞大的索引由磁盘读入内存,势必会严重增加检索响应时间,影响用户的搜索体验。为了解决这样的问题,学者们提出了一系列的索引压缩技术。实际上,我们所要处理的数据类型多如牛毛,根据不同的要求,为这些数据设计的索引更是千变万化,最常见原创 2017-08-10 16:59:27 · 5228 阅读 · 1 评论