亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種數(shù)據(jù)正則表達(dá)式的挖掘方法及裝置與流程

文檔序號(hào):12040703閱讀:188來源:國知局
一種數(shù)據(jù)正則表達(dá)式的挖掘方法及裝置與流程
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)正則表達(dá)式的挖掘方法及裝置。

背景技術(shù):
數(shù)據(jù)挖掘是指從大量的、不完全的、模糊的、有錯(cuò)誤的數(shù)據(jù)中,提取人們不知道的但又對(duì)使用人有價(jià)值的信息的過程。數(shù)據(jù)挖掘流程通常包含對(duì)數(shù)據(jù)進(jìn)行預(yù)處理、數(shù)據(jù)挖掘算法的實(shí)現(xiàn)以及對(duì)挖掘結(jié)果的展示。早期的數(shù)據(jù)挖掘流程采用單機(jī)節(jié)點(diǎn)上的串行方式來實(shí)現(xiàn),單機(jī)節(jié)點(diǎn)的數(shù)據(jù)挖掘系統(tǒng),其可挖掘的數(shù)據(jù)量及算法的負(fù)載度,依賴于單個(gè)執(zhí)行節(jié)點(diǎn)的性能。由于現(xiàn)行數(shù)據(jù)挖掘系統(tǒng)都是需要針對(duì)海量數(shù)據(jù)進(jìn)行處理,這種采用單機(jī)節(jié)點(diǎn)上的串行處理辦法僅能支持少量數(shù)據(jù),并且性能較低。后來隨著數(shù)據(jù)挖掘技術(shù)的發(fā)展,現(xiàn)行挖掘方法有采用工作流中多個(gè)并行計(jì)算的方法來解決上述單節(jié)點(diǎn)串行方式處理數(shù)據(jù)挖掘所導(dǎo)致的處理效率低下的問題。在并行處理中,當(dāng)多個(gè)并行的數(shù)據(jù)處理任務(wù)被觸發(fā)時(shí),為其中的每個(gè)數(shù)據(jù)處理任務(wù)分配執(zhí)行節(jié)點(diǎn),以使得上述多個(gè)并的數(shù)據(jù)處理任務(wù)在分配的執(zhí)行節(jié)點(diǎn)上并行執(zhí)行,在執(zhí)行節(jié)點(diǎn)上通過Map/Reduce機(jī)制將數(shù)據(jù)處理任務(wù)分配給并行執(zhí)行的Map任務(wù)進(jìn)行處理,將該數(shù)據(jù)處理任務(wù)對(duì)應(yīng)的各Map任務(wù)的結(jié)果通過相應(yīng)的Reduce任務(wù)進(jìn)行合并處理得到相應(yīng)數(shù)據(jù)處理任務(wù)的處理結(jié)果。正則表達(dá)式是指描述一種字符串匹配的模式,從而進(jìn)行文本匹配、數(shù)據(jù)解析、數(shù)據(jù)容錯(cuò)和業(yè)務(wù)分析等應(yīng)用,正則引擎主要可以分為兩大類:一種是DFA,一種是NFA。這兩種引擎都有了很久的歷史(至今二十多年),當(dāng)中也由這兩種引擎產(chǎn)生了很多變體!于是POSIX的出臺(tái)產(chǎn)生規(guī)范了不必要變體的繼續(xù)產(chǎn)生。這樣一來,主流的正則引擎又分為3類:一、DFA,二、傳統(tǒng)型NFA,三、POSIXNFA。將正則表達(dá)式進(jìn)行應(yīng)用的方法和技術(shù)很多,但是對(duì)于如何生成一種更為有效的正則表達(dá)式卻很少,例如SergeiSavchenko在《PRACTICALREGULAREXPRESSIONMININGANDITSINFORMATIONQUALITYAPPLICATIONS》一文中提出了一種基于智能有限自動(dòng)機(jī)的正則表達(dá)式挖掘方法,但是這一方法同樣存在很大的局限性,例如該方法有分布要求以及數(shù)據(jù)集大小只能在30-50之間。目前,數(shù)據(jù)處理領(lǐng)域都沒有一種能夠針對(duì)包含錯(cuò)誤數(shù)據(jù)的海量數(shù)據(jù)進(jìn)行挖掘數(shù)據(jù)本質(zhì)結(jié)構(gòu),并形成一個(gè)正則表達(dá)式的挖掘方法。

技術(shù)實(shí)現(xiàn)要素:
為此,本發(fā)明為了解決上述缺陷之一。因而,本發(fā)明提供一種數(shù)據(jù)正則表達(dá)式的挖掘方法及裝置,通過將獲取到的數(shù)據(jù)存儲(chǔ)在字典樹結(jié)構(gòu)中,這樣可以實(shí)現(xiàn)對(duì)海量數(shù)據(jù)進(jìn)行挖掘,根據(jù)預(yù)先制定的正則表達(dá)式規(guī)則表格對(duì)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行升級(jí),然后根據(jù)升級(jí)后的子節(jié)點(diǎn)個(gè)數(shù)和相同字符情況進(jìn)行分支合并,同時(shí)識(shí)別出干擾分支,并進(jìn)行分支刪除,最后將生成的規(guī)則樹轉(zhuǎn)換成字符串格式進(jìn)行輸入。本發(fā)明實(shí)現(xiàn)了對(duì)包含錯(cuò)誤數(shù)據(jù)的海量數(shù)據(jù)正則表達(dá)式的挖掘,該規(guī)則樹可以滿足對(duì)錯(cuò)誤數(shù)據(jù)的挖掘,可以用以對(duì)數(shù)據(jù)進(jìn)行檢查并找出其錯(cuò)誤數(shù)據(jù)。所以,本發(fā)明一個(gè)實(shí)施例提供一種數(shù)據(jù)正則表達(dá)式的挖掘方法,該方法包括以下步驟:獲取存儲(chǔ)數(shù)據(jù),并采用字典樹結(jié)構(gòu)存儲(chǔ);根據(jù)正則表達(dá)式規(guī)則進(jìn)行節(jié)點(diǎn)升級(jí);根據(jù)升級(jí)后節(jié)點(diǎn)的子節(jié)點(diǎn)個(gè)數(shù)和相同字符子節(jié)點(diǎn)數(shù)分別進(jìn)行分支合并;識(shí)別干擾分支,并進(jìn)行分支刪減;將規(guī)則樹轉(zhuǎn)換成字符串格式并輸出。在本發(fā)明實(shí)施例中采用字典樹結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),存儲(chǔ)的數(shù)據(jù)信息包括:節(jié)點(diǎn)字符、所有節(jié)點(diǎn)、字符重復(fù)次數(shù)、進(jìn)入節(jié)點(diǎn)的數(shù)據(jù)條數(shù)及終止節(jié)點(diǎn)的數(shù)據(jù)條數(shù)。優(yōu)選地,所述節(jié)點(diǎn)升級(jí)包括:根據(jù)正則表達(dá)式規(guī)則預(yù)先制定包含字符級(jí)別和升級(jí)關(guān)系的規(guī)則表格;根據(jù)所述規(guī)則表格進(jìn)行節(jié)點(diǎn)升級(jí)。優(yōu)選地,所述分支合并包括:縱向合并和橫向合并;所述縱向合并僅當(dāng)某個(gè)節(jié)點(diǎn)只有一個(gè)子節(jié)點(diǎn),且該子節(jié)點(diǎn)的字符等同于父節(jié)點(diǎn)時(shí)進(jìn)行;所述橫向合并當(dāng)節(jié)點(diǎn)升級(jí)后某個(gè)父節(jié)點(diǎn)包含相同字符的子節(jié)點(diǎn)時(shí)進(jìn)行。優(yōu)選地,所述識(shí)別干擾分支包括:預(yù)先設(shè)定一個(gè)閥值,閥值根據(jù)節(jié)點(diǎn)平均進(jìn)入數(shù)和系數(shù)之乘積來確定;如果某分支的進(jìn)入記錄數(shù)小于所述閥值,則判定為干擾分支。所述識(shí)別分支還包括:如果某節(jié)點(diǎn)的終止記錄數(shù)小于所述閥值,則判定為干擾點(diǎn),應(yīng)將所述節(jié)點(diǎn)的終止記錄數(shù)設(shè)置為0。本發(fā)明另一個(gè)實(shí)施例提供一種數(shù)據(jù)正則表達(dá)式的挖掘裝置,該裝置包括:數(shù)據(jù)存儲(chǔ)單元,用以采用字典樹結(jié)構(gòu)存儲(chǔ)獲取的數(shù)據(jù)信息;節(jié)點(diǎn)升級(jí)單元,用以根據(jù)正則表達(dá)式規(guī)則進(jìn)行節(jié)點(diǎn)升級(jí);分支合并單元,用以根據(jù)升級(jí)后節(jié)點(diǎn)的子節(jié)點(diǎn)個(gè)數(shù)和相同字符子節(jié)點(diǎn)數(shù)分別進(jìn)行分支合并;分支刪減單元,用以將識(shí)別出的的干擾分支刪除;規(guī)則樹輸出單元,用以將規(guī)則樹轉(zhuǎn)換成字符串格式進(jìn)行輸出。所述數(shù)據(jù)存儲(chǔ)單元包括:數(shù)據(jù)存儲(chǔ)單元存儲(chǔ)數(shù)據(jù)信息包含節(jié)點(diǎn)字符、所有節(jié)點(diǎn)、字符重復(fù)次數(shù)、進(jìn)入節(jié)點(diǎn)的數(shù)據(jù)條數(shù)及終止節(jié)點(diǎn)的數(shù)據(jù)條數(shù)。優(yōu)選地,所述節(jié)點(diǎn)升級(jí)單元包括:節(jié)點(diǎn)升級(jí)單元根據(jù)正則表達(dá)式規(guī)則預(yù)先制定包含字符級(jí)別和升級(jí)關(guān)系的規(guī)則表格,根據(jù)所述規(guī)則表格進(jìn)行節(jié)點(diǎn)升級(jí)。優(yōu)選地,所述分支合并單元包括:所述分支合并單元僅當(dāng)某個(gè)節(jié)點(diǎn)只有一個(gè)子節(jié)點(diǎn),且該子節(jié)點(diǎn)的字符等同于父節(jié)點(diǎn)時(shí)進(jìn)行縱向合并;所述分支合并單元當(dāng)節(jié)點(diǎn)升級(jí)后某個(gè)父節(jié)點(diǎn)包含相同字符的子節(jié)點(diǎn)時(shí)進(jìn)行橫向合并。本發(fā)明提供一種數(shù)據(jù)正則表達(dá)式的挖掘方法及裝置,通過將獲取到的數(shù)據(jù)存儲(chǔ)在字典樹結(jié)構(gòu)中,這樣可以實(shí)現(xiàn)對(duì)海量數(shù)據(jù)進(jìn)行挖掘,根據(jù)預(yù)先制定的正則表達(dá)式規(guī)則表格對(duì)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行升級(jí),然后根據(jù)升級(jí)后的子節(jié)點(diǎn)個(gè)數(shù)和相同字符情況進(jìn)行分支合并,同時(shí)識(shí)別出干擾分支,并進(jìn)行分支刪除,最后將生成的規(guī)則樹轉(zhuǎn)換成字符串格式進(jìn)行輸入。本發(fā)明實(shí)現(xiàn)了對(duì)包含錯(cuò)誤數(shù)據(jù)的海量數(shù)據(jù)正則表達(dá)式的挖掘,該規(guī)則樹可以滿足對(duì)錯(cuò)誤數(shù)據(jù)的挖掘,可以用以對(duì)數(shù)據(jù)進(jìn)行檢查并找出其錯(cuò)誤數(shù)據(jù)。應(yīng)當(dāng)理解,以上總體說明和以下詳細(xì)說明都是說明性和實(shí)例性的,旨在提供對(duì)所要求的本發(fā)明的進(jìn)一步說明。附圖說明圖1是本發(fā)明實(shí)施例實(shí)現(xiàn)的一種數(shù)據(jù)正則表達(dá)式的挖掘方法的流程示意圖。圖2是本發(fā)明實(shí)施例中描述了優(yōu)化初始節(jié)點(diǎn)等級(jí)的具體流程示意圖。圖3是本發(fā)明實(shí)施例中描述節(jié)點(diǎn)合并的效果示意圖。具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明提供一種數(shù)據(jù)正則表達(dá)式的挖掘方法及裝置,通過將獲取到的數(shù)據(jù)存儲(chǔ)在字典樹結(jié)構(gòu)中,這樣可以實(shí)現(xiàn)對(duì)海量數(shù)據(jù)進(jìn)行挖掘,根據(jù)預(yù)先制定的正則表達(dá)式規(guī)則表格對(duì)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行升級(jí),然后根據(jù)升級(jí)后的子節(jié)點(diǎn)個(gè)數(shù)和相同字符情況進(jìn)行分支合并,同時(shí)識(shí)別出干擾分支,并進(jìn)行分支刪除,最后將生成的規(guī)則樹轉(zhuǎn)換成字符串格式進(jìn)行輸入。本發(fā)明實(shí)現(xiàn)了對(duì)包含錯(cuò)誤數(shù)據(jù)的海量數(shù)據(jù)正則表達(dá)式的挖掘,該規(guī)則樹可以滿足對(duì)錯(cuò)誤數(shù)據(jù)的挖掘,可以用以對(duì)數(shù)據(jù)進(jìn)行檢查并找出其錯(cuò)誤數(shù)據(jù)。如圖1所示,是本發(fā)明實(shí)現(xiàn)的一種數(shù)據(jù)正則表達(dá)式的挖掘方法的流程示意圖,具體包括以下詳細(xì)步驟:步驟S110:獲取存儲(chǔ)數(shù)據(jù),并采用字典樹結(jié)構(gòu)存儲(chǔ)。首先,逐條掃描所有數(shù)據(jù),并依次插入到字典樹中,字典樹中的每個(gè)節(jié)點(diǎn),保存的數(shù)據(jù)除了屬于該節(jié)點(diǎn)的字符、所有子節(jié)點(diǎn)外,還將保存該字符重復(fù)次數(shù)、有多少條數(shù)據(jù)進(jìn)入該節(jié)點(diǎn)、有多少條數(shù)據(jù)終止該節(jié)點(diǎn)。如需要存儲(chǔ)以下一組數(shù)據(jù):151;122;133;13;16c;134;123;133;151;162。那么,這些數(shù)據(jù)保存到字典樹后的結(jié)果如圖2所示,其中:root節(jié)點(diǎn)為根節(jié)點(diǎn),其它節(jié)點(diǎn)各數(shù)據(jù)的含義為:冒號(hào)前的字符為該節(jié)點(diǎn)代表的字符以及該字符重復(fù)次數(shù)(大括號(hào)內(nèi)數(shù)字),冒號(hào)后的兩個(gè)數(shù)字分別表示進(jìn)入該節(jié)點(diǎn)的數(shù)據(jù)條數(shù)(進(jìn)入記錄數(shù))和終止該節(jié)點(diǎn)的數(shù)據(jù)條數(shù)(終止記錄數(shù))。其中大括號(hào)內(nèi)重復(fù)次數(shù)也可有2個(gè)數(shù)字,則其含義分別為該字符重復(fù)次數(shù)下限和上限,如2{1,3}表示字符‘2’重復(fù)了1至3次,即該節(jié)點(diǎn)可匹配“2”、“22”、“222”三種情況。當(dāng)上下限相等時(shí),則可簡(jiǎn)寫成一個(gè)數(shù)字,如2{5,5}可簡(jiǎn)寫成2{5},表示其匹配“22222”。此字典樹也即我們的規(guī)則樹,我們將對(duì)其進(jìn)行字符升級(jí)、分支合并、分支刪減等一系列操作,最后濃縮成一棵很小的字典樹,并產(chǎn)生我們最后的正則表達(dá)式。步驟S120:根據(jù)正則表達(dá)式規(guī)則進(jìn)行節(jié)點(diǎn)升級(jí)。經(jīng)過步驟S110后,數(shù)據(jù)存儲(chǔ)在字典樹結(jié)構(gòu)中,數(shù)據(jù)節(jié)點(diǎn)中保存了初始的字符,如‘1’,‘2’,‘5’,‘c’等,在這樣的情形下會(huì)導(dǎo)致字典樹結(jié)構(gòu)中很多節(jié)點(diǎn)的子節(jié)點(diǎn)數(shù)量太多,即分支太多,為了縮減分支數(shù),本步驟需要提煉多分支數(shù)據(jù)的共同特征,并剔除干擾分支,結(jié)合正則表達(dá)式通用格式,我們制定了一些特殊字符、它們對(duì)應(yīng)的級(jí)別以及各字符對(duì)應(yīng)的規(guī)則表格,該規(guī)則表格如下表1所示:表1:正則表達(dá)式規(guī)則表格。首先,本發(fā)明實(shí)施例中先定義初始字符的級(jí)別都為0,根節(jié)點(diǎn)是虛擬節(jié)點(diǎn),不需要輸出規(guī)則,也不需要升級(jí)。節(jié)點(diǎn)需要升級(jí)的情況為下述幾種:第一、父節(jié)點(diǎn)需要升級(jí)則所有子節(jié)點(diǎn)也需要升級(jí);第二、父節(jié)點(diǎn)包含的子節(jié)點(diǎn)數(shù)大于某一個(gè)給定值(如為3)則子節(jié)點(diǎn)需要升級(jí);第三、滿足第二條時(shí)如果某子節(jié)點(diǎn)數(shù)據(jù)進(jìn)入條數(shù)大于某一個(gè)閾值時(shí),則該子節(jié)點(diǎn)不升級(jí)。此處的閾值可設(shè)定為父節(jié)點(diǎn)數(shù)據(jù)條數(shù)的50%,即認(rèn)為數(shù)據(jù)占絕對(duì)多數(shù)的子節(jié)點(diǎn)應(yīng)保持原樣。步驟S130:根據(jù)升級(jí)后節(jié)點(diǎn)的子節(jié)點(diǎn)個(gè)數(shù)和相同字符子節(jié)點(diǎn)數(shù)分別進(jìn)行分支合并。所述分支合并包括縱向合并和橫向合并??v向合并僅當(dāng)某個(gè)節(jié)點(diǎn)只有一個(gè)子節(jié)點(diǎn),且該子節(jié)點(diǎn)的字符等同于父節(jié)點(diǎn)時(shí)進(jìn)行;橫向合并當(dāng)節(jié)點(diǎn)升級(jí)后某個(gè)父節(jié)點(diǎn)包含相同字符的子節(jié)點(diǎn)時(shí)進(jìn)行,具體如下??v向合并:當(dāng)某個(gè)節(jié)點(diǎn)只包含一個(gè)子節(jié)點(diǎn),且該子節(jié)點(diǎn)的字符等同于父節(jié)點(diǎn)時(shí),可將子節(jié)點(diǎn)向父節(jié)點(diǎn)合并,合并后節(jié)點(diǎn)的進(jìn)入記錄數(shù)等于父節(jié)點(diǎn)進(jìn)入記錄數(shù),合并節(jié)點(diǎn)的終止記錄數(shù)等于父、子節(jié)點(diǎn)終止記錄數(shù)之和。假設(shè)父節(jié)點(diǎn)字符重復(fù)次數(shù)上下限分別為n1,m1,子節(jié)點(diǎn)重復(fù)次數(shù)上下限分別為n2,m2,合并后節(jié)點(diǎn)的字符重復(fù)次數(shù)上下限分別為n3,m3,其計(jì)算方式為:如果父節(jié)點(diǎn)終止記錄數(shù)為0,則:n3=n1+n2;m3=m1+m2;如果父節(jié)點(diǎn)終止記錄數(shù)不為0,則:n3=n1;m3=m1+m2。橫向合并:當(dāng)某個(gè)節(jié)點(diǎn)有升級(jí)時(shí),因?yàn)閮蓚€(gè)小級(jí)別字符升級(jí)后的字符可能相同,如‘1’,‘2’升級(jí)字符都為‘\d’,會(huì)導(dǎo)致父節(jié)點(diǎn)包含相同字符的子節(jié)點(diǎn),此時(shí)需要將相同字符的節(jié)點(diǎn)數(shù)據(jù)進(jìn)行合并。假設(shè)待合并的節(jié)點(diǎn)1字符重復(fù)次數(shù)上下限分別為n1,m1,節(jié)點(diǎn)2重復(fù)次數(shù)上下限分別為n2,m2,合并后節(jié)點(diǎn)的字符重復(fù)次數(shù)上下限分別為n3,m3,其計(jì)算方式為:如果父節(jié)點(diǎn)終止記錄數(shù)為0,則:n3=min(n1,n2);m3=max(m1,m2);合并節(jié)點(diǎn)的進(jìn)入記錄數(shù)等于兩個(gè)待合并節(jié)點(diǎn)的進(jìn)入記錄數(shù)之和,合并節(jié)點(diǎn)的終止記錄數(shù)等于兩個(gè)節(jié)點(diǎn)的終止記錄數(shù)之和。如果節(jié)點(diǎn)1和節(jié)點(diǎn)2都沒有子節(jié)點(diǎn),則合并后的節(jié)點(diǎn)也沒有子節(jié)點(diǎn);如果節(jié)點(diǎn)1和節(jié)點(diǎn)2只有一個(gè)有子節(jié)點(diǎn),假設(shè)節(jié)點(diǎn)1有子節(jié)點(diǎn),則合并后的節(jié)點(diǎn)的子節(jié)點(diǎn)等同于節(jié)點(diǎn)1的子節(jié)點(diǎn);否則需要采用的遞歸方式合并2個(gè)節(jié)點(diǎn)的相同子節(jié)點(diǎn),其合并方法為本步驟描述的方法。由于根節(jié)點(diǎn)下只有一個(gè)子節(jié)點(diǎn)“1{1}:10,0”,且父節(jié)點(diǎn)不需要升級(jí),所有該節(jié)點(diǎn)保持原樣。節(jié)點(diǎn)“1{1}:10,0”下有4個(gè)子節(jié)點(diǎn),超出節(jié)點(diǎn)最大分支數(shù)(3),且每個(gè)節(jié)點(diǎn)進(jìn)入記錄數(shù)都沒有達(dá)到絕對(duì)多數(shù),所有都需要升級(jí),同時(shí)需將4個(gè)子節(jié)點(diǎn)的所有子節(jié)點(diǎn)都升級(jí),并合并,其合并結(jié)果如圖3所示。另外,對(duì)節(jié)點(diǎn)“\d{1}:10,1”進(jìn)行剪枝操作:該節(jié)點(diǎn)總記錄數(shù)為10,分支數(shù)為3(2個(gè)子節(jié)點(diǎn),另由于該節(jié)點(diǎn)終止記錄數(shù)不為0,需加一個(gè)終止節(jié)點(diǎn)),子節(jié)點(diǎn)進(jìn)入記錄數(shù)閾值系數(shù)為0.5,則子節(jié)點(diǎn)進(jìn)入記錄數(shù)閾值為:10/3*0.5=1.67。由于節(jié)點(diǎn)“\c{1}:1,1”的進(jìn)入記錄數(shù)小于該閾值,故將其剪去,而節(jié)點(diǎn)“\d{1}:10,1”自身的終止記錄數(shù)(1)也小于該閾值,故需要將其置于0。步驟S140:識(shí)別干擾分支,并進(jìn)行分支刪減。由于源數(shù)據(jù)是臟數(shù)據(jù),因此源數(shù)據(jù)存儲(chǔ)到規(guī)則數(shù)后會(huì)存在干擾分支,我們必須識(shí)別出干擾分支并其從規(guī)則數(shù)中刪除。假設(shè)節(jié)點(diǎn)X進(jìn)入記錄數(shù)為r0,終止記錄數(shù)為z0,有k個(gè)子節(jié)點(diǎn),其進(jìn)入記錄數(shù)分別為ri(i=1,2,…k)。如果z0=0,我們認(rèn)為節(jié)點(diǎn)X的分支數(shù)f=k,否則分支數(shù)f=k+1;分支的平均進(jìn)入記錄數(shù)r=r0/f;給定一個(gè)系數(shù)a(如0.5),則判定某分支為干擾分支的方法為:如果ri<r*a,則分支i是干擾分支,并將其及其所有子節(jié)點(diǎn)刪除。如果z0<r*a,則也認(rèn)為其是個(gè)干擾點(diǎn),需要將節(jié)點(diǎn)X的終止記錄數(shù)設(shè)置為0。步驟S150:將規(guī)則樹轉(zhuǎn)換成字符串格式并輸出。規(guī)則樹經(jīng)過一系列節(jié)點(diǎn)升級(jí)、分支合并、刪減等操作后,最終就可得到需要的正則表達(dá)式,但它是以字典樹的形式給出的,需要轉(zhuǎn)化成字符串格式,生成方法如下,假設(shè)當(dāng)前規(guī)則樹之前節(jié)點(diǎn)已生成規(guī)則pr。1.如果當(dāng)前節(jié)點(diǎn)只有一個(gè)子節(jié)點(diǎn),則子節(jié)點(diǎn)信息按順序直接添加到輸出結(jié)果中,則直接輸出1\d{1,5}。2.如果當(dāng)前節(jié)點(diǎn)有n個(gè)子節(jié)點(diǎn)(n>1),則對(duì)每個(gè)子節(jié)點(diǎn)i遞歸使用規(guī)則生成方法產(chǎn)生子規(guī)則sri,然后子規(guī)則間取或的關(guān)系合并得最終結(jié)果pr(sr1|sr2|…srn),如例1中的數(shù)據(jù)輸出結(jié)果為:1(\d{1,5}|c{3}\d{3})。3.如果當(dāng)前節(jié)點(diǎn)的終止記錄數(shù)不為0,則子節(jié)點(diǎn)遞歸生成子規(guī)則sr,最后合并方式為“pr(sr)”。本步驟部分偽代碼如下:StringgenerateRule(RuleNodenode,Stringprefix){prefix+=genOneNodeRule(node);//增加當(dāng)前節(jié)點(diǎn)信息到規(guī)則中if(node.getChildNum()==0){//到樹末端,則返回已生成的規(guī)則returnprefix;}elseif(node.getChildNum()==1){//只有一個(gè)子節(jié)點(diǎn)時(shí),順序生成規(guī)則RuleNodechild=node.getChild(0);StringchildRule=generateRule(child,"");if(node.getEndNum()>0){//節(jié)點(diǎn)終止記錄數(shù)不為0時(shí),子規(guī)則后需要添加文號(hào)returnprefix+"("+childRule+")}else{returnprefix+childRule;}}else{//有多個(gè)子節(jié)點(diǎn)時(shí),每個(gè)子節(jié)點(diǎn)遞歸生成子規(guī)則,然后子規(guī)則間用或的關(guān)系合并prefix+="(";booleanbFirst=true;foreachRuleNodechild(node.getChilds()){if(bFirst){bFirst=false;prefix+=generateRule(child,"");}else{prefix+="|";prefix+=generateRule(child,"");}}prefix+=")";if(node.getEndNum()>0){//節(jié)點(diǎn)終止記錄數(shù)不為0時(shí),子規(guī)則后需要添加文號(hào)。再進(jìn)行一輪升級(jí)、合并操作,發(fā)現(xiàn)沒有節(jié)點(diǎn)需要升級(jí)、合并,故終止對(duì)規(guī)則樹的修改操作。將規(guī)則樹結(jié)果輸出得正則表達(dá)式規(guī)則:“1\d{2}”。另外,本發(fā)明提供另一個(gè)實(shí)施例為一種數(shù)據(jù)正則表達(dá)式的挖掘裝置。數(shù)據(jù)存儲(chǔ)單元采用字典樹結(jié)構(gòu)存儲(chǔ)如下一組數(shù)據(jù):151;122;133;13;16c;134;123;133;151;162。數(shù)據(jù)存儲(chǔ)單元存儲(chǔ)上述數(shù)據(jù)保存到字典樹后的結(jié)果如圖2所示,保存的數(shù)據(jù)除了屬于該節(jié)點(diǎn)的字符、所有子節(jié)點(diǎn)外,還將保存該字符重復(fù)次數(shù)、有多少條數(shù)據(jù)進(jìn)入該節(jié)點(diǎn)、有多少條數(shù)據(jù)終止該節(jié)點(diǎn)。節(jié)點(diǎn)升級(jí)單元根據(jù)正則表達(dá)式規(guī)則進(jìn)行節(jié)點(diǎn)升級(jí),節(jié)點(diǎn)需要升級(jí)的情況為下述幾種:父節(jié)點(diǎn)需要升級(jí)則所有子節(jié)點(diǎn)也需要升級(jí);父節(jié)點(diǎn)包含的子節(jié)點(diǎn)數(shù)大于某一個(gè)給定值(如為3)則子節(jié)點(diǎn)需要升級(jí);滿足第二條時(shí)如果某子節(jié)點(diǎn)數(shù)據(jù)進(jìn)入條數(shù)大于某一個(gè)閾值時(shí),則該子節(jié)點(diǎn)不升級(jí)。此處的閾值可設(shè)定為父節(jié)點(diǎn)數(shù)據(jù)條數(shù)的50%,即認(rèn)為數(shù)據(jù)占絕對(duì)多數(shù)的子節(jié)點(diǎn)應(yīng)保持原樣。分支合并單元包括縱向合并和橫向合并兩種方式,縱向合并僅當(dāng)某個(gè)節(jié)點(diǎn)只有一個(gè)子節(jié)點(diǎn),且該子節(jié)點(diǎn)的字符等同于父節(jié)點(diǎn)時(shí)進(jìn)行;橫向合并當(dāng)節(jié)點(diǎn)升級(jí)后某個(gè)父節(jié)點(diǎn)包含相同字符的子節(jié)點(diǎn)時(shí)進(jìn)行。由于根節(jié)點(diǎn)下只有一個(gè)子節(jié)點(diǎn)“1{1}:10,0”,且父節(jié)點(diǎn)不需要升級(jí),所有該節(jié)點(diǎn)保持原樣。節(jié)點(diǎn)“1{1}:10,0”下有4個(gè)子節(jié)點(diǎn),超出節(jié)點(diǎn)最大分支數(shù)(3),且每個(gè)節(jié)點(diǎn)進(jìn)入記錄數(shù)都沒有達(dá)到絕對(duì)多數(shù),所有都需要升級(jí),同時(shí)需將4個(gè)子節(jié)點(diǎn)的所有子節(jié)點(diǎn)都升級(jí),并合并,其合并結(jié)果如圖3所示。在分支刪減單元中,假設(shè)節(jié)點(diǎn)X進(jìn)入記錄數(shù)為r0,終止記錄數(shù)為z0,有k個(gè)子節(jié)點(diǎn),其進(jìn)入記錄數(shù)分別為ri(i=1,2,…k)。如果z0=0,我們認(rèn)為節(jié)點(diǎn)X的分支數(shù)f=k,否則分支數(shù)f=k+1;分支的平均進(jìn)入記錄數(shù)r=r0/f;給定一個(gè)系數(shù)a(如0.5),則判定某分支為干擾分支的方法為:如果ri<r*a,則分支i是干擾分支,并將其及其所有子節(jié)點(diǎn)刪除。如果z0<r*a,則也認(rèn)為其是個(gè)干擾點(diǎn),需要將節(jié)點(diǎn)X的終止記錄數(shù)設(shè)置為0。規(guī)則樹輸出單元最終將規(guī)則樹結(jié)果輸出得正則表達(dá)式規(guī)則:“1\d{2}”。本發(fā)明提供一種數(shù)據(jù)正則表達(dá)式的挖掘方法及裝置,通過將獲取到的數(shù)據(jù)存儲(chǔ)在字典樹結(jié)構(gòu)中,這樣可以實(shí)現(xiàn)對(duì)海量數(shù)據(jù)進(jìn)行挖掘,根據(jù)預(yù)先制定的正則表達(dá)式規(guī)則表格對(duì)數(shù)據(jù)節(jié)點(diǎn)進(jìn)行升級(jí),然后根據(jù)升級(jí)后的子節(jié)點(diǎn)個(gè)數(shù)和相同字符情況進(jìn)行分支合并,同時(shí)識(shí)別出干擾分支,并進(jìn)行分支刪除,最后將生成的規(guī)則樹轉(zhuǎn)換成字符串格式進(jìn)行輸入。本發(fā)明實(shí)現(xiàn)了對(duì)包含錯(cuò)誤數(shù)據(jù)的海量數(shù)據(jù)正則表達(dá)式的挖掘,該規(guī)則樹可以滿足對(duì)錯(cuò)誤數(shù)據(jù)的挖掘,可以用以對(duì)數(shù)據(jù)進(jìn)行檢查并找出其錯(cuò)誤數(shù)據(jù)。
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1