基于语义树的索引方法和系统
技术领域
本发明主要涉及全文检索领域,提出一种构建语义树,并提供基于语义树的索引方法和系统。
背景技术
全文检索主要分为两个部分:文章索引和查找。文章的索引主要指的是关键词的索引。简单来说就是,索引程序通过扫描文章,为每一个词建立一个索引,记录该词在文章中出现的次数和位置,查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。
全文检索系统是按照全文检索理论建立起来的,用于提供全文检索服务的软件系统。一般来说,全文检索需要具备建立索引和提供查询的基本功能。功能上,全文检索系统核心具有建立索引、处理查询返回结果集、增加索引、优化索引结构等等功能,外围则由各种不同应用具有的功能组成。结构上,全文检索系统核心具有索引引擎、查询引擎、文本分析引擎、对外接口等等,加上各种外围应用系统等等共同构成了全文检索系统。
全文信息搜索是信息时代的基本服务,文本信息检索是发展较快也较成熟的,其他的信息检索技术,往往也需要文本信息检索的支持。虽然搜索引擎已不仅仅局限于对文本进行检索,文本信息检索仍然是大部分搜索引擎的基础。常用的全文索引引擎有Lucence等,其主要是通过分词技术,结合文档关键词倒排序表实现全文信息的索引。
在信息检索系统的具体实现中,往往需要快速地找到文档中所包含的关键词。相比文档来说,关键词的个数是较少的,因此,以关键词为核心对文档进行索引是更加可行的方法。这就是信息检索领域常用的“倒排文档索引”技术。倒排文档索引可以被看成一个链表数组,每个链表的表头包含关键词,其后续单元则包括所有包括这个关键词的文档标号,以及一些其他信息。这些信息可以是文档中该词的频率,也可以是文档中该词的位置等信息。
倒排文档索引的优势不仅在于关键词个数少带来的检索效率提高,还在于其特别易于同信息检索技术结合。在实际应用中,查询中所包含的关键词往往是很少的,完全不包含查询中的所有关键词的文档,一般来说是不会被列入结果集的。因此,以关键词为主键进行索引,只需要用查询中包括的关键词,进行几次简单的查询就能够找出所有可能的文档。
全文索引主要技术是倒排文档索引技术,实质是词或者字的索引,结合特定的词典形成特定的关键词索引。
分词也是全文索引的关键技术之一。分词就是将连续的字序列,按照一定的规范重新组合成词序列的过程。中文分词(Chinese Word Segmentation)指的是将一个汉字序列切分成一个一个单独的词。我们知道,在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形式上的分界符,虽然英文也同样存在短语的划分问题,不过在词这一层上,中文比之英文要复杂的多、困难的多。分词技术的主要目的是减小倒排序表的存储,提高索引的效率。缺点是需要针对性的给出不同字典和分词的方法,缺乏统一的尺度。
对于常用的全文搜索来说,基本的功能就是分词加上倒排序文档。搜索引擎的服务随着信息量的增大,检索和存储量大,存在索引时间长,搜索速度慢等问题。
常规的全文检索对于分词技术和字典的依赖,使得全文搜索实施的难度加大。对于不同语种需要不同的字典和分词技术,对于同一语种不同专业的文档也需要不同的分词技术和字典,不同字典和分词技术也影响了系统的通用性。
本发明采用对文本信息进行特征序列的编码,形成相关的语义树,实质上提供了一种基于语句的全文搜索服务,搜索不再基于关键词的搜索,
本发明提供一种基于语义树的索引方法和系统,提供了一种不再依赖于分词的全文索引引擎,提供了一种适合不同语种的全文搜索引擎,具有存储空间小,索引速度和查询速度快等特点。
发明内容
本发明公开一种基于语义信息的全文搜索引擎,通过文档的导入,以语义中的句子为单位,形成语义树,由此构建的全文检索系统。
基于文字的序列特征信息的表示方法。语义是基于文字上下关联的,通过对文字信息的增量hash编码,构建文字的序列信息特征,即语义特征序列。语义特征序列构建形式如下:语句中的文字排列如下:w1w2w3...wn;依次表示为文字1到文字n的排列;
w1的特征序列定义为t1,t1=hash(w1);
w2的特征序列定义为t2,t2=hash(t1+w2);
依此类推,wn的特征序列定义为tn,tn=hash(tn-1+wn);
ti其中i=1,2,...n表示该语句的语义特征序列。
语义树的构建。语义树的概念如下:基于文字的表示习惯,以语句为单位构建文字和文字之间的前后关系,具体表现为存储的内容包括:前文字的特征信息编码,当前文字信息,当前文字序列的特征信息编码。语义树基本构建单元包括:
{ti-1,wi,ti,flag},其中flag为该特征在句子中位置的标识(居首、句中和句尾),由此组建语义树。
基于文字的编码规定,结合文字特有的分割符对语句进行切分,对语句进行特征序列的编码处理。
基于文字的编码规定实现单一语种、多语种结合的语义树。通过对组建语义树的编码范围的给定,可以构建单一语种、多语种组合甚至于不分语种的语义树。
语义特征序列和文档的关联存储。语义特征序列主要有三类:句首、句中和句尾特征序列,仅仅需要记录句尾的语义特征序列和文档的关系即可。句尾语义特征序列和文档的标识形成对应的关系,存储和记录该对应关系,存储该语义特征序列代表的语句在文档的位置。
针对语句或者语句片段的查找。通过构建查找的内容的特征序列,在特征语义树种查找该记录,查找主要分为以下步骤:
特征序列的最大化查找。首先查找位于句尾的特征序列,找到及进行关联文档的查询即可;否者进入特征序列的递减查找。
特征序列的递减查找。从句尾特征序列向前递减查找,以此递归直到找到特征序列或者没有找到句首的特征序列为止。
语句特征序列的关联文档或者处理方式查找。查找到的语义特征序列如果位于文档尾部,则可以从语义特征序列和文档的关联存储查找文档标识,通过文档表示进行文档的查找;否则进入查找句尾特征序列。
查找句尾特征序列,在语义树中查找句尾特征序列:
语义树基本存储结构为{ti-1,wi,ti,flag};
查找ti-1特征序列,通过语义树首先找到ti,判断是否为句尾;
如果是,则从文档和特征序列的关系表中查询文档的标识;如果否,则继续查找,直到找到句尾特征序列,根据特征序列查询文档标识。
查询文档标识。从特征序列和文档的关系表中查询文档标识和该特征序列代表的文档在该文档的位置等信息。
查询文档。根据文档标识查询文档信息。
查询语句的语义处理和理解方法。根据句尾语义特征序列,在文档的存储中找到相关的处理方法。
附图说明
图1表示本发明语义树建立和存储,语义特征序列和文档的关系,以及文档存储。
图2表示构建语义特征序列的方法。
图3表示查找语义特征向量的过程。
图4表示查找含有文档标识的句尾语义特征序列的过程。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明提供的基于语义树的全文搜索引擎服务,服务的实例包括:文档导入,语义树的构建,特征语义和文档的关系,文档信息的存储;提供基于语义的查找功能。简单说来包括语义树的建立和语句的查找两部分。
图1说明的语义树的建立过程。具体包括如下:
文档的导入;
确定文档结果中需要建立索引的信息域;
确定需要索引的文字编码范围;
确定文字的分割符;
切分文档为语句;
对语句进行特征信息编码;
存储特征序列到语义树信息表中;
存储句尾语义特征序列和文档的关系表;
存储文档。
通过全文信息表,特征语义树表,语义特征序列和文档的关系表,完成信息的导入,索引的构建过程,为信息的查找提供基础。
图2表示语义特征序列的构建。给定信息处理的编码规则和编码范围,对语句的文字进行筛选,构建文字序列。语义特征序列构建形式如下:
语句中的文字排列如下:w1w2w3...wn;依次表示为文字1到文字n的排列;
w1的特征序列定义为t1,t1=hash(w1);
w2的特征序列定义为t2,t2=hash(t1+w2);
依此类推,wn的特征序列定义为tn,tn=hash(tn-1+wn);
ti其中i=1,2,...n表示该语句的语义特征序列。
图3表示查找最大匹配的语义特征向量的过程,具体步骤如下:
针对需要查询的内容构建语义特征序列,t1t2t3...tn;
按序列尾部向前的方向递减查找,直到找到或者记录为空;
图4表示查找特征序列匹配的尾部特征序列。具体步骤如下:
判断特征序列是否句尾特征序列;
是,则找到,进行文档匹配环节;
否,则查找前序列为该特征序列的语义特征序列;
判断特征序列是否句尾特征序列,递归直到找到句尾特征序列。
查找文档标识。根据句尾特征序列,在语义特征信息和文档的关系中查询文档标识记录,查询语句在文档中的位置。
查找文档信息。根据文档的标识查找该文档,或者该文档给定的该语句的处理方式。