專(zhuān)利名稱(chēng)::一種對(duì)詞庫(kù)壓縮編碼及解碼的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及壓縮編碼技術(shù),特別是涉及一種對(duì)詞庫(kù)壓縮編碼及解碼的方法和系統(tǒng)。
背景技術(shù):
:傳統(tǒng)的對(duì)詞庫(kù)的壓縮編碼大多采用的是哈夫曼編碼,哈夫曼編碼根據(jù)單詞中字母的出現(xiàn)次數(shù)的高低構(gòu)造哈夫曼樹(shù),出現(xiàn)次數(shù)越高的字母分配的二進(jìn)制碼碼長(zhǎng)越短,從而使得詞庫(kù)中全體.單詞的平均碼長(zhǎng)盡可能短,但是這樣對(duì)單詞進(jìn)行哈夫曼編碼的壓縮率還不夠,根據(jù)統(tǒng)計(jì)數(shù)據(jù)顯示,采用哈夫曼編碼對(duì)英文詞庫(kù)的壓縮率是48.84%,對(duì)俄文詞庫(kù)的壓縮率是48.64%,對(duì)土耳其文詞庫(kù)的壓縮率是51.68%,對(duì)阿拉伯文詞庫(kù)的壓縮率是56.50%,對(duì)葡萄牙文詞庫(kù)的壓縮率是46.45%,可見(jiàn)對(duì)于各種語(yǔ)言詞庫(kù)的壓縮率還有可以提高的空間;而采用其他的Lzw壓縮算法運(yùn)算量又太大,我們需要一種解碼簡(jiǎn)單,壓縮率更高的詞庫(kù)壓縮方法。哈夫曼編碼的特點(diǎn)是各個(gè)編碼間的頻率差越大,即重碼率越大,其壓縮率就越高,利用哈夫曼編碼的這個(gè)特點(diǎn),提高哈夫曼編碼壓縮率的關(guān)鍵是提高編碼的重碼率。
發(fā)明內(nèi)容基于現(xiàn)有技術(shù)中的不足,本發(fā)明需要解決的問(wèn)題之一是提供一種對(duì)詞庫(kù)壓縮編碼的方法,能夠提高詞庫(kù)中單詞編碼的重碼率,從而提高對(duì)詞庫(kù)中單詞進(jìn)行哈夫曼編碼的壓縮率。7本發(fā)明需要解決的問(wèn)題之二是提供一種對(duì)詞庫(kù)壓縮編碼的系統(tǒng),能夠提高詞庫(kù)中單詞編碼的重碼率,從而提高對(duì)詞庫(kù)中單詞進(jìn)刊-P會(huì)夫曼編碼的壓縮率。本發(fā)明需要解決的問(wèn)題之三是提供一種對(duì)詞庫(kù)編碼進(jìn)行解碼的方法,能夠快速簡(jiǎn)單地對(duì)編碼后的單詞進(jìn)行解碼。本發(fā)明需要解決的問(wèn)題之四是提供一種對(duì)詞庫(kù)編碼進(jìn)行解碼的系統(tǒng),能夠快速簡(jiǎn)單地對(duì)編碼后的單詞進(jìn)行解碼。為解決本發(fā)明的問(wèn)題之一,本發(fā)明提供以下技術(shù)方案一種對(duì)詞庫(kù)壓縮編碼的方法,包括以下步驟A、統(tǒng)計(jì)詞庫(kù)中各個(gè)單詞后生成第一頻率表,該第一頻率表包括一組首字母頻率數(shù)據(jù)組以及若干組后續(xù)字母頻率數(shù)據(jù)組,所述首字母頻率數(shù)據(jù)組包括每個(gè)字母在詞庫(kù)單詞中作為首字母的出現(xiàn)次數(shù),所述后續(xù)字母頻率數(shù)據(jù)組包括每個(gè)字母的各個(gè)后續(xù)字母在詞庫(kù)單詞中的出現(xiàn)次數(shù);B、將所述第一頻率表中的每組頻率數(shù)據(jù)按照大小順序進(jìn)行排序,再將所述第一頻率表中各組位于相同序位的頻率數(shù)據(jù)進(jìn)行相加,得到包括若干個(gè)和頻率的第二頻率表;C、對(duì)所述的若干個(gè)和頻率進(jìn)行哈夫曼編碼獲得對(duì)應(yīng)的若干個(gè)二進(jìn)制碼,將獲得的二進(jìn)制碼分配給第二頻率表中每個(gè)和頻率所對(duì)應(yīng)的序位,生成編碼表;D、根據(jù)所述編碼表中首字母、每個(gè)字母的各個(gè)后續(xù)字母所在序位對(duì)應(yīng)的二進(jìn)制碼,替換詞庫(kù)中單詞的字母,生成單詞對(duì)應(yīng)的二進(jìn)制編碼。作為本發(fā)明一種對(duì)詞庫(kù)壓縮編碼的方法的一種實(shí)施方式,所述步驟A具體包括以下步驟Al、獲取一個(gè)單詞,讀取其首字母;A2、判斷當(dāng)前讀取的字母是否是首字母,如果是,該字母作為首字母的頻率加一,如果不是,該字母作為當(dāng)前前續(xù)字母的后續(xù)字母的頻率加一;A3、將當(dāng)前讀取的字母作為當(dāng)前前續(xù)字母;A4、判斷當(dāng)前讀取的字母是否是單詞的最后一個(gè)字母,如果不是,讀取下一個(gè)字母,并返回A2,如杲是最后一個(gè)字母,則返回Al,直到詞庫(kù)中的所有單詞都-故統(tǒng)計(jì);A5、生成第一頻率表,所述第一頻率表包括若干組數(shù)據(jù),每組數(shù)據(jù)對(duì)應(yīng)一個(gè)字母的各個(gè)后續(xù)字母的出現(xiàn)次數(shù),還包括一組對(duì)應(yīng)各個(gè)首字母出現(xiàn)次數(shù)的數(shù)據(jù)。作為本發(fā)明一種對(duì)詞庫(kù)壓縮編碼的方法的一種實(shí)施方式,所述第該頻率表中的行數(shù)據(jù);所述步驟B中的相同序位為位于第二頻率表中同一列的位置。作為本發(fā)明一種對(duì)詞庫(kù)壓縮編碼的方法的一種實(shí)施方式,所述步驟C具體包括Cl、將所述的若干個(gè)和頻率作為若干個(gè)節(jié)點(diǎn)構(gòu)造哈夫曼樹(shù);C2、將哈夫曼樹(shù)中節(jié)點(diǎn)的左孩子路徑標(biāo)識(shí)為0,右孩子路徑標(biāo)識(shí)為1,然后荻得各個(gè)和頻率對(duì)應(yīng)節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑,得到各個(gè)和頻率對(duì)應(yīng)的二進(jìn)制碼;C3、在第二頻率表中,將獲得的二進(jìn)制碼分配給其對(duì)應(yīng)的和頻率所在的列,然后將第二頻率表中的頻率數(shù)據(jù)用相應(yīng)的后續(xù)字母替換,生成編碼表。9作為本發(fā)明一種對(duì)詞庫(kù)壓縮編碼的方法的一種實(shí)施方式,所述步驟D包括Dl、獲取一個(gè)單詞;D2、從編碼表中對(duì)應(yīng)首字母的行中找到該單詞首字母所在的列,用該列對(duì)應(yīng)的二進(jìn)制碼替換該首字母;D3、讀取下一個(gè)字母及其前續(xù)字母;D4、從編碼表中找到該前續(xù)字母所在的行,在該行中找到當(dāng)前讀取字母所在的列,用該列對(duì)應(yīng)的二進(jìn)制碼替換當(dāng)前讀取字母,返回D3,直到單詞的最后一個(gè)字母被替換,生成單詞所對(duì)應(yīng)的二進(jìn)制編碼,再返回Dl。為解決本發(fā)明的問(wèn)題之二,本發(fā)明提供以下技術(shù)方案提供一種對(duì)詞庫(kù)壓縮編碼的系統(tǒng),其包括詞庫(kù),用于存儲(chǔ)單詞;統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)詞庫(kù)中各個(gè)單詞后生成第一頻率表,該第一頻率表包括一組首字母頻率數(shù)據(jù)組以及若干組后續(xù)字母頻率數(shù)據(jù)組,所述首字母頻率數(shù)據(jù)組包括每個(gè)字母在詞庫(kù)所有單詞中作為首字母的出現(xiàn)次數(shù),所述后續(xù)字母頻率數(shù)據(jù)組包括在詞庫(kù)所有單詞中每個(gè)字母的各個(gè)后續(xù)字母的出現(xiàn)次數(shù);存儲(chǔ)模塊,用于存儲(chǔ)所述第一頻率表、以及哈夫曼編碼模塊生成的編碼表;第二頻率表生成模塊,用于將所述第一頻率表中的每組頻率數(shù)據(jù)按照大小順序進(jìn)行排序,再將所述第一頻率表中各組位于相同序位的頻率數(shù)據(jù)進(jìn)行相加,得到包括若干個(gè)和頻率的第二頻率表;哈夫曼編碼模塊,用于對(duì)所述的若干個(gè)和頻率進(jìn)行哈夫曼編碼獲得對(duì)應(yīng)的若干個(gè)二進(jìn)制碼,將獲得的二進(jìn)制碼分配給第二頻率表中每個(gè)和頻率所對(duì)應(yīng)的序位,生成編碼表;編碼替換模塊,用于利用所述存儲(chǔ)模塊中的編碼表,根據(jù)該編碼表中首字母、每個(gè)字母的各個(gè)后續(xù)字母所在序位對(duì)應(yīng)的二進(jìn)制碼,替換詞庫(kù)中單詞的字母,生成單詞對(duì)應(yīng)的二進(jìn)制編;馬。為解決本發(fā)明的問(wèn)題之三,本發(fā)明提供以下技術(shù)方案本發(fā)明還提供一種對(duì)詞庫(kù)編碼進(jìn)行解碼的方法,包括以下步驟E、獲取一個(gè)單詞的二進(jìn)制碼;F、將步驟E中的二進(jìn)制碼拆分成若干個(gè)編碼表中包含的二進(jìn)制碼;G、用于根據(jù)編碼表查找與所述拆分后的二進(jìn)制碼所對(duì)應(yīng)的首字母或每個(gè)字母的各個(gè)后續(xù)字母,并用查到的字母替換二進(jìn)制編碼生成單詞。為解決本發(fā)明的問(wèn)題之四,本發(fā)明提供以下技術(shù)方案一種對(duì)詞庫(kù)編碼進(jìn)行解碼的系統(tǒng),包括編碼詞庫(kù),用于存^者二進(jìn)制編碼單詞;輸入模塊,用于從所述編碼詞庫(kù)中獲取一個(gè)單詞的二進(jìn)制編碼;編碼表存儲(chǔ)模塊,用于存儲(chǔ)編碼表,所述編碼表包括每個(gè)字母的各個(gè)后續(xù)字母對(duì)應(yīng)的二進(jìn)制碼,以及每個(gè)字母作為首字母所對(duì)應(yīng)的二進(jìn)制碼;拆分模塊,用于將所述單詞的二進(jìn)制編碼拆分成N個(gè)編碼表中包含的二進(jìn)制碼;查找替換模塊,用于根據(jù)編碼表查找與所述拆分模塊拆分后的二進(jìn)制碼所對(duì)應(yīng)的首字母或每個(gè)字母的各個(gè)后續(xù)字母,生成字母單詞。與現(xiàn)有技術(shù)相比,本發(fā)明對(duì)后續(xù)字母的出現(xiàn)次數(shù)進(jìn)行排序,將每列的頻率相加得到的若干個(gè)列頻率進(jìn)行哈夫曼編碼,生成一張編碼表,根據(jù)此編碼表得到的單詞二進(jìn)制編碼增加了字母的重碼率,從而提高了壓縮率。另,顯而易見(jiàn)地,對(duì)詞庫(kù)的二進(jìn)制編碼的解碼只需按照編碼表將編碼拆分成若千個(gè)二進(jìn)制碼,并在編碼表中查找對(duì)應(yīng)的字母進(jìn)行替換就可以完成一個(gè)單詞的解碼,該解碼過(guò)程算法筒單,運(yùn)算量小。結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步闡述,但附圖中的實(shí)施例不構(gòu)成對(duì)本發(fā)明的任何限制。圖1是本發(fā)明實(shí)施例中的一種對(duì)詞庫(kù)壓縮編碼的方法流程圖。圖2是圖1中步驟SOl的詳細(xì)流程圖。圖3是圖1步驟S03在一個(gè)實(shí)施方式中所構(gòu)造的哈夫曼樹(shù)。圖4是本發(fā)明實(shí)施例中的一種對(duì)詞庫(kù)編碼進(jìn)行解碼的方法流程圖。圖5是本發(fā)明實(shí)施例中的一種對(duì)詞庫(kù)壓縮編碼的系統(tǒng)結(jié)構(gòu)示意圖。圖6是本發(fā)明實(shí)施例中的一種對(duì)詞庫(kù)編碼進(jìn)行解碼的系統(tǒng)結(jié)構(gòu)示意圖。具體實(shí)施例方式本發(fā)明根據(jù)事先提供的字符序列數(shù)據(jù)庫(kù)(比如英文單詞庫(kù)),計(jì)算出每個(gè)字符序列中每個(gè)字符作為首字符出現(xiàn)的頻率,以及每個(gè)字符的后續(xù)字符的出現(xiàn)頻率,從而生成一張字符頻率表。此頻率表是按照降序排列,即頻率高的序列號(hào)小,頻率低的序列號(hào)大。將每列的頻率相加得到的若干個(gè)列頻率進(jìn)行哈夫曼編碼,生成一張編碼表,根據(jù)此編碼表得到的單詞二進(jìn)制編碼增加了字母的重碼率,從而提高了單詞庫(kù)的壓縮率。下面結(jié)合以下實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明,參考圖1,一種對(duì)詞庫(kù)壓縮編碼的方法,包括以下步驟步驟SOl,統(tǒng)計(jì)詞庫(kù)中各個(gè)單詞后生成第一頻率表,該第一頻率表包括一組首字母頻率數(shù)據(jù)組以及若干組后續(xù)字母頻率數(shù)據(jù)組,所述首字母頻率數(shù)據(jù)組包括每個(gè)字母在詞庫(kù)單詞中作為首字母的出現(xiàn)次數(shù),所述后續(xù)字母頻率數(shù)據(jù)組包括每個(gè)字母的各個(gè)后續(xù)字母在詞庫(kù)單詞中的出現(xiàn)次數(shù);其中后續(xù)字母的意思是如英文單詞make,字母m的后續(xù)字母是a,字母a的后續(xù)字母是k,k的后續(xù)字母是e,而e沒(méi)有后續(xù)字母;單詞的首字母m是"NU"的后續(xù)字母,"NU"是指單詞的開(kāi)始,"NU"的后續(xù)字母是每個(gè)單詞的首字母。步驟S02,將所述第一頻率表中的每組頻率數(shù)據(jù)按照大小順序進(jìn)行排序,再將所述第一頻率表中各組位于相同序位的頻率數(shù)據(jù)進(jìn)行相加,得到包括若干個(gè)和頻率的第二頻率表;步驟S03,對(duì)所述的若千個(gè)和頻率進(jìn)行哈夫曼編碼獲得對(duì)應(yīng)的若千個(gè)二進(jìn)制碼,將獲得的二進(jìn)制碼分配給第二頻率表中每個(gè)和頻率所對(duì)應(yīng)的序卩立,生成編碼表;步驟S04,根據(jù)所述編碼表中首字母、每個(gè)字母的各個(gè)后續(xù)字母所在序位對(duì)應(yīng)的二進(jìn)制碼,替換詞庫(kù)中單詞的字母,生成單詞對(duì)應(yīng)的二進(jìn)制編碼。下面將詳細(xì)闡述對(duì)詞庫(kù)進(jìn)行壓縮編碼的整個(gè)過(guò)程。圖2是圖1中步驟SOl的詳細(xì)流程圖,步驟SOl中所述的"逐個(gè)統(tǒng)計(jì)詞庫(kù)中的各個(gè)單詞,計(jì)算出每個(gè)字母的各個(gè)后續(xù)字母的出現(xiàn)次數(shù)"是指統(tǒng)計(jì)詞庫(kù)中每個(gè)字母的后續(xù)字母,將詞庫(kù)中的單詞逐個(gè)統(tǒng)計(jì),每個(gè)單詞又逐個(gè)字母統(tǒng)計(jì)。具體包括如下步驟步驟S011,獲取一個(gè)單詞;步驟S012,讀取其首字母;步驟S013,判斷當(dāng)前讀取的字母是否是首字母;步驟S014,如杲是,該字母作為首字母的頻率加一,然后^^行步驟S016;步驟S015,如果不是,該字母作為當(dāng)前前續(xù)字母的后續(xù)字母的頻率力口一;步驟S016,將當(dāng)前讀取的字母作為當(dāng)前前續(xù)字母;步驟S017,判斷當(dāng)前讀取的字母是否是單詞的最后一個(gè)字母;步驟S018,如果不是,讀取下一個(gè)字母,并返回步驟S013;步驟S019,如果是最后一個(gè)字母,則返回步驟SOll,直到詞庫(kù)中的所有單詞都被統(tǒng)計(jì)完。統(tǒng)計(jì)完成后可以生成第一頻率表,如下所示的表1,是根據(jù)英文詞庫(kù)統(tǒng)計(jì)出來(lái)的后續(xù)字符頻率表。該第一頻率表的每行對(duì)應(yīng)一個(gè)字母的各個(gè)后續(xù)字母的出現(xiàn)次數(shù)。其中第二行是以"NU"作為前續(xù)字母的各個(gè)首字母的出現(xiàn)次數(shù),第一列對(duì)應(yīng)的是各個(gè)前續(xù)字母。表1<table>tableseeoriginaldocumentpage14</column></row><table>參考圖3,對(duì)上述得到的各個(gè)列頻率進(jìn)行哈夫曼編碼,具體包括:5031、對(duì)表2中每列對(duì)應(yīng)的列頻率作為節(jié)點(diǎn)枸造哈夫曼樹(shù);哈夫曼樹(shù)又稱(chēng)最優(yōu)二叉樹(shù),是一種帶權(quán)路徑長(zhǎng)度最短的二叉樹(shù);所謂樹(shù)的帶權(quán)路徑長(zhǎng)度,就是樹(shù)中所有的葉結(jié)點(diǎn)的權(quán)值乘上其到根結(jié)點(diǎn)的路徑長(zhǎng)度。5032、將哈夫曼樹(shù)中節(jié)點(diǎn)的左孩子路徑標(biāo)識(shí)為0,右孩子路徑標(biāo)識(shí)為1,然后獲得各個(gè)列頻率對(duì)應(yīng)節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑,得到各個(gè)列頻率所對(duì)應(yīng)的二進(jìn)制碼;5033、在表2中,將獲得的二進(jìn)制碼分配給其對(duì)應(yīng)列頻率所在的列,存放在第一行,用相應(yīng)的后續(xù)字母替換表2中的頻率,生成編碼表(如表3所示)。表3<table>tableseeoriginaldocumentpage15</column></row><table>根據(jù)上面的編碼表(表3),用其中的二進(jìn)制碼替換詞庫(kù)中各個(gè)單詞的字母,生成單詞對(duì)應(yīng)的二進(jìn)制編碼。替換的規(guī)則是每個(gè)字母,根據(jù)其編碼是由字母本身和它的前續(xù)字母決定的,首字母的前續(xù)字母是NU。如有一個(gè)單詞是'eda,,首先確定首字母'e,的編碼,由于e是首字母,所以它的前續(xù)字母是NU,在表3中,找到NU的后續(xù)字母為'e'的編碼是'ir,再查找'd'的編碼,'d,的前續(xù)編碼是'e,,在表3中找到'e,的后續(xù)字母為'd'的編碼是'101,,按此方法找到'a,的編碼是'0101,,得到該單詞'eda'對(duì)應(yīng)的二進(jìn)制編碼是'111010101'。相應(yīng)地,針對(duì)上述得到的單詞編碼,其解碼過(guò)程與編碼過(guò)程是相反的。它的解碼順序是乂人第一個(gè)編碼開(kāi)始,第一個(gè)編;媽的前續(xù)編碼肯具體步驟如下步驟Sll、獲取一個(gè)單詞的二進(jìn)制編碼;步驟S12、將所述單詞的二進(jìn)制編碼拆分成N個(gè)編碼表中包含的二進(jìn)制碼,初始化X為1;步驟S13、在編碼表中存放首字母的行中查找第X個(gè)二進(jìn)制碼對(duì)應(yīng)的字母作為其替換字母,并作為當(dāng)前前續(xù)字母;步驟S14、將X力。1;步驟S15、在編碼表中找到當(dāng)前前續(xù)字母對(duì)應(yīng)的行,在該行中查找第X個(gè)二進(jìn)制碼對(duì)應(yīng)的字母作為其替換字母,并作為當(dāng)前前續(xù)字母;步驟S16、判斷X是否小于N,如果是,返回步驟S14,否則返回步驟S11。例如有一串二進(jìn)制編碼為'oooioooioooor,首先才艮據(jù)哈夫曼樹(shù)得到的編碼序列是'ooor、'ooor、'ioooi'。第一個(gè)編碼的前序編碼是NU,則在表3中,找到NU的'0001'編碼的后續(xù)字母是'a',將'a,作為當(dāng)前前續(xù)編碼;在當(dāng)前前續(xù)字母'a'的后續(xù)編碼中找到'0001,對(duì)應(yīng)的字母是'c';再將'c'作為當(dāng)前前續(xù)字母,找到它的后續(xù)編碼為'iooor的字母是'c,,這樣就解碼得出對(duì)應(yīng)的字符串是"acc,。關(guān)于壓縮率的比較如下從表2提供的頻率統(tǒng)計(jì)我們可以看出,01~04這四個(gè)編碼的占用率之和達(dá)到了65.68%,其中Ol編碼的占用率就達(dá)到了30.72%。表4是原始詞庫(kù)中各個(gè)字母的使用頻率統(tǒng)計(jì)表,從此表中可以看出,前面8個(gè)字母的使用頻率之和才為65.60%??梢钥闯觯褂帽景l(fā)明的二次編碼的重碼率要比原來(lái)未使用二次編碼時(shí)的重碼率高的多,這就使得本發(fā)明的二次編碼的壓縮率比原來(lái)未使用二次編碼時(shí)的壓縮率高。表4<table>tableseeoriginaldocumentpage17</column></row><table>表5是幾種語(yǔ)言的采用本發(fā)明所述二次編碼的壓縮率和直接哈夫曼編碼壓縮率的對(duì)比表,從表中可以看出,使用本發(fā)明所述二次編碼壓縮率要比直接哈夫曼編碼壓縮率要高10%以上,平均高出16%。表5<table>tableseeoriginaldocumentpage17</column></row><table>與上述所說(shuō)的編碼方法相對(duì)應(yīng),本發(fā)明還提供了一種對(duì)詞庫(kù)壓縮編碼的系統(tǒng),參考圖5,該系統(tǒng)包括詞庫(kù)1;統(tǒng)計(jì)模塊2,用于逐個(gè)統(tǒng)計(jì)詞庫(kù)中的各個(gè)單詞,計(jì)算出每個(gè)字母的各個(gè)后續(xù)字母的出現(xiàn)次數(shù),生成第一頻率表,所述第一頻率表的每行對(duì)應(yīng)一個(gè)字母的各個(gè)后續(xù)字母的出現(xiàn)次數(shù),還包括一行各個(gè)字母作為首字母的出現(xiàn)次數(shù);存儲(chǔ)模塊3,用于存儲(chǔ)所述第一頻率表、以及哈夫曼編碼模塊生成的編碼表;第二頻率表生成模塊4,用于對(duì)所述第一頻率表中各行的頻率按照從大到小的順序進(jìn)行排序,再將每列的頻率相加得到若干個(gè)列頻率,生成笫二頻率表;哈夫曼編碼模塊5,用于對(duì)所述的列頻率進(jìn)行哈夫曼編碼,每個(gè)列頻率所在的列對(duì)應(yīng)一個(gè)二進(jìn)制碼,用相應(yīng)的后續(xù)字母替換第二頻率表中的頻率,生成編碼表;編碼替換模塊6,用于根據(jù)所述存儲(chǔ)模塊中的編碼表,用所述的二進(jìn)制碼替換各個(gè)單詞中的字母,生成單詞對(duì)應(yīng)的二進(jìn)制編碼。與上述所說(shuō)的解碼方法相對(duì)應(yīng),本發(fā)明還提供了一種對(duì)詞庫(kù)編碼進(jìn)行解碼的系統(tǒng),參考圖6,該系統(tǒng)包括編碼詞庫(kù)11;輸入斗莫塊22,用于從所述編碼詞庫(kù)中獲取一個(gè)單詞的二進(jìn)制編碼;編碼表存儲(chǔ)模塊33,用于存儲(chǔ)編碼表;拆分模塊44,用于將所述單詞的二進(jìn)制編碼拆分成N個(gè)編碼表中包含的二進(jìn)制碼;查找替換模塊55,用于在編碼表中存放首字母的行中查找第1個(gè)二進(jìn)制碼對(duì)應(yīng)的字母作為其替換字母,并作為當(dāng)前前續(xù)字母;接著繼續(xù)在編碼表中找到當(dāng)前前續(xù)字母對(duì)應(yīng)的行,在該行中查找第2個(gè)二進(jìn)制碼對(duì)應(yīng)的字母作為其替換字母,直到最后一個(gè)二進(jìn)制碼被替換成字母,得到所獲取二進(jìn)制編碼對(duì)應(yīng)的單詞。本發(fā)明巧妙的利用單詞字母間的前后依賴(lài)規(guī)則,使用中間編碼,大幅增加詞庫(kù)中字母的重碼率,加大字母間的頻率差,充分發(fā)揮哈夫曼編碼的優(yōu)點(diǎn),使其壓縮率大大的提高。最后應(yīng)當(dāng)說(shuō)明的是,以上實(shí)施例僅用于說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)本發(fā)明保護(hù)范圍的限制,盡管參照較佳實(shí)施例對(duì)本發(fā)明作了詳細(xì)地說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而不脫離本發(fā)明技術(shù)方案的實(shí)質(zhì)和范圍。權(quán)利要求1.一種對(duì)詞庫(kù)壓縮編碼的方法,其特征在于,包括以下步驟A、統(tǒng)計(jì)詞庫(kù)中各個(gè)單詞后生成第一頻率表,該第一頻率表包括一組首字母頻率數(shù)據(jù)組以及若干組后續(xù)字母頻率數(shù)據(jù)組,所述首字母頻率數(shù)據(jù)組包括每個(gè)字母在詞庫(kù)單詞中作為首字母的出現(xiàn)次數(shù),所述后續(xù)字母頻率數(shù)據(jù)組包括每個(gè)字母的各個(gè)后續(xù)字母在詞庫(kù)單詞中的出現(xiàn)次數(shù);B、將所述第一頻率表中的每組頻率數(shù)據(jù)按照大小順序進(jìn)行排序,再將所述第一頻率表中各組位于相同序位的頻率數(shù)據(jù)進(jìn)行相加,得到包括若干個(gè)和頻率的第二頻率表;C、對(duì)所述的若干個(gè)和頻率進(jìn)行哈夫曼編碼獲得對(duì)應(yīng)的若干個(gè)二進(jìn)制碼,將獲得的二進(jìn)制碼分配給第二頻率表中每個(gè)和頻率所對(duì)應(yīng)的序位,生成編碼表;D、根據(jù)所述編碼表中首字母、每個(gè)字母的各個(gè)后續(xù)字母所在序位對(duì)應(yīng)的二進(jìn)制碼,替換詞庫(kù)中單詞的字母,生成單詞對(duì)應(yīng)的二進(jìn)制編碼。2.根據(jù)權(quán)利要求1所述的一種對(duì)詞庫(kù)壓縮編碼的方法,其特征在于,所述步驟A具體包括以下步驟Al、獲取一個(gè)單詞,讀取其首字母;A2、判斷當(dāng)前讀取的字母是否是首字母,如果是,該字母作為首字母的頻率加一,如果不是,該字母作為當(dāng)前前續(xù)字母的后續(xù)字母的頻率加一;A3、將當(dāng)前讀取的字母作為當(dāng)前前續(xù)字母;A4、判斷當(dāng)前讀取的字母是否是單詞的最后一個(gè)字母,如果不是,讀取下一個(gè)字母,并返回A2,如果是最后一個(gè)字母,則返回Al,直到詞庫(kù)中的所有單詞都被統(tǒng)計(jì);A5、將統(tǒng)計(jì)后的數(shù)據(jù)生成第一頻率表,該第一頻率表包括一組首字母頻率數(shù)據(jù)組以及若干組后續(xù)字母頻率數(shù)據(jù)組,其中首字母頻率數(shù)據(jù)組對(duì)應(yīng)每個(gè)字母在詞庫(kù)單詞中作為首字母的出現(xiàn)次凄史,所述后續(xù)字母頻率數(shù)據(jù)組對(duì)應(yīng)每個(gè)字母的各個(gè)后續(xù)字母在詞庫(kù)單詞中的出現(xiàn)次數(shù)。3.根據(jù)權(quán)利要求2所述的一種對(duì)詞庫(kù)壓縮編碼的方法,其特征在于,據(jù)組作為該頻率表中的行數(shù)據(jù);所述步驟B中的相同序位為位于第二頻率表中同一列的位置。4.根據(jù)權(quán)利要求3所述的一種對(duì)詞庫(kù)壓縮編碼的方法,其特征在于,所述步驟C具體包括Cl、將所述的若干個(gè)和頻率作為若干個(gè)節(jié)點(diǎn)構(gòu)造哈夫曼樹(shù);C2、將哈夫曼樹(shù)中節(jié)點(diǎn)的左孩子路徑標(biāo)識(shí)為0,右孩子路徑標(biāo)識(shí)為1,然后獲得各個(gè)和頻率對(duì)應(yīng)節(jié)點(diǎn)到根節(jié)點(diǎn)的路徑,得到各個(gè)和頻率對(duì)應(yīng)的二進(jìn)制碼;C3、在第二頻率表中,將獲得的二進(jìn)制碼分配給其對(duì)應(yīng)的和頻率所在的列,然后將第二頻率表中的頻率數(shù)據(jù)用相應(yīng)的后續(xù)字母替換,生成編碼表。5.根據(jù)權(quán)利要求4所述的一種對(duì)詞庫(kù)壓縮編碼的方法,其特4正在于,所述步驟D包括Dl、獲取一個(gè)單詞;D2、從編碼表中對(duì)應(yīng)首字母的行中找到該單詞首字母所在的歹'j,用該列對(duì)應(yīng)的二進(jìn)制碼替換該首字母;D3、讀取下一個(gè)字母及其前續(xù)字母;D4、從編碼表中找到該前續(xù)字母所在的行,在該行中找到當(dāng)前讀取字母所在的列,用該列對(duì)應(yīng)的二進(jìn)制碼替換當(dāng)前讀耳又字母,返回D3,直到單詞的最后一個(gè)字母被替換,生成單詞所對(duì)應(yīng)的二進(jìn)制編碼,再返回Dl。6.—種對(duì)權(quán)利要求1中所述詞庫(kù)壓縮編碼進(jìn)行解碼的方法,其特征在于,包括以下步驟E、獲取一個(gè)單詞的二進(jìn)制碼;F、將步驟E中的二進(jìn)制碼拆分成若干個(gè)編碼表中包含的二進(jìn)制碼;G、用于根據(jù)編碼表查找與所述拆分后的二進(jìn)制碼所對(duì)應(yīng)的首字母或每個(gè)字母的各個(gè)后續(xù)字母,并用查到的字母替換二進(jìn)制編碼生成單詞。7.—種對(duì)詞庫(kù)壓縮編碼的系統(tǒng),其特征在于,包括詞庫(kù),用于存儲(chǔ)單詞;統(tǒng)計(jì)模塊,用于統(tǒng)計(jì)詞庫(kù)中各個(gè)單詞后生成第一頻率表,該第一頻率表包括一組首字母頻率數(shù)據(jù)組以及若干組后續(xù)字母頻率數(shù)據(jù)組,所述首字母頻率數(shù)據(jù)組包括每個(gè)字母在詞庫(kù)所有單詞中作為首字母的出現(xiàn)次數(shù),所述后續(xù)字母頻率數(shù)據(jù)組包括在詞庫(kù)所有單詞中每個(gè)字母的各個(gè)后續(xù)字母的出現(xiàn)次數(shù);存儲(chǔ)模塊,用于存儲(chǔ)所述第一頻率表、以及哈夫曼編碼模塊生成的編碼表;第二頻率表生成模塊,用于將所述第一頻率表中的每組頻率數(shù)據(jù)按照大小順序進(jìn)行排序,再將所述第一頻率表中各組位于相同序位的頻率數(shù)據(jù)進(jìn)行相加,得到包括若干個(gè)和頻率的第二頻率表;哈夫曼編碼模塊,用于對(duì)所述的若干個(gè)和頻率進(jìn)行哈夫曼編碼獲得對(duì)應(yīng)的若干個(gè)二進(jìn)制碼,將獲得的二進(jìn)制碼分配給第二頻率表中每個(gè)和頻率所對(duì)應(yīng)的序位,生成編碼表;編碼替換模塊,用于利用所述存儲(chǔ)模塊中的編碼表,根據(jù)該編碼表中首字母、每個(gè)字母的各個(gè)后續(xù)字母所在序位對(duì)應(yīng)的二進(jìn)制碼,替換詞庫(kù)中單詞的字母,生成單詞對(duì)應(yīng)的二進(jìn)制編碼。8.—種對(duì)詞庫(kù)編碼進(jìn)行解碼的系統(tǒng),其特征在于,包括編碼詞庫(kù),用于存儲(chǔ)二進(jìn)制編碼單詞;輸入模塊,用于從所述編碼詞庫(kù)中獲取一個(gè)單詞的二進(jìn)制編碼;編碼表存儲(chǔ)模塊,用于存儲(chǔ)編碼表,所述編碼表包括每個(gè)字母的各個(gè)后續(xù)字母對(duì)應(yīng)的二進(jìn)制碼,以及每個(gè)字母作為首字母所對(duì)應(yīng)的二進(jìn)制碼;拆分模塊,用于將所述單詞的二進(jìn)制編碼拆分成N個(gè)編碼表中包含的二進(jìn)制碼;查找替換模塊,用于根據(jù)編碼表查找與所述拆分模塊拆分后的二進(jìn)制碼所對(duì)應(yīng)的首字母或每個(gè)字母的各個(gè)后續(xù)字母,生成字母單詞。9.根據(jù)權(quán)利要求8所述的一種對(duì)詞庫(kù)編碼進(jìn)行解碼的系統(tǒng),其特征在于所述編碼表包括若干行,各行分別對(duì)應(yīng)一個(gè)字母的各個(gè)后續(xù)字母,還包括一行作為首字母的字母,該編碼表中的各列分別對(duì)應(yīng)有一個(gè)二進(jìn)制碼;所述查找替換模塊,用于在編碼表中存放首字母的行中查找第1個(gè)二進(jìn)制碼對(duì)應(yīng)的字母作為其替換字母,并作為當(dāng)前前續(xù)字母;接著繼續(xù)在編碼表中找到當(dāng)前前續(xù)字母對(duì)應(yīng)的行,在該行中查找第2個(gè)二進(jìn)制碼對(duì)應(yīng)的后續(xù)字母作為其替換字母,直到最后一個(gè)二進(jìn)制碼被替換成字母,得到所獲取二進(jìn)制編碼對(duì)應(yīng)的單詞。全文摘要一種對(duì)詞庫(kù)壓縮編碼的方法,包括A.統(tǒng)計(jì)詞庫(kù)中各個(gè)單詞后生成第一頻率表,該第一頻率表包括一組首字母頻率數(shù)據(jù)組以及若干組后續(xù)字母頻率數(shù)據(jù)組;B.將第一頻率表中的每組頻率數(shù)據(jù)按照大小順序進(jìn)行排序,將每組頻率數(shù)據(jù)位于相同序位的頻率數(shù)據(jù)相加,得到包括若干個(gè)和頻率的第二頻率表;C.對(duì)和頻率進(jìn)行哈夫曼編碼獲得對(duì)應(yīng)的二進(jìn)制碼,將獲得的二進(jìn)制碼分配給第二頻率表中每個(gè)和頻率所對(duì)應(yīng)的序位,生成編碼表;D.根據(jù)所述編碼表中首字母、每個(gè)字母的各個(gè)后續(xù)字母所在序位對(duì)應(yīng)的二進(jìn)制碼,替換詞庫(kù)中單詞的字母,生成單詞對(duì)應(yīng)的二進(jìn)制編碼。本發(fā)明還提供了一種對(duì)詞庫(kù)壓縮編碼的系統(tǒng),以及一種對(duì)詞庫(kù)編碼進(jìn)行解碼的方法和系統(tǒng)。本發(fā)明提高了詞庫(kù)中單詞編碼的壓縮率,而且解碼簡(jiǎn)單。文檔編號(hào)G06F17/22GK101520771SQ20091003825公開(kāi)日2009年9月2日申請(qǐng)日期2009年3月27日優(yōu)先權(quán)日2009年3月27日發(fā)明者劉志玭,陳炳輝,高精鍊申請(qǐng)人:廣東國(guó)筆科技股份有限公司