Information Retrieval

从大规模非结构化数据集合中找出满足用户信息需求的资料的过程。

IR不仅仅是搜索,IR系统也不仅仅是搜索引擎。

  • 返回与信息检索相关的网页 -> 搜索引擎(Search Engine)
  • 曾哥是狮子座的吗?-> 问答系统(Question Answering)
  • 返回IPad各种型号、配置、价格等 -> 信息抽取 (Information Extraction)
  • 使用Google Reader订阅新闻,并获取推荐 -> 信息过滤(Information Filtering)、信息推荐(Information Recommending)

数据挖掘(Data Mining)从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。

信息检索中相关度是一个函数R,输入是查询Q、文档D和文档集合C,返回的是一个实数值 R=f(Q,D,C)。信息检索就是给定一个查询Q,从文档集合C中计算每
篇文档D与Q的相关度并排序。

信息检索系统的基本组成

文本处理(Text Operations):对查询和文本进行的预处理操作

查询处理(Query operations):对经过文本处理后的查询进行进一
步处理,得到查询的内部表示(Query Representation)

文本索引(Indexing):对经过文本处理后的文本进行进一步处理,
得到文本的内部表示(Text Representation),通常基于索引项
(Term)来表示

布尔检索及倒排索引

信息检索模型概述

信息检索模型是描述信息检索中的文档、查询和它们之间的关系(匹配函数)的数学模型。包括 基于文本内容的检索模型与内容无关的其他检索模型 两大类。

布尔模型「基于内容」

文档表示:一个文档被表示为关键词的集合。

查询表示:查询式(Queries)被表示为关键词的布尔组合,用“与、或、非”连接起来。

相关度计算:检索策略是二值匹配,当且仅当它能够满足布尔查询式时,才将其检索出来。

向量空间模型「基于内容」

文档表示:一个文档被表示为关键词构成的向量,可以表示为D(t1,t2,…,tn),其中n就代表了关键字的数量。

特征项权重Wk(Term Weight):指特征项tn能够代表文档D能力的大小,体现了特征项在文档中的重要程度。

查询表示:文档被表示为关键词构成的向量Q(t1,t2,…,tn) 。

相关度计算:向量间的距离: D(t1,t2,…,tn), Q(t1,t2,…,tn)

统计语言模型(Probabilistic Language Models)「基于内容」

语言就是其字母表上的某种概率分布,反映了任何一个字母序列成为该语言的一个句子的可能性,称这个概率分布为语言模型。给定一个语言,对于一个语言句子可以估计其出现的概率。

链接分析模型「内容无关」

Sergey BrinLarry Page 在1998 年提出了PageRank 算法,J.Kleinberg 于1998年提出了HITS 算法。

基于关联的模型

同一个类型下的两个对象,如果经常连接到相同的其他对象,那么这两个对象的相似性应该很高。


词项—文档关联矩阵(incidence matrix)

返回文档的好坏

查准率:返回的能满足用户信息需求的文档占总的返回文档的百分比。

召回率:返回的能满足用户信息需求的文档占总的能满足用户信息需求的文档的百分比。


SearchEngine

ElasticSearch节点启动时,使用广播技术发现集群中其他节点,进行连接。集群中有一个节点被选举为主节点(master),该节点负责集群状态管理与集群拓扑结构变化时做出反应。

shard = hash(document_id) % (num_of_primary_shards)

Read operations consist of two parts:

  • Query Phase
  • Fetch Phase

Query Phase

Fetch Phase

Analyzer

Elasticsearch 利用 Analysis 模块来构建 Index 以及Query,可以在定义 mapping 时指定 analyzer

Analyzer 由一个到数个 Tokenizer、零到多个 Char FilterToken Filter 组成。AnalyzerTokenizer 以及 Token Filter 都可以在 mapping 中指定。

Char Filter 替换字符串中的内容,常用语过滤HTML语法,或是把特殊字符转换为有意义的单字,例如把 & 转换为

Tokenizer 用于将字符串拆分为一组token,每个token都可以带有一些特殊属性。

Token Filter 用来更改token内容,删除特定token以及增加token。,例如:lower case 和 去除停用词。

Analysis


Architecture

Gateway是ES用来存储索引的文件系统,支持多种类型。
Gateway的上层是一个分布式的lucene框架。

Lucene之上是ES的模块,包括:索引模块、搜索模块、映射解析模块等
ES模块之上是 Discovery、Scripting和第三方插件。Discovery是ES的节点发现模块,不同机器上的ES节点要组成集群需要进行消息通信,集群内部需要选举master节点,这些工作都是由Discovery模块完成。支持多种发现机制,如 Zen 、EC2、gce、Azure。Scripting用来支持在查询语句中插入javascript、python等脚本语言,scripting模块负责解析这些脚本,使用脚本语句性能稍低。ES也支持多种第三方插件。
再上层是ES的传输模块和JMX.传输模块支持多种传输协议,如 Thrift、memecached、http,默认使用http。JMX是java的管理框架,用来管理ES应用。
最上层是ES提供给用户的接口,可以通过RESTful接口和ES集群进行交互。



Write


Query


Query

  • Match Query and Multi-Match Query

    ss

  • Multi-Match Query

  • Bool Query
  • Boosting Query
  • Common Term Query
  • Constant Score Query
  • Dismax Query
  • Filtered Query
  • Fuzzy Query
  • Function score Query
  • Geoshape Query
  • Has Child Query and Has Parent Query and Top Children Query
  • Ids Query
  • Indices Query
  • More Like This and More Like This Field Query
  • Nested Query
  • Prefix Query
  • Query String Query and Simple Query String Query
  • Range Query and Regrex Query and Wildcard Query
  • Span Query
  • Term Query and Terms Query
  • Template Query

ElasticSearch 5.6.X Query DSL汇总

特定领域语言(Domain Specific Language DSL)指的是专注于某个应用程序领域的计算机语言。
外部DSL:不同于应用系统主要使用语言的语言,通常采用自定义语法,宿主应用的代码采用文本解析技术对外部DSL编写的脚本进行解析。SQL
内部DSL:通用语言的特定语法,用内部DSL写成的脚本是一段合法的程序,但是它具有特定的风格,而且仅仅用到了语言的一部分特性,用于处理整个系统一个小方面的问题;

ElasticSearch 提供丰富且灵活的查询语言叫做DSL查询(Query DSL),使用JSON格式,允许构建更加复杂、强大的查询。

查询所有文档(match_all)

1
2
3
4
5
6
GET /_search
{
"query": {
"match_all": {}
}
}

词语匹配(match)

1
2
3
4
5
6
7
8
GET /_search
{
"query": {
"match": {
"FIELD": "TEXT"
}
}
}

短语匹配(match_phrase)

1
2
3
4
5
6
7
8
GET /_search
{
"query": {
"match_phrase": {
"FIELD": "PHRASE"
}
}
}

短语前缀匹配(match_phrase_prefix)

1
2
3
4
5
6
7
8
GET /_search
{
"query": {
"match_phrase_prefix": {
"FIELD": "PREFIX"
}
}
}

查询模型

布尔模型(Boolean Model)
布尔模型是一种常用检索模型,数学基础是集合论。布尔模型之中,文档与查询由其包含的单词集合来表示,两者间相似性由布尔代数运算表示。
布尔模型一般使用与、或、非来将用户查询连接起来,查询布尔表达式和所有文档的布尔表达式进行匹配,匹配成功的文档的得分为1,否则为0。

例如:苹果 AND (IPad2 OR IPhone) 表示一篇文档必须包含苹果 同时也要包含IPad2或者IPhone

D1:IPhone 5于9月13号问世。
D2: 苹果公司于9月13号发布新一代IPhone。
D3:IPad2将于3月11日在美上市。
D4:IPhone和IPad2的外观设计精美时尚
D5:80后90后都喜欢IPhone,但不喜欢吃苹果。

检索结果就是D2和D5符合搜索条件。

优点在于形式简洁、结构简单。

缺点在于准确匹配可能导致检出文档过多或过少。
因为布尔模型只是判断文档要么相关、要么不相关,检索策略基于二值判定标准,无法描述与查询条件部分匹配情况。
因此,布尔模型实际上是一个数值检索模型而不是信息检索模型。

向量空间模型(Vector Space Model,VSM)

上世纪70年代,由康奈尔大学Salton等人提出,基本思想将文档看成由N维特征组成向量,采用单词作为特征,每个特征会根据一定依据计算其权重,N维带权特征共同构成了一个文档,来表示文档主题内容。

计算文档相似性可以采用余弦定义,求文档在N维空间中查询词向量和文档向量夹角,越小越相似;特征权重,可以采用TF-IDF,TF是词频,IDF是逆文档频率因子(同一个单词在文档集合范围的出现次数)。
IDF是一种全局因子,考虑特征单词之间的相对重要性,特征词出现在其中的文档数目越多,IDF值越低,区分不同文档能力越差。

向量表示:

文档Dj向量可以表示为Dj(w1j, w2j ,…,wnj ) ,其中n是系统中的单词数目,wij 代表了标引词i在文档Dj中权重。
查询Q向量可以表示为Q(w1q, w2q ,…,wnq ) ,wiq代表了单词i在查询Q中权重。

文档-单词矩阵:N篇文档,M个词构成的矩阵,每列可以看成每篇文档的向量表示,每行也可以可以看成单词的向量表示。

权重:
布尔权重:标引词i在文档j中的权重wij =0或1(出现取1,否则取0)。
TF权重:单词在文档中出现的次数。权重wij = TFij或者归一化后的TF值。
TF归一化:将一篇文档中所有的标引词的TF值归一化到[0,1]之间。
单词文档频率:单词在文档集合中出现文档篇数,反映了单词的区分度, 越高表示单词越普遍,因此其区分度越低,其权重也越低。
逆文档频率:DF的倒数。

计算权重:向量空间模型中通常采用TF IDF的方式计算权重,即标引词i在文档dj的权重Wij = TFij IDFij。
相似度计算:文档和查询词的相关程度由各自向量在向量空间中的相对位置来决定。主要采用余弦函数定义相似度。

余弦相似性将每个文档以及查询看做N维特征空间的一个数值点。每个特征形成n维空间中的一个维度,链接特征空间原点和数值点形成一个向量,余弦相似性就是计算特征空间中两个向量之间夹角。
夹角越小,两个特征向量内容越相似。两个完全相同的文档,其在向量空间中的两个向量是重叠的,余弦相似性值为1。

优点:简洁直观,支持部分匹配和近似匹配,
缺点:计算量大,单词不同位置会代表不同权重,而不同关键词长度也会影响权重大小,单词之间独立性假设与实际不符:实际上,单词的出现之间是有关系的,不是完全独立的。

概率模型(Statistical Model)

概率模型是从概率排序原理推导出来的。通过概率方法将查询和文档联系起来,给定一个查询,如果搜索系统能够在搜索结果排序时按照文档和查询相关性由高到底排序,那么这个搜索系统准确性是最优的。

相似度计算:
将查询Q和文档D根据有没有单词表示为二值向量,Q={q1,q2,…},D={d1,d2,…},di=0或1表示文献中没有或有第i个单词. 用R表示文献相关,表示文献不相关。
条件概率P(R|dj )表示文档 dj与查询qi相关的概率。

条件概率P(|dj)表示文档dj与查询qi不相关的概率。

利用它们的比值计算文档与查询的相似度。
若P(R|d)> P( |d),即比值大于1,则文献相关程度大于不相关程度,认为文献d是相关的,否则认为文献d不相关。在两者相等时,人为地认为它是不相关的。

优点:采用严格数学理论为依据,采用相关反馈原理,在其中没有使用用户难以运用的布尔逻辑方法,在操作过程中使用了词的依赖性和相互关系。
缺点:计算复杂度大,不适合大型网络,参数估计难度较大,条件概率值难估计,需与其他检索模型结合。

语言模型(Language Modeling)

借鉴语音识别领域采用的语言模型技术,将语言模型和信息检索模型相互融合的结果。语言模型代表了单词或者单词序列在文档中的分布情况;

其他的检索模型的思考路径是从查询到文档,即给定用户查询,如何找出相关的文档。

语言模型思路正好相反,是文档到查询,即为每个文档建立不同的语言模型,判断由文档生成用户查询的可能性有多大,然后按照概率由高到低排序,作为搜索结果。


Reference:

  1. Anatomy of an Elasticsearch Cluster: Part I
  2. Anatomy of an Elasticsearch Cluster: Part II
  3. Anatomy of an Elasticsearch Cluster: Part III
  4. Elasticsearch5.6.X 的Query DSL种类汇总
  5. Bool 查询
  6. Dis Max 查询
  7. Elasticsearch 写入流程剖析
  8. Elasticsearch 查询流程剖析
  9. 中科大 信息检索与数据挖掘 2015