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