一种文本序列数据中快速查找特征字符串的方法

文档序号:9887668阅读:307来源:国知局
一种文本序列数据中快速查找特征字符串的方法
【技术领域】
[0001] 本发明涉及一种快速查找特征字符串的方法,特别是在大量数据中连续或间断的 相似文本的查找。
【背景技术】
[0002] 现在,序列数据在现实生活中相当普遍,包括生物信息学、系统安全以及网络连接 等。同时,相似搜索也是序列数据管理中一项基本技术。现在针对符号序列和时间序列 数据,比如DNA序列、股票、网络数据报文和视频流,已经有很多有效的方法。针对文本搜 索,现阶段主要分为两类,一种是采用最小哈希的位置敏感哈希算法(Locality-Sensitive Hashing with Min-Hash后文使用缩写LSH),还有一种是基于哈希索引、后缀树和后缀树 列的相似段搜索,但在文本序列数据中都存在限制,LSH算法仅局限于查找无序的数据,查 找速度非常慢,而在实际使用当中连续数据是不能被忽视的,因为不同的顺序暗示了数据 产生的整个执行过程;而相似段搜索算法是按照子序列匹配的思想进行设计,需要子序列 匹配才能够筛选出结果,本发明的设计思路是不需要子序列完全匹配。

【发明内容】

[0003] 1、本发明的目的。
[0004] 本发明为了解决现有技术中文本序列数据相似搜索中速度过慢,数据序列需完全 匹配导致适应性不强的问题,而提出了 一种快速查找特征字符串的方法。
[0005] 2、本发明所采用的技术方案。
[0006] -种文本序列数据中快速查找特征字符串的方法,按照如下步骤进行: (1) 获取信息中的文本序列,即字符串; (2) 生成后缀数组,按照如下步骤进行: A、 选取上述文本序列S=e^"en和一组互相独立哈希函数H=〇v"hn}; B、 得到哈希函数的哈希结果序列为h (S); C、 匕⑶% (ei)…h (en),其中S的后缀矩阵为MSini= , . _是匕⑶的后缀 数组; (3) 在后缀数组中,首先通过二分查找进行数据分解,按照后缀矩阵的行数,每行进行 查找,若某个字段在二分查找的结果集中出现了指定次数之后,通过计算两个字段的相似 度,最接近的字段就认为是个候选字段。
[0007] 更进一步的具体实施例中,在所述字段上采用LSH算法,进行候选字段的筛选,其 中候选字段之间通过时间进行排序,当一个事件e被认为是筛选的文本事件后,之后的3个 事件与其之前的事件进行结合,构成一个事件文档。
[0008] 更进一步的具体实施例中,每个字段采用不同哈希方程,按照字符段划分均等的 区域,每个区域包含一个时间点,每个时间点平均分配哈希函数计算哈希值,计算后的哈希 值,如果判断签名一致,时间相似,即为查询结果。
[0009] 3、本发明的有益效果。
[0010] (1)本发明有效的利用的序列中的原有数据的优势,避免了 LSH算法仅局限于无 序的数据,导致的数据分析繁琐,速度慢的问题。
[0011] (2)本发明进行模糊查询后直接进行删选,计算相似度直接过滤候选部分,解决了 相似段搜索算法要求子序列必须完全匹配的问题。
【附图说明】
[0012] 图1是本发明的LSH-D0C算法的示意图。
[0013] 图2是本发明的LSH-SEP算法的示意图。
【具体实施方式】
[0014] 为了使专利局的审查员尤其是公众能够更加清楚地理解本发明的技术实质和有 益效果,申请人将在下面以实施例的方式作详细说明,但是对实施例的描述均不是对本发 明方案的限制,任何依据本发明构思所作出的仅仅为形式上的而非实质性的等效变换都应 视为本发明的技术方案范畴。 实施例
[0015] 定义后缀数组:给定一组文本序列,S=ei-en和一组互相独立哈希函数 H={V"hn},让匕⑶表示为哈希结果序列,以幻=11?41( 6上其中3的后缀矩阵为 . ⑶的后缀数组。其中有许多方法构成后缀素组,所以产生的后 缀矩阵可以很多。
[0016] 在后缀数组中进行搜索:分为两步骤,先从后缀矩阵中找到潜在的相似段,然后直 接通过相似度来进行筛选。
[0017] 给定一组互相独立的哈希函数和查询序列,生成后缀矩阵。然后通过二分查找进 行分解,按照后缀矩阵的行数,每行进行查找。若某个字段在二分查找的结果集中出现了指 定次数之后,这个字段就认为是个候选字段。
[0018] 如下程序序列,显示了候选字段算法的过程。h(i)表示是哈希函数集Η中的第i 个哈希函数,Qhl表示是查询序列经过h (i)处理过的哈希结果,SA i是后缀矩阵Ms,m中第i 行SAi [j]是指第i行第j个元素 。CompareAt (Qhi,,SAi [j])表示为两个参数进行二分比较, 若第一个参数打则返回1,第二个参数大返回-1,其他情况返回〇。Extract (Qhi,Sai,pos) 是用来提取候选字段的函数。经过图1的算法运算后,将会提取提取过r次的结果,也就是 上文提出的指定次数。
[0019] 再此基础上使用LSH算法,直接进行候选字段的筛选。图1、图2是LSH的两种实 现示意图。其中、结合图1,我们认为每个候选段为一个时间连接而成"文档",图1中当一 个事件e被认为是文本事件后,其之后的3个事件与其进行结合,构成一个"时间文档",如 Li+l、Li+2 等。
[0020] 结合图2,为了保存时间信息,我们分在给每个独立段领域不同的哈希方程。举例 来说,每个独立段的长度为4,而我们有40个哈希函数。那我们就分配每个时间10个函数。 然后每个哈希函数被用来索引这个段的每个领域。图2显示了一个序列S和许多段Li+1、 Li+2等。其中pi和p4是每个段的4个区域。每个区域包括一个时间。每个P]都有10个 哈希函数来计算哈希值。如果两个段的签名一致,那么每个领域的的时间也是相似的,这样 顺序就被保留。
[0021] 上述实施例不以任何方式限制本发明,凡是采用等同替换或等效变换的方式获得 的技术方案均落在本发明的保护范围内。
【主权项】
1. 一种文本序列数据中快速查找特征字符串的方法,其特征在于按照如下步骤进行: (1) 获取信息中的文本序列,即字符串; (2) 生成后缀数组,按照如下步骤进行: A、 选取上述文本序列S=ei…e。和一组互相独立哈希函数H=化; B、 得到哈希函数的哈希结果序列为(S); C、 hi(S)=hi(ei)…hi(e。),其中S的后缀矩阵为M,,m = &i,. ,社挺里,挺I是(S)的后缀数组; (3) 在后缀数组中,首先通过二分查找进行数据分解,按照后缀矩阵的行数,每行进行 查找,若某个字段在二分查找的结果集中出现了指定次数之后,通过计算两个字段的相似 度,最接近的字段就认为是个候选字段。2. 根据权利要求1所述的文本序列数据中快速查找特征字符串的方法,其特征在于: 在所述字段上采用LSH算法,进行候选字段的筛选,其中候选字段之间通过时间进行排序, 当一个事件e被认为是筛选的文本事件后,之后的3个事件与其之前的事件进行结合,构成 一个事件文档。3. 根据权利要求2所述的文本序列数据中快速查找特征字符串的方法,其特征在于: 每个字段采用不同哈希方程,按照字符段划分均等的区域,每个区域包含一个时间点,每个 时间点平均分配哈希函数计算哈希值,计算后的哈希值,如果判断签名一致,时间相似,即 为查询结果。
【专利摘要】本发明公开了一种文本序列数据中快速查找特征字符串的方法按照如下步骤进行:(1)获取信息中的文本序列,即字符串;(2)生成后缀数组;3)在后缀数组中搜索通过二分查找进行分解,按照后缀矩阵的行数,每行进行查找,若某个字段在二分查找的结果集中出现了指定次数之后,通过计算两个字段的相似度,最接近的字段就认为是个候选字段。本发明有效的利用了序列中的原有数据的优势,避免了LSH算法仅局限于无序的数据,导致数据分析繁琐,速度慢的问题。另外,本发明进行模糊查询后直接进行删选,计算相似度直接过滤候选部分,解决了相似段搜索算法要求子序列必须完全匹配的问题。
【IPC分类】G06F17/30
【公开号】CN105653567
【申请号】
【发明人】李涛, 张晟骁, 李千目, 侯君, 徐建
【申请人】南京理工大学常熟研究院有限公司
【公开日】2016年6月8日
【申请日】2014年12月4日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1