本系列文章为Elasticsearch 的学习笔记,主要是为了便于日后对于相关知识点的回顾,在内容的范围以及正确性上可能存在一定出入。另外由于Elasticsearch的发展速度很快,很多特性会随着版本的演变而发生变化,具体的特性说明,如有疑问请参考对应版本的官方文档。本系列博客主要基于5.2版本
作为本系列博客的开篇,先对信息检索的相关基础知识做个简单的总结
信息检索的定义有很多,知乎的答案跟人觉得比较直接明了,定义如下
信息检索( Information Retrieval ):指信息按一定的方式组织起来,并根据信息用户的需要找出有关的信息的过程和技术。
信息检索的目标:准确、及时、全面的获取所需信息。
信息检索系统的设计主要包括如下三个部分的内容
1. 信息采集:可以通过爬虫,众包等多种方式完成信息的采集
2. 信息处理:系统处理采集来数据的过程称为索引构建,如何对数据进行高效的索引构建与存储是系统的核心问题。本文主要介分词与倒排索引两个环节
3. 信息查询:该部分主要关注的是如何在最短的时间内返回用户最想得到的信息。本文主要关注有哪些相关性检测模型可以让用户得到最想要的结果。
信息检索作为一门独立的学科,有很多学术方面的术语,为了便于后面的学习与总结,对常用的术语做个简单的总结
分词对于搜索引擎的帮助很大,可以帮助搜索引擎识别检索词语的含义,从而使搜索的准确度提高,因此分词的质量也影响了搜索结果的准确度。中英文的分词原理大致如下
英文单词之间是以空格作为自然分界符的,因此英文的分词相对简单,大致为一下流程:
输入文本-》词汇分割-》词汇过滤(去除stop word)-》词干提取-》大小写转换-》输出结果
细节部分此处不做过多介绍
汉语是以字为基本的书写单位,词语之间没有明显的区分标记,因此,中文词语分词对比英文分词要复杂许多。常用的分词方法主要包括1:词典匹配分词法
2:语义理解分词法 3:词频统计分词法.
这种方法按照一定策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。识别出一个词,根据扫描方向的不同分为正向匹配和逆向匹配。根据不同长度优先匹配的情况,分为最大(最长)匹配和最小(最短)匹配,该方法简单、分词效率较高,但汉语语言现象复杂丰富,词典的完备性、规则的一致性等问题使其难以适应开放的大规模文本的分词处理
该方法主要基于句法、语法分析,并结合语义分析,通过对上下文内容所提供信息的分析对词进行定界,它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断。这类方法试图让机器具有人类的理解能力,需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式。因此目前基于知识的分词系统还处在试验阶段。
主要思想:上下文中,相邻的字同时出现的次数越多,就越可能构成一个词。因此字与字相邻出现的概率或频率能较好的反映词的可信度。
主要统计模型为:N元文法模型(N-gram)、隐马尔科夫模型(Hidden Markov Model, HMM)。
倒排索引也常被称为反向索引,是一种索引的方法,被用来存储在全文搜索下某个单词在一个或是一组文档中的存储位置的映射,是文档检索系统中最常用的数据结构。
下面通过一个例子来对倒排索引做一个简单的说明:
原始文档集合的截图如下:
通常建立倒排索引的步骤如下:
1. 用分词系统将文档自动切分成单词序列,每个文档就转换为由单词序列构成的数据流;
含义解读:以单词“跳槽”为例,其单词编号为4,文档频率为2,代表整个文档集合中有两个文档包含这个单词,对应的倒排列表为{(1;1;<4>),(4;1;<4>)},其含义为在文档1和文档4中出现过这个单词,单词频率都为1,单词“跳槽”出现在两个文档中的位置都是4,即文档中第四个单词是“跳槽”。
检测模型是判断文档与用户查询相关性的核心技术。本章节将简单介绍几个常见的检测模型
布尔检索模型主要是把AND,OR,NOT三种逻辑运算符把检索词连接起来,构成一个逻辑检索式。
TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。
TFIDF的主要思想是:如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。TF-IDF实际上是:TF * IDF,TF词频(Term Frequency),IDF逆向文件频率(Inverse Document Frequency)。TF表示词条在文档d中出现的频率。IDF的主要思想是:如果包含词条t的文档越少,也就是n越小,IDF越大,则说明词条t具有很好的类别区分能力。如果某一类文档C中包含词条t的文档数为m,而其它类包含t的文档总数为k,显然所有包含t的文档数n=m+k,当m大的时候,n也大,按照IDF公式得到的IDF的值会小,就说明该词条t类别区分能力不强。但是实际上,如果一个词条在一个类的文档中频繁出现,则说明该词条能够很好代表这个类的文本的特征,这样的词条应该给它们赋予较高的权重,并选来作为该类文本的特征词以区别与其它类文档。
[来源于百度百科]
该方法主要是把文本内容转换为向量空间的向量运算,以空间上的相似度表达语义的相似度。该模型的数学基础是余弦相似性理论。
是目前效果最好的模型之一,okapi BM25这一经典概率模型计算公式已经在搜索引擎的网页排序中广泛使用。概率检索模型是从概率排序原理推导出来的。
基本思想是:
是通过概率的方法将查询和文档联系起来,给定一个用户查询,如果搜索系统能够在搜索结果排序时按照文档和用户需求的相关性由高到底排序,那么这个搜索系统的准确性是最优的。在文档集合的基础上尽可能准确地对这种相关性进行估计就是其核心。