一种索引建立方法及装置与流程

文档序号:13910108阅读:218来源:国知局
一种索引建立方法及装置与流程

本发明实施例涉及信息索引以及查询领域,尤其涉及一种索引建立方法及装置。



背景技术:

近年来,随着互联网技术的迅速发展和普及,很多情况下我需要从海量数据中快速而准确地找到我们想要的数据,这一过程称为相似性搜索。

随着网络数据的急剧增加,搜索速度已经成为相似性搜索的一大瓶颈,因此,如何设计一个快速有效的索引结构,成为了大数据时代下相似性搜索的迫切需求。目前常用的索引技术一种为基于树形结构的索引,典型的有kd树。树形结构的索引采用了子空间划分的结构设计,通过将对象数据划分到若干个子空间中,每个子空间中包含相似的数据,在进行搜索时,只在某个子空间范围内进行搜索即可,在低维特征空间中有效提高了检索速度。但是当搜索对象的特征维数增大时,树形结构索引的效率大大降低,其效率与线性查找的时间复杂度相比几乎没有提高。另一种索引技术为基于传统的hash函数索引,例如md5,其原理为将原始内容尽量均匀地随机映射为一个签名,因此,即使原始内容只相差一个字节,则所产生的签名也很可能差别极大。若两个签名相等,则说明原始内容在一定概率下是相等的,如果不相等,除了说明原始内容不相等外,不再提供任何信息。因此基于传统的hash函数的索引技术不能通过比较签名的相似度来确定原始内容之间的相似度,具备一定的局限性。



技术实现要素:

本发明实施例提供了一种索引建立方法及装置,有效降低了索引数据的存储量,进而提高了检索速度。

第一方面,本发明实施例提供了一种索引建立方法,该方法包括:

提取目标文本的特征词;

对所述特征词进行排序得到特征字符串;

对所述特征字符串应用minhash算法,得到所述目标文本对应的哈希值;

查找映射缓存池中是否存在与所述哈希值匹配的索引映射桶,若存在,则在所述索引映射桶中建立所述哈希值与所述目标文本之间的索引;

若所述映射缓存池中不存在与所述哈希值匹配的索引映射桶,建立与所述哈希值匹配的索引映射桶,并建立所述哈希值与所述目标文本之间的索引。

进一步地,在所述索引映射桶中建立所述哈希值与所述目标文本之间的索引,包括:

若所述索引映射桶中不存在与所述哈希值相同的索引哈希值,则将所述哈希值存入所述索引映射桶中,并建立所述哈希值与所述目标文本之间的索引;

若所述索引映射桶中已经存在与所述哈希值相同的索引哈希值,则不对所述哈希值进行再次保存,直接建立所述索引哈希值与所述目标文本之间的索引。

进一步地,所述方法还包括:

若所述映射缓存池中存在与所述哈希值匹配的索引映射桶,则将与所述哈希值对应的文本数据作为与所述目标文本相似的文本数据进行推荐。

进一步地,所述方法还包括:

随机确定n个哈希函数;

基于所述n个哈希函数对目标文本的特征字符串分别进行哈希运算,得到n个哈希值;

统计所述n个哈希值位于映射缓存池中同一索引映射桶的相近哈希值的数量;

将所述相近哈希值的数量进行排序,并根据排序结果确定与所述目标文本相似的推荐文本数据集;

计算所述目标文本与所述推荐文本数据集中每个推荐文本数据之间的相似度;

将相似度满足设定阈值的推荐文本数据进行推荐;其中,n为正整数。

进一步地,所述提取目标文本的特征词包括:

对目标文本进行分词;

根据各分词的词性和出现的频率确定所述目标文本的特征词。

进一步地,所述对目标文本进行分词包括:

基于大粒度或小粒度模式,结合词频以及词性选择对应的分词单元对所述目标文本以单词为单位进行划分,并标注每个单词的词性。

进一步地,在对目标文本进行分词之前,所述方法还包括:

对目标文本中不能识别的字符进行过滤。

第二方面,本发明实施例提供了一种索引建立装置,所述装置包括:

特征词提取模块,用于提取目标文本的特征词;

排序模块,用于对所述特征词进行排序得到特征字符串;

第一运算模块,用于对所述特征字符串应用minhash算法,得到所述目标文本对应的哈希值;

第一建立模块,用于查找映射缓存池中是否存在与所述哈希值匹配的索引映射桶,若存在,则在所述索引映射桶中建立所述哈希值与所述目标文本之间的索引;

第二建立模块,用于若所述映射缓存池中不存在与所述哈希值匹配的索引映射桶,建立与所述哈希值匹配的索引映射桶,并建立所述哈希值与所述目标文本之间的索引。

进一步地,所述装置还包括:

保存单元,用于若所述索引映射桶中不存在与所述哈希值相同的索引哈希值,则将所述哈希值存入所述索引映射桶中,并建立所述哈希值与所述目标文本之间的索引;

建立单元,用于若所述索引映射桶中已经存在与所述哈希值相同的索引哈希值,则不对所述哈希值进行再次保存,直接建立所述索引哈希值与所述目标文本之间的索引。

进一步地,所述装置还包括:

推荐模块,用于若所述映射缓存池中存在与所述哈希值匹配的索引映射桶,则将与所述哈希值对应的文本数据作为与所述目标文本相似的文本数据进行推荐;或者用于随机确定n个哈希函数;基于所述n个哈希函数对目标文本的特征字符串分别进行哈希运算,得到n个哈希值;统计所述n个哈希值位于映射缓存池中同一索引映射桶的相近哈希值的数量;将所述相近哈希值的数量进行排序,并根据排序结果确定与所述目标文本相似的推荐文本数据集;计算所述目标文本与所述推荐文本数据集中每个推荐文本数据之间的相似度;将相似度满足设定阈值的推荐文本数据进行推荐;其中,n为正整数。

本发明实施例提供的一种索引建立方法,通过对目标文本的特征词字符串应用minhash算法得到所述目标文本对应的哈希值,进而查找映射缓存池中是否存在与所述哈希值匹配的索引映射桶,若存在,则在所述索引映射桶中建立所述哈希值与所述目标文本之间的索引,若所述映射缓存池中不存在与所述哈希值匹配的索引映射桶,建立与所述哈希值匹配的索引映射桶,并建立所述哈希值与所述目标文本之间的索引,从而实现了通过将相似的文本数据的索引以哈希值的形式存储到同一索引映射桶中,减少了相似数据的存储索引,提高了检索速度。

附图说明

图1是本发明实施例一提供的一种索引建立方法流程示意图;

图2是本发明实施例二提供的一种索引建立方法流程示意图;

图3是本发明实施例二提供的一种近邻哈希分类、索引建立与相似文本查询流程示意图;

图4是本发明实施例三提供的一种索引建立装置的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各项步骤的顺序可以被重新安排。当其步骤完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

实施例一

图1为本发明实施例一提供的一种索引建立方法流程示意图,本实施例提供的索引建立方法可适用于对大批量的文本数据建立索引,该方法可以由索引建立装置来执行。参见图1所示,所述方法具体包括如下:

步骤110、提取目标文本的特征词。

具体的,提取目标文本的特征词可以以中文分词为基础,在分词时通过文本分词以及词频排序,并可以进一步依靠文本语义分析和词性调优等,找到能准确反映文本含义的分词,将这类能准确反映文本含义的分词作为特征词。进一步按照预设策略对特征词排序后得到特征字符串,通过对特征字符串应用minhash算法,得到与所述目标文本对应的哈希值,此哈希值作为所述目标文本的标识,因此,所述目标文本则可以通过对应的哈希值来索引,相比于直接存储特征索引文本,减少了索引存储量;同时,在通过该索引进行相似文本检索时则可直接比较对应的哈希值,大大降低了文本之间相似性识别的复杂度,提高了检索效率。同时,通过采用智能分词而不是简单的关键词提取来获取目标文本的特征词,也保证了较高的识别准确率。

示例性地,提取目标文本的特征词包括:

对目标文本进行分词;具体的,对目标文本进行分词包括:基于大粒度或小粒度模式,结合词频以及词性选择对应的分词单元对所述目标文本以单词为单位进行划分,并标注每个单词的词性。

根据各分词的词性和出现的频率确定所述目标文本的特征词。

具体做法是将目标文本切分为词,具体切分时可以采用大粒度或小粒度模式,例如目标文本为“世界杯足球赛”,如果我们按照大粒度模式进行切分,则切分结果为“世界杯/足球赛”,如果我们按照小粒度模式进行切分,切分结果为“世界/杯/足球/赛”,两种模式的区别在于切分出的分词的字数范围不同。实际进行切分时还可以结合智能的词频统计,结合词频词性选择特定的分词单元来进行切分,并进行词性标注,例如对于目标文本为“2014年世界杯足球赛在巴西举办”,分词后的结果可以是:2014(数词)、足球赛(名词)、巴西(地方名词)、举办(动词)。然后从所有分词中选取几个词作为目标文本的特征词,例如我们只选取三个特征词,一般地方名词、名词以及动词能较好地反应原文本的含义,另外若一个词在文中出现多次,则可以考虑提高该词入选为特征词的概率,具体选取特征词的算法可以根据实际需求进行确定。由于上述举例中各分词只出现一次,因此可以不考虑词频的因素,如可以选取“巴西”、“世界杯”、“举办”作为特征词。

进一步地,在对目标文本进行分词之前,还包括:

对目标文本中不能识别的字符进行过滤。

具体的,主要是对目标文本进行过滤噪音预处理,不能识别的字符可以是指非指定编码格式,或者无意义的字符,如制表符、空格等。

步骤120、对所述特征词进行排序得到特征字符串。

对选出的特征词按照预设排序策略进行排序,例如所述排序策略可以是按照各特征词的首字母进行排序,得到排序后的特征字符串。

步骤130、对所述特征字符串应用minhash算法,得到所述目标文本对应的哈希值。

其中,对所述特征字符串应用minhash算法的第一步为:哈希函数生成与设计哈希函数h(x)={h1(x),h2(x),…hm(x)},设置哈希函数h(x)的位数(例如32位,即m=32),将哈希函数h(x)的各位初始化为0。其中,h(x)的含义为把x映射成一个整数的哈希函数。假设,h(x)是一个良好的哈希函数,具有很好的均匀性,能够把不同元素映射成不同的整数。第二步:通过生成的哈希函数h(x)计算每个特征词对应的哈希编码hashcode(如32位),对于每个特征词的哈希编码hashcode的每一位,如果该位为1,则minhash相应位的值加它的权重(通常是出现的频率);否则减它的权重;对最后得到的(32位)minhash,如果该位为1,则设置为1,如果该位为0,则设置为0。最后基于得到的哈希编码得到目标文本对应的哈希值。

步骤140、查找映射缓存池中是否存在与所述哈希值匹配的索引映射桶,若存在,则在所述索引映射桶中建立所述哈希值与所述目标文本之间的索引。

映射缓存池中的索引映射桶为预设范围哈希值的集合,处于预设范围内的哈希值为互相接近的哈希值,表示各哈希值对应的目标文本是相似文本,即每一个索引映射桶为一个相似文本索引的集合。通过将相似文本的索引建立在同一个索引映射桶中,并且由于minhash算法的物理特性,多个相似文本对应的哈希值可能相同,因此多个相似文本可能对应同一个索引哈希值,实现了相似文本的分类,减少了索引存储量,提高了相似文本的检索速度。

进一步地,在所述索引映射桶中建立所述哈希值与所述目标文本之间的索引,包括:

若所述索引映射桶中不存在与所述哈希值相同的索引哈希值,则将所述哈希值存入所述索引映射桶中,并建立所述哈希值与所述目标文本之间的索引;

若所述索引映射桶中已经存在与所述哈希值相同的索引哈希值,则不对所述哈希值进行再次保存,直接建立所述索引哈希值与所述目标文本之间的索引。

由于相似的文本应用minhash算法后可能得到的哈希值相同,因此,若索引映射桶中已经存在与当前哈希值相同的索引哈希值,则不再对当前的索引哈希值进行重复保存,直接建立已有的与当前哈希值相同的索引哈希值与当前的目标文本之间的索引关系。如此,不用每个目标文本都建立一个与之对应的索引,从而减少了相似文本的存储索引,存储索引积压的数量少了,进一步提高了相似文本的检索速度。

步骤150、若所述映射缓存池中不存在与所述哈希值匹配的索引映射桶,建立与所述哈希值匹配的索引映射桶,并建立所述哈希值与所述目标文本之间的索引。

本实施例提供的一种索引建立方法,通过对目标文本的特征字符串应用minhash算法,得到对应的哈希值,由于多个相似文本对应的哈希值可能相同,因此多个相似文本可能对应同一个索引哈希值,因此,减少了索引存储量,通过将相似文本的索引建立在同一个索引映射桶中,实现了相似文本的分类,提高了相似文本的检索速度。

实施例二

图2是本发明实施例二提供的一种索引建立方法流程示意图,在实施例一技术方案的基础上,本实施例增加了进行相似文本的推荐操作,基于实施例一公开的方法建立的索引进行相似文本推荐,可以实现较高的相似文本推荐效率以及准确率。具体参见图2所示,所述方法包括:

步骤210、提取目标文本的特征词。

步骤220、对所述特征词进行排序得到特征字符串。

步骤230、对所述特征字符串应用minhash算法,得到所述目标文本对应的哈希值。

步骤240、若映射缓存池中存在与所述哈希值匹配的索引映射桶,则在所述索引映射桶中建立所述哈希值与所述目标文本之间的索引,并则将与所述哈希值对应的文本数据作为与所述目标文本相似的文本数据进行推荐。

对于步骤240的操作具体可以是将匹配的索引映射桶中与所述哈希值相同的索引哈希值对应的文本数据作为与所述目标文本相似的文本数据进行推荐。显然此时,所述匹配的索引映射桶中存在与所述哈希值相同的索引哈希值,此时不需要再将所述哈希值进行重复保存,以减少索引存储量,可直接进行相似文本推荐。或者若所述匹配的索引映射桶中不存在与所述哈希值相同的索引哈希值,则可进行如下操作,以实现相似文本的推荐。

随机确定n个哈希函数;所述n个哈希函数可直接从哈希函数库中顺序选定;

基于所述n个哈希函数对目标文本的特征字符串分别进行哈希运算,得到n个哈希值;

统计所述n个哈希值位于映射缓存池中同一索引映射桶的相近哈希值的数量;

将所述相近哈希值的数量进行排序,并根据排序结果确定与所述目标文本相似的推荐文本数据集;

计算所述目标文本与所述推荐文本数据集中每个推荐文本数据之间的相似度;

将相似度满足设定阈值的推荐文本数据进行推荐;其中,n为正整数。

为了方便理解,现举例说明上述操作过程:设定所述n为10,对应的10个哈希值分别为:n1,n2……n10,经统计n1、n2、n3和n4位于映射缓存池中的1号索引映射桶,n5、n6和n7位于映射缓存池中的2号索引映射桶,n8和n9位于映射缓存池中的3号索引映射桶,n10位于映射缓存池中的4号索引映射桶,排序结果为4,3,2,1;根据该排序结果确定的与所述目标文本相似的推荐文本数据集为1号索引映射桶中与哈希值n1、n2、n3和n4对应的文本数据。

具体,可以通过计算集合a与集合b之间的相似度得到所述目标文本与所述推荐文本数据集中每个推荐文本数据之间的相似度,其中,集合a为所述目标文本的特征词元素组成的集合,集合b为每个推荐文本数据的特征词元素组成的集合。计算集合a与集合b之间的相似度可以通过哈希函数得到:

定义hmin(s)为集合s中的元素经过h(x)哈希后,具有最小哈希值的元素。那么对集合a、b,hmin(a)=hmin(b)成立的条件是a∪b中具有最小哈希值的元素也在a∩b中。这里有一个假设,h(x)是一个良好的哈希函数,它具有很好的均匀性,能够把不同元素映射成不同的整数。所以有,pr[hmin(a)=hmin(b)]=j(a,b),即集合a和b的相似度为集合a、b经过hash后最小哈希值相等的概率。因此可以根据minhash来计算两个集合的相似度。一般有两种方法:

第一种:使用多个hash函数

为了计算集合a、b具有最小哈希值的概率,我们可以选择一定数量的hash函数,比如k个。然后用这k个hash函数分别对集合a、b求哈希值,对每个集合都得到k个最小值。比如min(a)k={a1,a2,...,ak},min(b)k={b1,b2,...,bk}。那么,集合a、b的相似度为|min(a)k∩min(b)k|/|min(a)k∪min(b)k|,及min(a)k和min(b)k中相同元素个数与总的元素个数的比例。

第二种:使用单个hash函数

hmin(s)为集合s中具有最小哈希值的一个元素,定义hmink(s)为集合s中具有最小哈希值的k个元素。因此就只需要对每个集合求一次哈希,然后取最小的k个元素。计算两个集合a、b的相似度,就是集合a中最小的k个元素与集合b中最小的k个元素的交集个数与并集个数的比例。

步骤250、若所述映射缓存池中不存在与所述哈希值匹配的索引映射桶,建立与所述哈希值匹配的索引映射桶,并建立所述哈希值与所述目标文本之间的索引。

本实施例提供的一种索引建立方法,基于实施例一公开的方法建立的索引进行了相似文本推荐,可以实现较高的相似文本推荐效率以及准确率。

进一步地,在上述实施例的基础上,参见图3所示的近邻哈希分类、索引建立与相似文本查询流程示意图,如图3所示,首先对文本数据进行分词处理,得到特征词字符串,然后对特征词字符串进行哈希处理,得到对应的哈希值即文本数据的文本特征,根据该文本特征在映射缓存池中建立对应的索引,并进行相似文本推荐。通过利用文本数据特征词的哈希值建立索引,实现了索引存储量的大幅降低,并实现了将相似数据查询转化为特征最近邻搜索;由于相似文本的特征词对应的哈希值可能相同,从而解决了大批量文本数据建立索引时由于索引数量大而积压产生的时间延迟;同时方便根据不同的业务内容应用添加相应的分词集并根据对应的哈希结果改进索引分类;通过将相似文本搜索转换为相似编码搜索,大幅降低了查询时间,提高了查询效率,并可以通过不同文本之间的编码相似程度实现相似内容推荐。

实施例三

图4是本发明实施例三提供的一种索引建立装置的结构示意图,参见图4所示,所述装置包括:特征词提取模块410,排序模块420,第一运算模块430,第一建立模块440和第二建立模块450;

其中,特征词提取模块410,用于提取目标文本的特征词;排序模块420,用于对所述特征词进行排序得到特征字符串;第一运算模块430,用于对所述特征字符串应用minhash算法,得到所述目标文本对应的哈希值;第一建立模块440,用于查找映射缓存池中是否存在与所述哈希值匹配的索引映射桶,若存在,则在所述索引映射桶中建立所述哈希值与所述目标文本之间的索引;第二建立模块450,用于若所述映射缓存池中不存在与所述哈希值匹配的索引映射桶,建立与所述哈希值匹配的索引映射桶,并建立所述哈希值与所述目标文本之间的索引。

进一步地,第一建立模块440包括:

保存单元,用于若所述索引映射桶中不存在与所述哈希值相同的索引哈希值,则将所述哈希值存入所述索引映射桶中,并建立所述哈希值与所述目标文本之间的索引;

建立单元,用于若所述索引映射桶中已经存在与所述哈希值相同的索引哈希值,则不对所述哈希值进行再次保存,直接建立所述索引哈希值与所述目标文本之间的索引。

进一步地,所述装置还包括:

推荐模块,用于若所述映射缓存池中存在与所述哈希值匹配的索引映射桶,则将与所述哈希值对应的文本数据作为与所述目标文本相似的文本数据进行推荐;或者用于随机确定n个哈希函数;基于所述n个哈希函数对目标文本的特征字符串分别进行哈希运算,得到n个哈希值;统计所述n个哈希值位于映射缓存池中同一索引映射桶的相近哈希值的数量;将所述相近哈希值的数量进行排序,并根据排序结果确定与所述目标文本相似的推荐文本数据集;计算所述目标文本与所述推荐文本数据集中每个推荐文本数据之间的相似度;将相似度满足设定阈值的推荐文本数据进行推荐。

本实施例提供的一种索引建立装置,通过对目标文本的特征字符串应用minhash算法,得到对应的哈希值,由于多个相似文本对应的哈希值可能相同,因此多个相似文本可能对应同一个索引哈希值,因此,减少了索引存储量,通过将相似文本的索引建立在同一个索引映射桶中,实现了相似文本的分类,提高了相似文本的检索速度。

本发明实施例所提供的变频冰箱的控制装置可执行本发明任意实施例所提供的变频冰箱的控制方法,具备执行方法相应的功能模块和有益效果。

本领域技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1