專利名稱:數(shù)據(jù)字典的生成方法、裝置和數(shù)據(jù)字典的優(yōu)化方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)壓縮方法使用的數(shù)據(jù)字典的生成方法、裝置和數(shù)據(jù)字典的優(yōu)化方法。
背景技術(shù):
在數(shù)據(jù)的傳輸過(guò)程中通常需要對(duì)待傳輸?shù)臄?shù)據(jù)進(jìn)行壓縮,以減少實(shí)際傳輸?shù)臄?shù)據(jù)量,減少網(wǎng)絡(luò)傳輸資源的占用以及減少傳輸失敗的機(jī)會(huì),提高數(shù)據(jù)傳輸?shù)男?。例如,TCP/IP協(xié)議對(duì)于每一個(gè)已經(jīng)建立的傳輸進(jìn)程中的數(shù)據(jù)包的生命周期有嚴(yán)格的限制,也就是當(dāng)傳輸?shù)倪M(jìn)程建立之后,按照TCP/IP協(xié)議的基本原理,發(fā)送端在發(fā)送一個(gè)數(shù)據(jù)包之后必須在規(guī)定的時(shí)間內(nèi)收到從接收端返回的接收成功信息才會(huì)發(fā)送第二個(gè)數(shù)據(jù)包,否則認(rèn)為上一個(gè)包發(fā)送失敗,重新發(fā)送第一個(gè)包;從接收方來(lái)看,超過(guò)一定的時(shí)間沒(méi)有收到發(fā)送方的數(shù)據(jù)包會(huì)認(rèn)為連接超時(shí),自動(dòng)斷開(kāi)連接。因此,所以數(shù)據(jù)的壓縮必須滿足在規(guī)定的時(shí)間內(nèi)將發(fā)送端的數(shù)據(jù)包處理完成,轉(zhuǎn)發(fā)給接收端,并向數(shù)據(jù)發(fā)送端反饋正確的信息,這樣才能實(shí)現(xiàn)即壓縮了數(shù)據(jù),又保證了數(shù)據(jù)傳輸進(jìn)程的連接。
在對(duì)數(shù)據(jù)的壓縮過(guò)程中,通常需要使用數(shù)據(jù)字典幫助完成數(shù)據(jù)的壓縮。所述數(shù)據(jù)字典中存儲(chǔ)有數(shù)據(jù)壓縮使用的具有高重復(fù)概率的字符串及其代碼,這些字符串及其代碼構(gòu)成了數(shù)據(jù)壓縮的樣本數(shù)據(jù),一般,只有一定的重復(fù)數(shù)據(jù)量樣本數(shù)據(jù)才能達(dá)到良好的壓縮比,數(shù)據(jù)的壓縮率就會(huì)越高,因此,快速獲得一個(gè)內(nèi)容較多且其中的樣本數(shù)據(jù)重復(fù)概率較大的數(shù)據(jù)字典成為一個(gè)數(shù)據(jù)傳輸系統(tǒng)的重要組成部分。
傳統(tǒng)的數(shù)據(jù)字典的形成是通過(guò)手工方式實(shí)現(xiàn)的,通常對(duì)某一特定領(lǐng)域的典型內(nèi)容的文件進(jìn)行分析,該文件的內(nèi)容通常是將該領(lǐng)域的有意義文件的二進(jìn)制流用一種編碼規(guī)則轉(zhuǎn)換為無(wú)意義的符合該編碼規(guī)則的字符流形成的,關(guān)于該文件的形成可以參考本申請(qǐng)人同日申請(qǐng)的另外一篇名稱為“一種待壓縮數(shù)據(jù)的預(yù)處理方法以及壓縮數(shù)據(jù)的傳輸方法”申請(qǐng)文件。對(duì)該領(lǐng)域的典型內(nèi)容的文件分析的結(jié)果,就是將找到的高重復(fù)概率的字符串及其標(biāo)識(shí)或引用標(biāo)簽存儲(chǔ)到一個(gè)數(shù)據(jù)庫(kù)中,從而形成數(shù)據(jù)字典。利用所述數(shù)據(jù)字典,就可以將一個(gè)待壓縮的數(shù)據(jù)字符串中重復(fù)概率較高的部分用所述數(shù)據(jù)字典中的引用標(biāo)簽代替,從而實(shí)現(xiàn)數(shù)據(jù)字符串的壓縮。然而,由于傳統(tǒng)的手工方法形成的數(shù)據(jù)字典很難兼顧內(nèi)容的充實(shí)和樣本字符串的高重復(fù)概率二個(gè)方面,且獲得和更新數(shù)據(jù)字典的周期較長(zhǎng),不利于針對(duì)不同的領(lǐng)域或文件的特性更新所述數(shù)據(jù)字典。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題在于,提供一種效率較高、內(nèi)容較充實(shí)的數(shù)據(jù)字典的生成方法、裝置和數(shù)據(jù)字典的優(yōu)化方法。
本發(fā)明提供的數(shù)據(jù)字典的生成方法,包括A、預(yù)置數(shù)據(jù)字典數(shù)據(jù)庫(kù)和匹配字符串,以及選擇用于數(shù)據(jù)訓(xùn)練的數(shù)據(jù)包,掃描所述數(shù)據(jù)包;B、判斷所述數(shù)據(jù)包是否掃描完畢,如果所述數(shù)據(jù)包掃描完畢,結(jié)束掃描操作,否則,從所述數(shù)據(jù)包的當(dāng)前位置起,取至少一個(gè)字符,將該字符補(bǔ)充到匹配字符串的尾部;C、查找匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中是否有記錄,如果有,將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)至少一個(gè)字符的位置,轉(zhuǎn)到步驟B繼續(xù),否則,將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)至少一個(gè)字符的位置,然后復(fù)位匹配字符串,轉(zhuǎn)到步驟B繼續(xù)。
其中,將擴(kuò)展ASCII編碼表的所有編碼字符預(yù)置到數(shù)據(jù)字典數(shù)據(jù)庫(kù)中。
其中,所述匹配字符串的初始值為空。
而且,如果匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中沒(méi)有記錄,判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)是否等于或超過(guò)設(shè)定的第一閥值,如果未超過(guò),將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),否則,結(jié)束操作。
還可以將典型的高重復(fù)概率的字符串預(yù)置到數(shù)據(jù)字典數(shù)據(jù)庫(kù)中。
本發(fā)明提供的另一種數(shù)據(jù)字典的生成方法,包括A、預(yù)置數(shù)據(jù)字典數(shù)據(jù)庫(kù)和匹配字符串,以及選擇用于數(shù)據(jù)訓(xùn)練的數(shù)據(jù)包,掃描所述數(shù)據(jù)包;B、判斷所述數(shù)據(jù)包是否掃描完畢,如果所述數(shù)據(jù)包掃描完畢,結(jié)束掃描操作,否則,從所述數(shù)據(jù)包的當(dāng)前位置起,取至少一個(gè)字符,將該字符補(bǔ)充到匹配字符串的尾部,將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)至少一個(gè)字符的位置;C、查找匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中是否有記錄,如果有,轉(zhuǎn)到步驟B繼續(xù),否則,將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),復(fù)位匹配字符串,轉(zhuǎn)到步驟B繼續(xù)。
其中,如果匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中沒(méi)有記錄,判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)是否等于或超過(guò)設(shè)定的第一閥值,如果未超過(guò),將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),否則,結(jié)束操作。
本發(fā)明提供的數(shù)據(jù)字典的生成裝置,包括數(shù)據(jù)字典數(shù)據(jù)庫(kù)、用于存儲(chǔ)訓(xùn)練使用數(shù)據(jù)包數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)和用于掃描所述數(shù)據(jù)緩沖區(qū)的掃描單元,以及,第一判斷單元,用于根據(jù)所述掃描單元提供的掃描數(shù)據(jù)判斷所述數(shù)據(jù)緩沖區(qū)是否掃描完畢,如果所述數(shù)據(jù)緩沖區(qū)掃描完畢,結(jié)束掃描操作,否則,通知所述掃描單元繼續(xù)掃描,以及,利用所述掃描單元提供的掃描數(shù)據(jù)形成新的匹配字符串;第二判斷單元,用于根據(jù)第一判斷單元提供的匹配字符串,在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中查找匹配字符串是否有記錄,如果有,通知所述掃描單元繼續(xù)掃描,否則,將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),通知所述第一判斷單元復(fù)位匹配字符串。
所述裝置還包括,設(shè)置在所述第二判斷單元和數(shù)據(jù)字典數(shù)據(jù)庫(kù)之間的第三判斷單元,用于判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)是否等于或超過(guò)設(shè)定的第一閥值,如果未超過(guò),將所述第二判斷單元提供的元匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),否則,結(jié)束操作。
本發(fā)明提供的數(shù)據(jù)字典的優(yōu)化方法,包括,A、選擇用于訓(xùn)練的數(shù)據(jù)包;B、從數(shù)據(jù)包的當(dāng)前位置起確定可能在所述數(shù)據(jù)字典中出現(xiàn)的最長(zhǎng)字符串;C、判斷在所述數(shù)據(jù)字典中是否找到所述最長(zhǎng)字符串,如果找到,將數(shù)據(jù)字典數(shù)據(jù)庫(kù)中相應(yīng)記錄的匹配成功次數(shù)計(jì)數(shù)值加1,并將所述當(dāng)前位置的值向后移動(dòng)最長(zhǎng)字符串的長(zhǎng)度,轉(zhuǎn)步驟D繼續(xù),否則,并將所述當(dāng)前位置向后移動(dòng)至少一個(gè)字符;D、判斷所述數(shù)據(jù)包是否掃描完畢,如果沒(méi)有掃描完,回到步驟B繼續(xù),否則,E、如果數(shù)據(jù)字典數(shù)據(jù)庫(kù)的記錄個(gè)數(shù)超過(guò)設(shè)定的第一閥值,刪除所述成功次數(shù)計(jì)數(shù)值小于第二閥值的記錄。
其中,在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中設(shè)置計(jì)數(shù)器字段,用于記錄該條記錄被有效匹配的次數(shù);或者在內(nèi)存中為數(shù)據(jù)字典數(shù)據(jù)庫(kù)的每條記錄分別設(shè)置計(jì)數(shù)器。
所述方法還包括,如果數(shù)據(jù)字典數(shù)據(jù)庫(kù)的記錄個(gè)數(shù)超過(guò)設(shè)定的第一閥值,刪除所述字符串長(zhǎng)度小于第三閥值的記錄。
由于本發(fā)明通過(guò)預(yù)置數(shù)據(jù)字典數(shù)據(jù)庫(kù)和選擇數(shù)據(jù)訓(xùn)練的數(shù)據(jù)包,通過(guò)數(shù)據(jù)包的掃描,動(dòng)態(tài)生成所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),可以使數(shù)據(jù)庫(kù)的生成效率較高,由于數(shù)據(jù)庫(kù)的內(nèi)容便于優(yōu)化,因此能夠快速獲得。
更進(jìn)一步,通過(guò)本發(fā)明的數(shù)據(jù)字典的優(yōu)化方法,更能使所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)提高使用的程度。
圖1是本發(fā)明所述數(shù)據(jù)字典的生成方法的第一實(shí)施例流程圖;圖2是本發(fā)明所述數(shù)據(jù)字典的生成方法的第二實(shí)施例流程圖;
圖3是本發(fā)明所述數(shù)據(jù)字典的生成裝置的第一實(shí)施例框圖;圖4是本發(fā)明所述數(shù)據(jù)字典的生成裝置的第二實(shí)施例框圖;圖5是本發(fā)明所述數(shù)據(jù)字典的優(yōu)化方法的實(shí)施例流程圖。
具體實(shí)施例方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。
參考圖1,圖1是本發(fā)明所述數(shù)據(jù)字典的生成方法的第一實(shí)施例流程圖。按照?qǐng)D1,首先在步驟11完成初始化操作,該操作包括三個(gè)子步驟,1)預(yù)置數(shù)據(jù)字典數(shù)據(jù)庫(kù),將所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)或數(shù)據(jù)表(也可以是其它數(shù)據(jù)結(jié)構(gòu))結(jié)構(gòu)建立完畢,使其能夠正常使用。該數(shù)據(jù)庫(kù)通常包括至少三個(gè)字段引用標(biāo)簽、樣本字符串、散列值或其它用于檢索所述數(shù)據(jù)庫(kù)的函數(shù)字段。2)預(yù)置匹配字符串,該字符串可以有任意的初值,初值的不同對(duì)生成的數(shù)據(jù)字典的影響略有不同,但不影響在數(shù)據(jù)壓縮階段的使用。典型的初值是“空”或“空格”等等。3)選擇或確定用于數(shù)據(jù)訓(xùn)練的數(shù)據(jù)包。通常,所述數(shù)據(jù)包具有某個(gè)特定領(lǐng)域的典型特征。
然后在步驟2開(kāi)始掃描所述數(shù)據(jù)包,所述掃描數(shù)據(jù)包實(shí)際上是確定讀取或識(shí)別所述數(shù)據(jù)包中具體字符的過(guò)程,或者確定指向具體字符的指針的過(guò)程。在首次掃描數(shù)據(jù)包時(shí),具體的掃描操作是使指針指向數(shù)據(jù)包中的第一個(gè)字符。另外,在本例中,所述數(shù)據(jù)包的掃描是將所述數(shù)據(jù)包中的字符串讀入到一個(gè)數(shù)據(jù)緩沖區(qū)中,然后再完成具體的掃描操作。每掃描一個(gè)數(shù)據(jù)包中的字符,都要繼續(xù)步驟13,判斷所述數(shù)據(jù)包是否掃描完畢,如果所述數(shù)據(jù)包掃描完畢,要在步驟15結(jié)束掃描操作,否則,就要在步驟14從所述數(shù)據(jù)包的當(dāng)前位置起,讀取一個(gè)字符,即將指針指向的字符讀出來(lái),將該字符補(bǔ)充到匹配字符串的尾部,形成新的匹配字符串。所述是否掃描完畢的判斷可以通過(guò)指針的指向是否移到所述數(shù)據(jù)包以外的單元來(lái)完成,或者通過(guò)數(shù)據(jù)包的首尾指針或首指針和數(shù)據(jù)包長(zhǎng)度來(lái)完成。很多時(shí)候,掃描是通過(guò)數(shù)據(jù)緩沖區(qū)進(jìn)行的,因此可以通過(guò)所述數(shù)據(jù)緩沖區(qū)的指針完成判斷。
在步驟16,查找并判斷匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中是否有記錄,即判斷匹配字符串的內(nèi)容與數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的相應(yīng)記錄的對(duì)應(yīng)字段,即樣本字符串字段的數(shù)據(jù)是否相同,如果任何一條記錄的樣本字符串字段中的內(nèi)容與匹配字符串的內(nèi)容相同,說(shuō)明匹配字符串的具體內(nèi)容在所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)中有記錄,不需要將其存入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),因此,在步驟17將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)一個(gè)字符的位置,即將所述指向字符串的指針后移一個(gè)字符位,完成對(duì)數(shù)據(jù)包的新的掃描操作,轉(zhuǎn)到步驟B繼續(xù)進(jìn)行后續(xù)的判斷;否則,說(shuō)明匹配字符串的具體內(nèi)容在所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)中沒(méi)有記錄,需要將所述匹配字符串的內(nèi)容存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),然后復(fù)位匹配字符串,將所述匹配字符串清空或者賦一個(gè)初值,例如“空”。最后也在步驟17將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)一個(gè)字符的位置,再轉(zhuǎn)到步驟B繼續(xù)進(jìn)行后續(xù)的判斷。
在本發(fā)明另外的實(shí)施例中,步驟17也可以設(shè)置在步驟14和步驟16之間,步驟18、19的順序也可以互換,等等,可見(jiàn),在本發(fā)明實(shí)施例的提示下,可以有多種步驟的排列方式,設(shè)置可以有多種不同步驟的組合方式,例如,在步驟16和步驟18之間設(shè)置一個(gè)將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)一個(gè)字符的位置的步驟,將所述步驟13的判斷設(shè)置步驟16以后進(jìn)行等等,這樣的實(shí)施例與圖1所示實(shí)施例本質(zhì)相同,只是效率略有不同,但是同樣可以實(shí)現(xiàn)本發(fā)明。另外,所述在步驟17,也可以將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)多個(gè)字符的位置,這樣能夠提高所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)的生成速度,但是可能影響所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)的內(nèi)容,但是這樣并不影響所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)的使用。
在本發(fā)明另外的實(shí)施例中,還可以在步驟11初始化操作的步驟中預(yù)置所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),例如將擴(kuò)展ASCII編碼表的所有編碼字符預(yù)置到數(shù)據(jù)字典數(shù)據(jù)庫(kù)中。當(dāng)然也可以將其它編碼表,例如UNICODE編碼表等預(yù)置到數(shù)據(jù)字典數(shù)據(jù)庫(kù)中,這取決于所述待壓縮數(shù)據(jù)的編碼方式,關(guān)于這部分內(nèi)容,可以參考本申請(qǐng)人在其它更早申請(qǐng)日申請(qǐng)的,名稱為“一種待發(fā)送數(shù)據(jù)的處理方法以及數(shù)據(jù)發(fā)送方法”專利申請(qǐng)文件中獲得。預(yù)置所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),可以提高數(shù)據(jù)字典的生成效率。更進(jìn)一步,可以將典型的高重復(fù)概率的字符串預(yù)置到數(shù)據(jù)字典數(shù)據(jù)庫(kù)中,更能夠提高數(shù)據(jù)字典的生成效率。
圖2是本發(fā)明所述數(shù)據(jù)字典的生成方法的第二實(shí)施例流程圖。圖2所示實(shí)施例與前面所述的任何一個(gè)實(shí)施例的區(qū)別,在于增加了避免所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)的內(nèi)容無(wú)限制增加的步驟,下面以圖1所示實(shí)施例為基礎(chǔ)的增加為例對(duì)圖2所示實(shí)施例的增加部分進(jìn)行說(shuō)明。圖2中,當(dāng)經(jīng)過(guò)步驟16得知所述匹配字符串的內(nèi)容在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中沒(méi)有記錄的判斷結(jié)論后,在步驟161判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)是否等于或超過(guò)設(shè)定的第一閥值,例如,所述第一閥值為64K,如果數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)小于所述64K,說(shuō)明其容量沒(méi)有達(dá)到設(shè)定的第一閥值規(guī)定的容量,可以將所述匹配字符串在步驟18存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),否則,說(shuō)明所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)的容量已經(jīng)達(dá)到設(shè)定的第一閥值規(guī)定的容量,不適宜再增加,因此,即使數(shù)據(jù)包沒(méi)有掃描完畢也要在步驟162結(jié)束繼續(xù)的掃描操作。否則可能降低數(shù)據(jù)壓縮階段的效率或者有其它副作用,例如,消耗的存儲(chǔ)資源或計(jì)算資源可能過(guò)多等。
與圖1所示的實(shí)施例的情況類似,所述步驟161的位置也不限于目前的定位,例如也可以設(shè)置在所述步驟16以前,等等。
圖3是本發(fā)明所述數(shù)據(jù)字典的生成裝置的第一實(shí)施例框圖,圖3所示的裝置包括用于存儲(chǔ)訓(xùn)練使用數(shù)據(jù)包數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)31,用于掃描所述數(shù)據(jù)緩沖區(qū)的掃描單元32,數(shù)據(jù)字典數(shù)據(jù)庫(kù)35,第一判斷單元33,第二判斷單元34。
其中,掃描單元32的將每次掃描得到的數(shù)據(jù),即掃描指針當(dāng)前指向的字符,被送到所述第一判斷單元33,所述第一判斷單元33用于根據(jù)所述掃描單元提供的掃描數(shù)據(jù)判斷所述數(shù)據(jù)緩沖區(qū)31中的數(shù)據(jù)是否掃描完畢,如果掃描完畢,結(jié)束掃描操作,否則,通知所述掃描單元32繼續(xù)掃描,此時(shí),第一判斷單元33還利用所述掃描單元32提供的掃描數(shù)據(jù)形成新的匹配字符串,這個(gè)匹配字符串被送到第二判斷單元34。
第二判斷單元,用于根據(jù)第一判斷單元提供的匹配字符串,在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中查找匹配字符串是否有記錄,如果有,通知所述掃描單元繼續(xù)掃描,否則,將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),并通知所述第一判斷單元復(fù)位匹配字符串。
圖4是本發(fā)明所述數(shù)據(jù)字典的生成裝置的第二實(shí)施例框圖。圖4所示實(shí)施例與圖3所示的實(shí)施例的區(qū)別,在于增加了設(shè)置在所述第二判斷單元34和數(shù)據(jù)字典數(shù)據(jù)庫(kù)35之間的第三判斷單元36,用于判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)是否等于或超過(guò)設(shè)定的第一閥值,如果未超過(guò),將所述第二判斷單提供的元匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),否則,結(jié)束操作。
鑒于圖3、4所示實(shí)施例的具體實(shí)現(xiàn)細(xì)節(jié)和具體的含義在前文已有詳述,在此不再贅述。
圖5是本發(fā)明所述數(shù)據(jù)字典的優(yōu)化方法的第一實(shí)施例流程圖。在該例子中,數(shù)據(jù)字典數(shù)據(jù)庫(kù)增加一個(gè)計(jì)數(shù)器字段。按照?qǐng)D5,首先在步驟51完成初始化操作,該操作包括三個(gè)子步驟,1)為數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的每一個(gè)記錄預(yù)置字符串匹配成功次數(shù)計(jì)數(shù)器的值,本例中初值為0(實(shí)際上也可以為其它的值);2)選擇用于訓(xùn)練的數(shù)據(jù)包,這樣的數(shù)據(jù)包可能有多個(gè),用于判斷所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)中記錄的樣本字符串在實(shí)際應(yīng)用中的重復(fù)概率。
然后在步驟52,從數(shù)據(jù)包的當(dāng)前位置起(掃描指針至指向的位置,其初始值指向緩沖區(qū)第一個(gè)字符)確定可能在所述數(shù)據(jù)字典中出現(xiàn)的最長(zhǎng)字符串;本例中,步驟52的通過(guò)數(shù)據(jù)緩沖區(qū)實(shí)現(xiàn)。如果經(jīng)過(guò)步驟52確定了最長(zhǎng)字符串,就要在步驟53判斷在所述數(shù)據(jù)字典中是否找到所述最長(zhǎng)字符串,如果找到,在步驟55將數(shù)據(jù)字典數(shù)據(jù)庫(kù)中相應(yīng)記錄的匹配成功次數(shù)計(jì)數(shù)值加1,并在步驟56將所述當(dāng)前位置的值,即掃描指針向后移動(dòng)最長(zhǎng)字符串的長(zhǎng)度,然后轉(zhuǎn)步驟57繼續(xù)操作,否則,在步驟54將所述當(dāng)前位置,即掃描指針向后移動(dòng)一個(gè)字符的長(zhǎng)度。
在步驟57,判斷所述數(shù)據(jù)包是否掃描完畢,如果沒(méi)有掃描完,可以利用該數(shù)據(jù)包的數(shù)據(jù)繼續(xù)優(yōu)化所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),因此回到步驟52繼續(xù)掃描剩余的字符串,否則,在步驟58繼續(xù)判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)的記錄個(gè)數(shù)是否等于或超過(guò)設(shè)定的第一閥值,如果等于或超過(guò),說(shuō)明數(shù)據(jù)字典數(shù)據(jù)庫(kù)的記錄太多,有很多重復(fù)概率較低的記錄,因此,在步驟59刪除所述成功次數(shù)計(jì)數(shù)值小于第二閥值的記錄,然后在步驟60結(jié)束所述優(yōu)化操作否則,說(shuō)明數(shù)據(jù)字典數(shù)據(jù)庫(kù)記錄的數(shù)量不足,不適宜進(jìn)行優(yōu)化操作,因此在步驟60結(jié)束所述優(yōu)化操作。
在所述優(yōu)化操作結(jié)束后,按照通常方式對(duì)數(shù)據(jù)庫(kù)中的記錄進(jìn)行排序整理操作。
本例中,在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中設(shè)置計(jì)數(shù)器字段,用于記錄該條記錄被有效匹配的次數(shù),實(shí)際上也可以在內(nèi)存中為數(shù)據(jù)字典數(shù)據(jù)庫(kù)的每條記錄分別設(shè)置計(jì)數(shù)器(可以利用存儲(chǔ)單元作為計(jì)數(shù)器)對(duì)所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)進(jìn)行優(yōu)化操作。
在本發(fā)明另外的實(shí)施例中,還包括補(bǔ)充增加的下述優(yōu)化操作,即在所述數(shù)據(jù)字典數(shù)據(jù)庫(kù)的記錄個(gè)數(shù)超過(guò)設(shè)定的第一閥值時(shí),刪除所述字符串長(zhǎng)度小于第三閥值的記錄。
還需要說(shuō)明,步驟52的在所述數(shù)據(jù)字典中出現(xiàn)的最長(zhǎng)字符串的確定操作可以參考本申請(qǐng)人在其它更早申請(qǐng)日申請(qǐng)的,名稱為“數(shù)據(jù)分割方法和數(shù)據(jù)分割裝置”專利申請(qǐng)文件中獲得。
鑒于5所示實(shí)施例的其它實(shí)現(xiàn)細(xì)節(jié)、各種實(shí)施方式和具體的含義在前文已有詳述,在此不再贅述。
權(quán)利要求
1.一種數(shù)據(jù)字典的生成方法,其特征在于包括A、預(yù)置數(shù)據(jù)字典數(shù)據(jù)庫(kù)和匹配字符串,以及選擇用于數(shù)據(jù)訓(xùn)練的數(shù)據(jù)包,掃描所述數(shù)據(jù)包;B、判斷所述數(shù)據(jù)包是否掃描完畢,如果所述數(shù)據(jù)包掃描完畢,結(jié)束掃描操作,否則,從所述數(shù)據(jù)包的當(dāng)前位置起,取至少一個(gè)字符,將該字符補(bǔ)充到匹配字符串的尾部;C、查找匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中是否有記錄,如果有,將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)至少一個(gè)字符的位置,轉(zhuǎn)到步驟B繼續(xù),否則,將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)至少一個(gè)字符的位置,然后復(fù)位匹配字符串,轉(zhuǎn)到步驟B繼續(xù)。
2.如權(quán)利要求1所述的數(shù)據(jù)字典的生成方法,其特征在于,將擴(kuò)展ASCII編碼表的所有編碼字符預(yù)置到數(shù)據(jù)字典數(shù)據(jù)庫(kù)中。
3.如權(quán)利要求2所述的數(shù)據(jù)字典的生成方法,其特征在于,所述匹配字符串的初始值為空。
4.如權(quán)利要求1、2或3所述的數(shù)據(jù)字典的生成方法,其特征在于,如果匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中沒(méi)有記錄,判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)是否等于或超過(guò)設(shè)定的第一閥值,如果未超過(guò),將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),否則,結(jié)束操作。
5.如權(quán)利要求4所述的數(shù)據(jù)字典的生成方法,其特征在于,將典型的高重復(fù)概率的字符串預(yù)置到數(shù)據(jù)字典數(shù)據(jù)庫(kù)中。
6.一種數(shù)據(jù)字典的生成方法,其特征在于包括A、預(yù)置數(shù)據(jù)字典數(shù)據(jù)庫(kù)和匹配字符串,以及選擇用于數(shù)據(jù)訓(xùn)練的數(shù)據(jù)包,掃描所述數(shù)據(jù)包;B、判斷所述數(shù)據(jù)包是否掃描完畢,如果所述數(shù)據(jù)包掃描完畢,結(jié)束掃描操作,否則,從所述數(shù)據(jù)包的當(dāng)前位置起,取至少一個(gè)字符,將該字符補(bǔ)充到匹配字符串的尾部,將所述數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)至少一個(gè)字符的位置;C、查找匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中是否有記錄,如果有,轉(zhuǎn)到步驟B繼續(xù),否則,將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),復(fù)位匹配字符串,轉(zhuǎn)到步驟B繼續(xù)。
7.如權(quán)利要求6所述的數(shù)據(jù)字典的生成方法,其特征在于,如果匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中沒(méi)有記錄,判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)是否等于或超過(guò)設(shè)定的第一閥值,如果未超過(guò),將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),否則,結(jié)束操作。
8.一種數(shù)據(jù)字典的生成裝置,其特征在于包括數(shù)據(jù)字典數(shù)據(jù)庫(kù)、用于存儲(chǔ)訓(xùn)練使用數(shù)據(jù)包數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)和用于掃描所述數(shù)據(jù)緩沖區(qū)的掃描單元,以及,第一判斷單元,用于根據(jù)所述掃描單元提供的掃描數(shù)據(jù)判斷所述數(shù)據(jù)緩沖區(qū)是否掃描完畢,如果所述數(shù)據(jù)緩沖區(qū)掃描完畢,結(jié)束掃描操作,否則,通知所述掃描單元繼續(xù)掃描,以及,利用所述掃描單元提供的掃描數(shù)據(jù)形成新的匹配字符串;第二判斷單元,用于根據(jù)第一判斷單元提供的匹配字符串,在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中查找匹配字符串是否有記錄,如果有,通知所述掃描單元繼續(xù)掃描,否則,將所述匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),通知所述第一判斷單元復(fù)位匹配字符串。
9.如權(quán)利要求8所述的數(shù)據(jù)字典的生成裝置,其特征在于,還包括設(shè)置在所述第二判斷單元和數(shù)據(jù)字典數(shù)據(jù)庫(kù)之間的第三判斷單元,用于判斷數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的記錄數(shù)是否等于或超過(guò)設(shè)定的第一閥值,如果未超過(guò),將所述第二判斷單提供的元匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),否則,結(jié)束操作。
10.一種數(shù)據(jù)字典的優(yōu)化方法,其特征在于包括,A、(為數(shù)據(jù)字典數(shù)據(jù)庫(kù)中的每一個(gè)記錄設(shè)置字符串匹配成功次數(shù)計(jì)數(shù)器,以及)選擇用于訓(xùn)練的數(shù)據(jù)包;B、從數(shù)據(jù)包的當(dāng)前位置起確定可能在所述數(shù)據(jù)字典中出現(xiàn)的最長(zhǎng)字符串;C、判斷在所述數(shù)據(jù)字典中是否找到所述最長(zhǎng)字符串,如果找到,將數(shù)據(jù)字典數(shù)據(jù)庫(kù)中相應(yīng)記錄的匹配成功次數(shù)計(jì)數(shù)值加1,并將所述當(dāng)前位置的值向后移動(dòng)最長(zhǎng)字符串的長(zhǎng)度,轉(zhuǎn)步驟D繼續(xù),否則,并將所述當(dāng)前位置向后移動(dòng)至少一個(gè)字符;D、判斷所述數(shù)據(jù)包是否掃描完畢,如果沒(méi)有掃描完,回到步驟B繼續(xù),否則,E、如果數(shù)據(jù)字典數(shù)據(jù)庫(kù)的記錄個(gè)數(shù)超過(guò)設(shè)定的第一閥值,刪除所述成功次數(shù)計(jì)數(shù)值小于第二閥值的記錄。
11.如權(quán)利要求10所述的數(shù)據(jù)字典的優(yōu)化方法,其特征在于,在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中設(shè)置計(jì)數(shù)器字段,用于記錄該條記錄被有效匹配的次數(shù);或者在內(nèi)存中為數(shù)據(jù)字典數(shù)據(jù)庫(kù)的每條記錄分別設(shè)置計(jì)數(shù)器。
12.如權(quán)利要求10或11所述的數(shù)據(jù)字典的優(yōu)化方法,其特征在于還包括,如果數(shù)據(jù)字典數(shù)據(jù)庫(kù)的記錄個(gè)數(shù)超過(guò)設(shè)定的第一閥值,刪除所述字符串長(zhǎng)度小于第三閥值的記錄。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)字典的生成方法,包括A.預(yù)置數(shù)據(jù)字典數(shù)據(jù)庫(kù)和匹配字符串,以及選擇用于數(shù)據(jù)訓(xùn)練的數(shù)據(jù)包,掃描所述數(shù)據(jù)包;B.判斷數(shù)據(jù)包是否掃描完畢,如果數(shù)據(jù)包掃描完畢,結(jié)束掃描操作,否則,從數(shù)據(jù)包的當(dāng)前位置起,取至少一個(gè)字符,將該字符補(bǔ)充到匹配字符串的尾部;C.查找匹配字符串在數(shù)據(jù)字典數(shù)據(jù)庫(kù)中是否有記錄,如果有,將數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)至少一個(gè)字符的位置,轉(zhuǎn)到步驟B繼續(xù),否則,將匹配字符串存儲(chǔ)入所述數(shù)據(jù)字典數(shù)據(jù)庫(kù),將數(shù)據(jù)包的當(dāng)前位置向后移動(dòng)至少一個(gè)字符的位置,然后復(fù)位匹配字符串,轉(zhuǎn)到步驟B繼續(xù)。該方法能夠動(dòng)態(tài)快速生成數(shù)據(jù)字典數(shù)據(jù)庫(kù)。本發(fā)明還公開(kāi)了一種數(shù)據(jù)字典的優(yōu)化方法。
文檔編號(hào)H03M7/30GK1928849SQ20061010962
公開(kāi)日2007年3月14日 申請(qǐng)日期2006年8月11日 優(yōu)先權(quán)日2006年8月11日
發(fā)明者白杰, 李薇, 魯征宇 申請(qǐng)人:白杰, 李薇, 魯征宇