我们常用的搜索引擎是 We 搜索 是信息检索的 个分支,学术上的信息检索( Information
trieva l , 简称 IR )的定义为 信息检索是从大规模非结构化数据 (通常是文本)的集合(通
常保存在计 机上〉中找出满足用户信息需求的资料(通常是文档〉 的过程。

1.信息检索常用术语

• 用户需求 (User Need ,简称 UN)
需要获得的信息 严格地说, UN 存在于用户的内心,但是通常用文本来描述,如找与“2014 世界杯”相关的新闻,有时也称为主题( Topic )。
• (Query)
UN提交给检索系统时称为查询( Query ),如“ iPhone7 价格”。对同 UN ,不同人不同时候可以构造出不同的 Query 上述需求也可表示成 苹果7价格” Query 在IR系统中往往还有内部表示。
• 文档 (Document)
文档是信息检索的对象,文挡不仅仅可以是文本,也可以是图像、视频、语音等多媒体文档。
• 文档集(Crops)
由若干文档构成的集合称为文档集合,文档集有时也称为语料库。海量的互联网网页件系统中的文本文件、大量的电子邮件,都是文档集合 具体例子。
• 文档编号(Document ID ) 
文档 ID是给文档集中的每个文档赋予的标识符,通过文档 ID 来区分不同的文档,这样能够方便搜索引擎的内部处理 缩写为 docID。
• 词条化( tokenization) 
词条化是将给定的 符序列拆分成系列子序列的过程,拆分的每个子序列称为一个词词条化的过程中有可能会去除标点符号等特殊字符。下面是 个词条化的具体子。
输入:Whatever happens tomorrow, we have had today. 
输出:whatever |  happens | tomorrow | we | have | had | today
4 Lucene Elasticsearch :全文检索实占
• 词项( Term)
词项是经过语言学预处理之后归一化的词条。词项 索引的最小单位,一般情况下可以把词项当作词,但词项不一定就是词 对于上面的句子,产生词项如下:
whatever |  happens | tomorrow | we | have | had | today
• 词项-文档关联矩阵( Incidence matrix) 
词项-文档关联矩阵是表示词项和文档之间所具有的一种包含关系的概念模型,表1-1展示了其含义 表中的每列代表一个文挡,每行代表一个词项,打对勾的位置含关系。
Elasticserach实战(1) 信息检索概述
      从纵向即文档这个维度来 看,每列代表一个文档包含的词项信息,比如doc1包含了term1,term4和 term5,而不包含 term2, term3, term6 。从横向即词项这个维度来 看,每行代表该词项在文档中的分布信息,比如对于 term 1来说, doc1,doc3,doc6 中出现过 term1,而其他文档不包含 term1,矩阵中其他的行列也可作此种解读。
• 词项频率( Term frequency) 
同一个单词在某个文档中出现的频率 比如,单“apple 某文档中出现了3次, 那么该单词在该文档中的词项频率就是3
• 文档频率(Document equency
出现某词项的文档的数目 比如,单词“China ”只出现在文档集合中的文档1和文档 5,那么该单词的文档频率就是2
• 倒排记录表(Postings lists) 
倒排记录表用于记录出现过某个单词的所有文档的文档列表 以及单词在该文档中出现的位置信息,每条记录称为一个倒排项 通过倒排列表即可获知哪些文档包含哪些单词。
• 倒排文件( Inverted file) 
倒排记录表在磁盘中的物理存储文件称为倒排文件。

2.分词算法概述

       词是表达语义的最小单位 分词对搜索引擎的帮助很大,可以帮助搜索引擎程序自动识别语句的含义,从而使搜索结果的匹配度达到最高,因此分词的质量也就直接影响了搜索结果的精确度 分词在文本索引的建立过程和用户提交检索过程中都存在。 利用相同的分词器,把短语或者句子切分成相同的结果,才能保证检索过程顺利进行。中文和英文的分词原理简介如下:

2.1英文分词的原理
     基本的处理流程是 输入文本、词汇分割、词汇过滤(去除停留词)、词干提取(形态还原)、大写转为小写、结果输出。
2.2中文分词原理
     中文分词比较复杂 并没有英文分词那么简单。这主要是因为中文的词与词之间并不像英文中那样用空格来隔开。中文分词主要有3种方法 基于词典匹配的分词方法、基于语义理解的分词、基于词频统计的分词。

2.2.1 词典匹配分词法
       基于字典匹配的分词方法按照一定的匹配策略将输入的字符串与机器字典词条进行匹配,这种方法是最简单的也是最容易想到的分词办法 最早由北京航空航天大学的梁南元教授提出。查字典分词实际上就是把一个句子从左向右扫描一遍,遇到字典中有的词就标识出来,遇到复合词就找到最长的词匹配,遇到不认识的字串则切分成单个词。按照匹配操作的扫描方向不同,字典匹配分词方法可以分为正向匹配、逆向匹配以及结合了两者的双向匹配算法;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配:按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与词性标注相结合的方法。几种常用的词典分词方法如下:
• 正向最大匹配(由左到右的方向)
• 逆向最大匹配(由右到左的方向)
• 最少切分(是每一句中切除的词数最小)
       实际应用中上述各种方法经常组合使用,以达到最好的效果,从而衍生出了结合正向最大匹配方法和逆向最大匹配算法的双向匹配分词法。由于中文分词最大的问题是歧义处理,结合中文语言自身的特点,经常采用逆向匹配的切分算法,处理的精度高于正向匹配,产生的切分歧义现象也较少。
        真正实用的分词系统,都是把词典分词作为基础手段,结合各种语言的其他特征信息来提高切分的效果和准确度。有的实用系统中将分词和词性标注结合起来,利用句法和词法分析对分词决策提高帮助,在词性标注过程中法代处理 利用词性和语法信息对分词结果进行检验、调整。
2.2.2 语义理解分词法
      基于语义理解的分词方法是模拟人脑对语言和句子的理解,达到识别词汇单元的效果。基本模式是把分词 句法、语义分析并行进行,利用句法和语义信息来处理分词的歧义。一般结构中通常包括分词子系统、句法语义子系统 调度系统。在调度系统的协调下,分词子系统可以获得有关词、句子等的句法和语义信息,模拟人脑对句子的理解过程。基于语义理解的分词方法需要使用大量的语言知识和信息。

2.2.3 词频统计分词法
        这种做法基于人们对中文词语的直接感觉。通常词是稳定的字的组合,因此在中文文章的上下文中,相邻的字搭配出现的频率越多,就越有可能形成一个固定的词。根据n元语法知识可以知道,字与字相邻同时出现的频率或概率能够较好地反映成词的可信度。实际的系统中,通过对精心准备的中文语料中相邻共现的各个字的组合的频度进行统计,计算不同字词的共现信息。 根据两个字的统计信息,计算两个汉字的相邻共现概率,统计出来的信息体现了中文环境下汉字之间结合的紧密程度。当紧密程度高于某一个阈值时,便可认为此字组可能构成一个词。
        基于词频统计的分词方法只需要对语料中的字组频度进行统计,不需要切分词典,因而叫作无词典分词法或统计分词方法。这种方法经常抽出一些共现频度高但并不是词的常用字组,需要专门处理,提高精确度。实际应用的统计分词系统都使用一个基本的常用词词典,把字典分词和统计分词结合使用。基于统计的方法能很好地解决词典未收录新词的处理问题,即将中文分词 中的串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。

 

引自:从lucene到Elasticsearch全文检索实战

相关文章: