=============
== Pullock ==
=============
脚踏实地

Elasticsearc之信息检索基础概念

Elasticsearch

信息检索基础概念学习,包括分词算法、倒排索引等等。

分词算法

英文分词原理:输入文本、词汇分隔、词汇过滤(去除停留词)、词干提取(形态还原)、大写转小写、结果输出

中文分词原理,中文分词主要有三种方法:

  • 基于词典匹配的分词
  • 基于语义理解的分词
  • 基于词频统计的分词

词典匹配分词

按照一定的匹配策略将输入的字符串与机器字典词条进行匹配,实际上就是把一个句子从左向右扫描一遍,遇到字典中有的词就标识出来,遇到复合词就找到最长的次匹配,遇到不认识的字串则切分成单个单词。

常用词典分词方法:

  • 正向最大匹配,从左到右方向
  • 逆向最大匹配,从右到左方向
  • 最少切分,每一句中切除的词数最小

语义理解分词

模拟人脑对语言和句子的理解,达到识别词汇单元的效果。基本模式是把分词、句法、语义分析并行进行,利用句法和语义信息来处理分词的歧义。

词频统计分词

词频统计分词方法只需要对语料中的字组频度进行统计,不需要切分词典。

倒排索引

Inverted Index,也被称为反向索引,用来存储在全文搜索下某个单词在一个文档或一组文档中的存储位置的映射。

布尔检索模型

布尔检索法是指利用布尔运算符连接各个检索词,由计算机进行逻辑运算,找出所需信息的一种检索方法。

有三种逻辑运算:

  • AND*
  • OR+
  • NOT-

优先级:NOT > AND > OR

tf-idf权重计算

tf-idf,词频-逆文档频率,用以计算词项对于一个文档集或一个语料库中的一份文件的重要程度。词项在一篇文档中出现的频率非常高,说明其重要性比较高,如果这个词项在文档集中的其他文档出现的频率也很高,说明这个词语可能是比较通用比较常见的。

tf(term frequency),词项频率,词在整篇文档中出现的次数。 $$ 词频(tf_{t, d}) = \frac{单词在文档中的出现次数}{文档的总次数} $$ Lucene采用了另外一种词频标准化方法: $$ 词频(tf_{t, d}) = \sqrt{单词在文档中的出现次数} $$

df(document frequency),文档频率,代表文档集中包含某个词的所有文档数目。df通常比较大,把它映射到一个较小的取值范围,用逆文档频率idf(inverse document frequency)来表示。 $$ 逆文档频率(idf_t) = log(\frac{文档集总的文档数}{包含某个词的文档数+1})=log(\frac{N}{df_t + 1}) $$ 上式中分母越大,说明词越常见,逆文档频率越小。分母加1是为了防止文档不包含某个词时分母为0的情况。

词项权重TF-IDF计算公式: $$ tf-idf = 词频(tf_{t, d}) * 逆文档频率(idf_t) $$

向量空间模型

数学、数学

概率检索模型

概率检索模型从概率排序原理推导而来,基本思想:给定一个查询,返回的文档能够按照查询和用户需求的相关性得分高低来排序。

数学、数学

参考

  • 从Lucene到Elasticsearch全文检索实战
  • 深入理解ElasticSearch