一種文本序列數(shù)據(jù)中快速查找特征字符串的方法
【技術領域】
[0001] 本發(fā)明涉及一種快速查找特征字符串的方法,特別是在大量數(shù)據(jù)中連續(xù)或間斷的 相似文本的查找。
【背景技術】
[0002] 現(xiàn)在,序列數(shù)據(jù)在現(xiàn)實生活中相當普遍,包括生物信息學、系統(tǒng)安全以及網(wǎng)絡連接 等。同時,相似搜索也是序列數(shù)據(jù)管理中一項基本技術?,F(xiàn)在針對符號序列和時間序列 數(shù)據(jù),比如DNA序列、股票、網(wǎng)絡數(shù)據(jù)報文和視頻流,已經有很多有效的方法。針對文本搜 索,現(xiàn)階段主要分為兩類,一種是采用最小哈希的位置敏感哈希算法(Locality-Sensitive Hashing with Min-Hash后文使用縮寫LSH),還有一種是基于哈希索引、后綴樹和后綴樹 列的相似段搜索,但在文本序列數(shù)據(jù)中都存在限制,LSH算法僅局限于查找無序的數(shù)據(jù),查 找速度非常慢,而在實際使用當中連續(xù)數(shù)據(jù)是不能被忽視的,因為不同的順序暗示了數(shù)據(jù) 產生的整個執(zhí)行過程;而相似段搜索算法是按照子序列匹配的思想進行設計,需要子序列 匹配才能夠篩選出結果,本發(fā)明的設計思路是不需要子序列完全匹配。
【發(fā)明內容】
[0003] 1、本發(fā)明的目的。
[0004] 本發(fā)明為了解決現(xiàn)有技術中文本序列數(shù)據(jù)相似搜索中速度過慢,數(shù)據(jù)序列需完全 匹配導致適應性不強的問題,而提出了 一種快速查找特征字符串的方法。
[0005] 2、本發(fā)明所采用的技術方案。
[0006] -種文本序列數(shù)據(jù)中快速查找特征字符串的方法,按照如下步驟進行: (1) 獲取信息中的文本序列,即字符串; (2) 生成后綴數(shù)組,按照如下步驟進行: A、 選取上述文本序列S=e^"en和一組互相獨立哈希函數(shù)H=〇v"hn}; B、 得到哈希函數(shù)的哈希結果序列為h (S); C、 匕⑶% (ei)…h(huán) (en),其中S的后綴矩陣為MSini= , . _是匕⑶的后綴 數(shù)組; (3) 在后綴數(shù)組中,首先通過二分查找進行數(shù)據(jù)分解,按照后綴矩陣的行數(shù),每行進行 查找,若某個字段在二分查找的結果集中出現(xiàn)了指定次數(shù)之后,通過計算兩個字段的相似 度,最接近的字段就認為是個候選字段。
[0007] 更進一步的具體實施例中,在所述字段上采用LSH算法,進行候選字段的篩選,其 中候選字段之間通過時間進行排序,當一個事件e被認為是篩選的文本事件后,之后的3個 事件與其之前的事件進行結合,構成一個事件文檔。
[0008] 更進一步的具體實施例中,每個字段采用不同哈希方程,按照字符段劃分均等的 區(qū)域,每個區(qū)域包含一個時間點,每個時間點平均分配哈希函數(shù)計算哈希值,計算后的哈希 值,如果判斷簽名一致,時間相似,即為查詢結果。
[0009] 3、本發(fā)明的有益效果。
[0010] (1)本發(fā)明有效的利用的序列中的原有數(shù)據(jù)的優(yōu)勢,避免了 LSH算法僅局限于無 序的數(shù)據(jù),導致的數(shù)據(jù)分析繁瑣,速度慢的問題。
[0011] (2)本發(fā)明進行模糊查詢后直接進行刪選,計算相似度直接過濾候選部分,解決了 相似段搜索算法要求子序列必須完全匹配的問題。
【附圖說明】
[0012] 圖1是本發(fā)明的LSH-D0C算法的示意圖。
[0013] 圖2是本發(fā)明的LSH-SEP算法的示意圖。
【具體實施方式】
[0014] 為了使專利局的審查員尤其是公眾能夠更加清楚地理解本發(fā)明的技術實質和有 益效果,申請人將在下面以實施例的方式作詳細說明,但是對實施例的描述均不是對本發(fā) 明方案的限制,任何依據(jù)本發(fā)明構思所作出的僅僅為形式上的而非實質性的等效變換都應 視為本發(fā)明的技術方案范疇。 實施例
[0015] 定義后綴數(shù)組:給定一組文本序列,S=ei-en和一組互相獨立哈希函數(shù) H={V"hn},讓匕⑶表示為哈希結果序列,以幻=11?41( 6上其中3的后綴矩陣為 . ⑶的后綴數(shù)組。其中有許多方法構成后綴素組,所以產生的后 綴矩陣可以很多。
[0016] 在后綴數(shù)組中進行搜索:分為兩步驟,先從后綴矩陣中找到潛在的相似段,然后直 接通過相似度來進行篩選。
[0017] 給定一組互相獨立的哈希函數(shù)和查詢序列,生成后綴矩陣。然后通過二分查找進 行分解,按照后綴矩陣的行數(shù),每行進行查找。若某個字段在二分查找的結果集中出現(xiàn)了指 定次數(shù)之后,這個字段就認為是個候選字段。
[0018] 如下程序序列,顯示了候選字段算法的過程。h(i)表示是哈希函數(shù)集Η中的第i 個哈希函數(shù),Qhl表示是查詢序列經過h (i)處理過的哈希結果,SA i是后綴矩陣Ms,m中第i 行SAi [j]是指第i行第j個元素 。CompareAt (Qhi,,SAi [j])表示為兩個參數(shù)進行二分比較, 若第一個參數(shù)打則返回1,第二個參數(shù)大返回-1,其他情況返回〇。Extract (Qhi,Sai,pos) 是用來提取候選字段的函數(shù)。經過圖1的算法運算后,將會提取提取過r次的結果,也就是 上文提出的指定次數(shù)。
[0019] 再此基礎上使用LSH算法,直接進行候選字段的篩選。圖1、圖2是LSH的兩種實 現(xiàn)示意圖。其中、結合圖1,我們認為每個候選段為一個時間連接而成"文檔",圖1中當一 個事件e被認為是文本事件后,其之后的3個事件與其進行結合,構成一個"時間文檔",如 Li+l、Li+2 等。
[0020] 結合圖2,為了保存時間信息,我們分在給每個獨立段領域不同的哈希方程。舉例 來說,每個獨立段的長度為4,而我們有40個哈希函數(shù)。那我們就分配每個時間10個函數(shù)。 然后每個哈希函數(shù)被用來索引這個段的每個領域。圖2顯示了一個序列S和許多段Li+1、 Li+2等。其中pi和p4是每個段的4個區(qū)域。每個區(qū)域包括一個時間。每個P]都有10個 哈希函數(shù)來計算哈希值。如果兩個段的簽名一致,那么每個領域的的時間也是相似的,這樣 順序就被保留。
[0021] 上述實施例不以任何方式限制本發(fā)明,凡是采用等同替換或等效變換的方式獲得 的技術方案均落在本發(fā)明的保護范圍內。
【主權項】
1. 一種文本序列數(shù)據(jù)中快速查找特征字符串的方法,其特征在于按照如下步驟進行: (1) 獲取信息中的文本序列,即字符串; (2) 生成后綴數(shù)組,按照如下步驟進行: A、 選取上述文本序列S=ei…e。和一組互相獨立哈希函數(shù)H=化; B、 得到哈希函數(shù)的哈希結果序列為(S); C、 hi(S)=hi(ei)…h(huán)i(e。),其中S的后綴矩陣為M,,m = &i,. ,社挺里,挺I是(S)的后綴數(shù)組; (3) 在后綴數(shù)組中,首先通過二分查找進行數(shù)據(jù)分解,按照后綴矩陣的行數(shù),每行進行 查找,若某個字段在二分查找的結果集中出現(xiàn)了指定次數(shù)之后,通過計算兩個字段的相似 度,最接近的字段就認為是個候選字段。2. 根據(jù)權利要求1所述的文本序列數(shù)據(jù)中快速查找特征字符串的方法,其特征在于: 在所述字段上采用LSH算法,進行候選字段的篩選,其中候選字段之間通過時間進行排序, 當一個事件e被認為是篩選的文本事件后,之后的3個事件與其之前的事件進行結合,構成 一個事件文檔。3. 根據(jù)權利要求2所述的文本序列數(shù)據(jù)中快速查找特征字符串的方法,其特征在于: 每個字段采用不同哈希方程,按照字符段劃分均等的區(qū)域,每個區(qū)域包含一個時間點,每個 時間點平均分配哈希函數(shù)計算哈希值,計算后的哈希值,如果判斷簽名一致,時間相似,即 為查詢結果。
【專利摘要】本發(fā)明公開了一種文本序列數(shù)據(jù)中快速查找特征字符串的方法按照如下步驟進行:(1)獲取信息中的文本序列,即字符串;(2)生成后綴數(shù)組;3)在后綴數(shù)組中搜索通過二分查找進行分解,按照后綴矩陣的行數(shù),每行進行查找,若某個字段在二分查找的結果集中出現(xiàn)了指定次數(shù)之后,通過計算兩個字段的相似度,最接近的字段就認為是個候選字段。本發(fā)明有效的利用了序列中的原有數(shù)據(jù)的優(yōu)勢,避免了LSH算法僅局限于無序的數(shù)據(jù),導致數(shù)據(jù)分析繁瑣,速度慢的問題。另外,本發(fā)明進行模糊查詢后直接進行刪選,計算相似度直接過濾候選部分,解決了相似段搜索算法要求子序列必須完全匹配的問題。
【IPC分類】G06F17/30
【公開號】CN105653567
【申請?zhí)枴?br>【發(fā)明人】李濤, 張晟驍, 李千目, 侯君, 徐建
【申請人】南京理工大學常熟研究院有限公司
【公開日】2016年6月8日
【申請日】2014年12月4日