本文中所討論的實(shí)施方式涉及編碼程序、編碼方法、編碼裝置、解碼程序、解碼方法以及解碼裝置。
背景技術(shù):
例如,已經(jīng)使用了結(jié)構(gòu)化文檔數(shù)據(jù)例如可擴(kuò)展標(biāo)記語言(xml)。xml已經(jīng)廣泛地被擴(kuò)展為例如用于在不同系統(tǒng)之間交換數(shù)據(jù)的兼容格式。以結(jié)構(gòu)化格式例如xml來公開各種文檔數(shù)據(jù)。在本文中,結(jié)構(gòu)化文檔數(shù)據(jù)例如采用整體以壓縮格式例如zip被壓縮的方式來存儲(chǔ),以便減少用于結(jié)構(gòu)化文檔數(shù)據(jù)的存儲(chǔ)或通信的數(shù)據(jù)量。在使用壓縮文檔數(shù)據(jù)的情況下,執(zhí)行對(duì)整個(gè)壓縮文檔數(shù)據(jù)的解壓縮,以恢復(fù)文檔數(shù)據(jù),并且對(duì)所恢復(fù)的文檔數(shù)據(jù)執(zhí)行各種分析。例如,在搜索特定單詞是否被包括在文檔數(shù)據(jù)的特定層次中的情況下,對(duì)所恢復(fù)的文檔數(shù)據(jù)執(zhí)行詞法分析或結(jié)構(gòu)分析。
日本公開特許公報(bào)第2005-215951號(hào)
日本公開特許公報(bào)第2002-297568號(hào)
日本公開特許公報(bào)第2005-018672號(hào)
然而,在使用文檔數(shù)據(jù)(其中整體已經(jīng)以壓縮格式例如zip被壓縮)的情況下,解壓縮整個(gè)壓縮文檔數(shù)據(jù),并且隨后執(zhí)行各種分析,使得處理量高??梢栽诰哂械吞幚砟芰Φ慕K端例如移動(dòng)終端中使用壓縮文檔數(shù)據(jù),并且當(dāng)使用該終端的處理量高時(shí),處理是耗時(shí)的。即使在僅使用結(jié)構(gòu)化文檔中的文檔結(jié)構(gòu)的一部分的情況下,在整體已經(jīng)以壓縮格式例如zip被壓縮的情況下,整個(gè)文檔也被解壓縮。
因此,本發(fā)明的實(shí)施方式的一個(gè)方面中的目的是提供執(zhí)行與文檔結(jié)構(gòu)相對(duì)應(yīng)的編碼或解碼的編碼程序、編碼方法、編碼裝置、解碼程序、解碼方法以及解碼裝置。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)實(shí)施方式的一方面,一種編碼方法包括:識(shí)別第一結(jié)構(gòu)化文檔的文檔結(jié)構(gòu);以及使用與使用文檔結(jié)構(gòu)的特定層次相對(duì)應(yīng)的編碼規(guī)則來對(duì)第一結(jié)構(gòu)化文檔的特定層次中的字符串進(jìn)行編碼。
附圖說明
圖1是示意地圖示了編碼處理的流程的示圖;
圖2a是示意性地圖示了搜索處理的流程的示圖;
圖2b是示意性地圖示了未創(chuàng)建索引的情況下的搜索處理的流程的示圖;
圖3是圖示了編碼裝置的配置的示例的示圖;
圖4是圖示了代碼的分配的示例的示圖;
圖5是圖示了代碼的分配的示例的示圖;
圖6是圖示了模式的示意配置的示圖;
圖7a是圖示了具有由標(biāo)簽指示的文檔結(jié)構(gòu)的文檔的示例的示圖;
圖7b是圖示了具有通過標(biāo)簽在文檔的一部分上提供的元數(shù)據(jù)的文檔的示例的示圖;
圖8a是圖示了編碼的示例的示圖;
圖8b是圖示了編碼的示例的示圖;
圖9是示意地圖示了編碼的流程的示圖;
圖10a是圖示了搜索的示例的示圖;
圖10b是圖示了檢索的示例的示圖;
圖11是圖示了編碼處理的步驟的示例的流程圖;
圖12是圖示了搜索處理的步驟的示例的流程圖;
圖13是圖示了搜索處理的步驟的示例的流程圖;
圖14是圖示了解碼處理的步驟的示例的流程圖;
圖15是圖示了代碼的分配的示例的示圖;
圖16是圖示了執(zhí)行編碼程序的計(jì)算機(jī)的示例的示圖;
圖17是圖示了執(zhí)行搜索程序的計(jì)算機(jī)的示圖;以及
圖18是圖示了執(zhí)行解碼程序的計(jì)算機(jī)的示例的示圖。
具體實(shí)施方式
將參考附圖來說明優(yōu)選實(shí)施方式。權(quán)利的范圍不受實(shí)施方式的限制。只要實(shí)施方式的處理內(nèi)容彼此一致,則可以將相應(yīng)的實(shí)施方式彼此適當(dāng)?shù)亟M合。
編碼處理
首先,將通過使用圖1來描述編碼處理的概述。圖1是示意性地圖示了編碼處理的流程的示圖。在下文中,將描述對(duì)存儲(chǔ)有結(jié)構(gòu)化文檔的編碼目標(biāo)文件30進(jìn)行編碼的情況作為示例。
編碼目標(biāo)文件30存儲(chǔ)通過例如xml結(jié)構(gòu)化的文檔。在xml中,以下述這樣的方式來使文檔結(jié)構(gòu)化:通過文本來描述文檔,并且通過標(biāo)簽來限定文檔的元素。圖1的示例說明了醫(yī)院中的患者的醫(yī)療記錄的數(shù)據(jù)被設(shè)置為通過xml結(jié)構(gòu)化的文檔的情況。在圖1的示例中,用具有元素名稱“體溫”的標(biāo)簽來記錄體溫“36.0”。用具有元素名稱“概述”的標(biāo)簽來記錄患者的“xxx......”的概述。編碼目標(biāo)文件30可以是任何結(jié)構(gòu)化的文檔。
在執(zhí)行對(duì)編碼目標(biāo)文件30的編碼的情況下,編碼裝置10的編碼處理單元40讀取存儲(chǔ)在編碼目標(biāo)文件30中的文檔,并且識(shí)別文檔的文檔結(jié)構(gòu)(圖1(1))。例如,在限定與編碼目標(biāo)文件30相對(duì)應(yīng)的xml的模式(schema)的情況下,編碼處理單元40可以從與編碼目標(biāo)文件30相對(duì)應(yīng)的模式識(shí)別文檔結(jié)構(gòu),或者可以通過分析文檔來識(shí)別文檔結(jié)構(gòu)。
編碼處理單元40根據(jù)針對(duì)與文檔結(jié)構(gòu)相對(duì)應(yīng)的層次結(jié)構(gòu)的編碼規(guī)則來對(duì)已讀取的文檔進(jìn)行編碼,并且將編碼數(shù)據(jù)存儲(chǔ)為編碼數(shù)據(jù)32(圖1(2))。
例如,編碼處理單元40根據(jù)常見編碼規(guī)則來對(duì)限定文檔結(jié)構(gòu)的字符串進(jìn)行編碼。在圖1的示例中,指示文檔結(jié)構(gòu)的標(biāo)簽“<體溫>”被編碼成代碼a1,標(biāo)簽“</體溫>”被編碼成代碼a2,標(biāo)簽“<概述>”被編碼成代碼a3,并且標(biāo)簽“</概述>”被編碼成代碼a4。結(jié)束標(biāo)簽的代碼可以是與開始標(biāo)簽的代碼不同的代碼,或者可以通過將開始標(biāo)簽的代碼與指示標(biāo)簽的結(jié)束的代碼組合來設(shè)置。
例如,編碼處理單元40根據(jù)與出現(xiàn)在層次中的字符串的特性相對(duì)應(yīng)的編碼規(guī)則來對(duì)每個(gè)層次中的字符串進(jìn)行編碼。只要在編碼時(shí)被分配的代碼對(duì)于每個(gè)編碼規(guī)則是唯一的則足夠了。因此,在根據(jù)針對(duì)層次的編碼規(guī)則來對(duì)層次中出現(xiàn)的字符串進(jìn)行編碼的情況下,只要代碼對(duì)于每個(gè)層次是唯一的則足夠了。因此,由于層次不同,所以可以向不同的字符串分配相同的代碼。在圖1的示例中,“體溫”的層次中的字符串“36.0”被編碼成代碼b1,并且“概述”的層次中的字符串“xxx......”的“xxx”被編碼成代碼b1。例如,編碼處理單元40根據(jù)將具有高出現(xiàn)頻率的模式例如字符或詞轉(zhuǎn)變成短代碼的編碼規(guī)則來對(duì)每個(gè)層次中的字符串進(jìn)行編碼。因此,可以在每個(gè)層次中將包括在字符串中的各種模式中的具有高出現(xiàn)頻率的模式轉(zhuǎn)變成短代碼,并且因此可以將整個(gè)編碼目標(biāo)文件30轉(zhuǎn)變成短代碼。
編碼處理單元40將要被轉(zhuǎn)變的字符串和與字符串相對(duì)應(yīng)的代碼存儲(chǔ)在用于編碼規(guī)則的詞典數(shù)據(jù)31中。在圖1的示例中,字符串“36.0”和代碼b1彼此相關(guān)聯(lián)且被存儲(chǔ)在詞典數(shù)據(jù)31a中,并且字符串“xxx”和代碼b1彼此相關(guān)聯(lián)且被存儲(chǔ)在詞典數(shù)據(jù)31b中。
編碼處理單元40針對(duì)每個(gè)編碼規(guī)則創(chuàng)建指示出現(xiàn)在已編碼字符串中的模式的索引33(圖1(3))。索引是指示包括模式的文件的數(shù)據(jù)。索引例如包括將模式或文件與一個(gè)位相關(guān)聯(lián)并且存儲(chǔ)模式是否基于該位的值而出現(xiàn)的位圖類型的索引。索引還包括將模式或文件與多個(gè)位相關(guān)聯(lián)并且通過多個(gè)位來保存模式的出現(xiàn)數(shù)目的信息的計(jì)數(shù)映射類型的索引。在圖1的示例中,編碼處理單元40創(chuàng)建計(jì)數(shù)映射類型的索引33a和33b。索引33a保存“體溫”的層次中的字符串中出現(xiàn)的模式的出現(xiàn)數(shù)目的信息。索引33b保存“概述”的層次中的字符串中出現(xiàn)的模式的出現(xiàn)數(shù)目的信息。在圖1的示例中,索引33a和33b中的每一個(gè)通過多個(gè)位來存儲(chǔ)與編碼目標(biāo)文件30的文件編號(hào)“1”和代碼b1相關(guān)聯(lián)的出現(xiàn)數(shù)目。在本實(shí)施方式中,盡管描述了在編碼時(shí)創(chuàng)建索引33a和33b的情況,但是編碼處理單元40不限于此并且可以適當(dāng)?shù)乇恍薷摹@?,編碼處理單元40可以不創(chuàng)建索引33a和33b。
搜索過程
接下來,將通過使用圖2a來描述由根據(jù)第一實(shí)施方式的編碼裝置10執(zhí)行的搜索處理的概述。圖2a是示意性地圖示了搜索處理的流程的示圖。圖2a的示例說明了已經(jīng)在圖1中被編碼的編碼數(shù)據(jù)32、詞典數(shù)據(jù)31a和31b以及索引33a和33b。在圖2a的示例中,為了便于理解編碼字符串,在編碼數(shù)據(jù)32中的代碼后面標(biāo)注括號(hào)“()”中所包括的編碼字符串。
編碼裝置10的文件搜索單元50接受搜索條件的輸入。例如,在圖2a的示例中,文件搜索單元50接受搜索條件例如“概述”的層次或字符串“xxx”。
文件搜索單元50搜索滿足搜索條件的文件。例如,文件搜索單元50參照通過轉(zhuǎn)變“概述”的層次中的字符串而設(shè)置的詞典數(shù)據(jù)31b,并且識(shí)別與字符串“xxx”相對(duì)應(yīng)的代碼b1(圖2a(1))。文件搜索單元50參照通過轉(zhuǎn)變“概述”的層次中的字符串而創(chuàng)建的索引33b,并且識(shí)別代碼b1出現(xiàn)在其中的文件的文件編號(hào)(圖2a(2))。在圖2a的示例中,索引33與編碼目標(biāo)文件30的文件編號(hào)“1”和代碼b1相關(guān)聯(lián),以存儲(chǔ)出現(xiàn)數(shù)目,并且因此當(dāng)具有文件編號(hào)“1”的編碼目標(biāo)文件30滿足搜索條件時(shí),執(zhí)行搜索。因此,在已被編碼的編碼數(shù)據(jù)32中執(zhí)行對(duì)字符串的搜索的情況下,編碼裝置10可以在不對(duì)編碼數(shù)據(jù)32進(jìn)行解碼的情況下搜索字符串,并且因此可以減少使用編碼裝置10的處理量。
如上所述,可以不創(chuàng)建索引33a和33b。圖2b是示意性地圖示了在未創(chuàng)建索引的情況下的搜索處理的流程的示圖。圖2b的示例說明了在圖1中已被編碼的編碼數(shù)據(jù)32和詞典數(shù)據(jù)31。同樣在圖2b的示例中,為了便于理解編碼字符串,在編碼數(shù)據(jù)32中的代碼后面標(biāo)注括號(hào)“()”中所包括的編碼字符串。
文件搜索單元50接受搜索條件的輸入。例如,在圖2b的示例中,文件搜索單元50接受搜索條件例如“概述”的層次或字符串“xxx”。
文件搜索單元50搜索滿足搜索條件的文件。例如,文件搜索單元50對(duì)通過常見編碼規(guī)則被編碼的標(biāo)簽進(jìn)行解碼。文件搜索單元50參考通過轉(zhuǎn)變“概述”的層次中的字符串而設(shè)置的詞典數(shù)據(jù)31b,并且對(duì)“概述”的層次中的代碼進(jìn)行部分解碼(圖2b(1))。文件搜索單元50從已解碼部分搜索字符串“xxx”(圖2b(2))。同樣在這種情況下,文件搜索單元50可以僅對(duì)“概述”的層次中的代碼進(jìn)行部分解碼,以執(zhí)行搜索,并且因此,與對(duì)整個(gè)編碼數(shù)據(jù)進(jìn)行解碼的情況相比,可以減少使用文件搜索單元50的處理量。
裝置配置
接下來,將描述編碼裝置10的配置。圖3是圖示了編碼裝置10的配置的示例的示圖。編碼裝置10是執(zhí)行編碼例如壓縮結(jié)構(gòu)化文檔的裝置。編碼裝置10例如是計(jì)算機(jī)例如個(gè)人計(jì)算機(jī)或服務(wù)器計(jì)算機(jī)或者信息處理裝置例如平板終端或智能電話。編碼裝置10可以被實(shí)現(xiàn)為單個(gè)計(jì)算機(jī),并且可以被實(shí)現(xiàn)為用于多個(gè)計(jì)算機(jī)的云。在本實(shí)施方式中,將描述編碼裝置10是單個(gè)計(jì)算機(jī)的情況作為示例。如圖3所示,編碼裝置10包括存儲(chǔ)單元20和控制單元21。編碼裝置10可以包括除了如上所述的儀器之外的包括在計(jì)算機(jī)或信息處理裝置中的另一儀器。在本實(shí)施方式中,雖然將描述由編碼裝置10執(zhí)行編碼和文件搜索的情況作為示例,但是可以由不同的裝置來執(zhí)行編碼和文件搜索。
存儲(chǔ)單元20是存儲(chǔ)裝置例如硬盤、固態(tài)驅(qū)動(dòng)器(ssd)或光盤。存儲(chǔ)單元20可以是數(shù)據(jù)可重寫半導(dǎo)體存儲(chǔ)器例如隨機(jī)存取存儲(chǔ)器(ram)或閃速存儲(chǔ)器、非易失性靜態(tài)隨機(jī)存取存儲(chǔ)器(nvsram)。
存儲(chǔ)單元20存儲(chǔ)操作系統(tǒng)(os)和由控制單元21執(zhí)行的各種程序。例如,存儲(chǔ)單元20存儲(chǔ)用于執(zhí)行稍后描述的編碼處理和搜索處理的程序。存儲(chǔ)單元20還存儲(chǔ)用于由控制單元21執(zhí)行的程序的各種數(shù)據(jù)。例如,存儲(chǔ)單元20存儲(chǔ)編碼目標(biāo)文件30、詞典數(shù)據(jù)31、編碼數(shù)據(jù)32和索引33。
編碼目標(biāo)文件30是通過存儲(chǔ)編碼目標(biāo)的文本數(shù)據(jù)而提供的數(shù)據(jù)。例如,通過xml結(jié)構(gòu)化的文檔被存儲(chǔ)在編碼目標(biāo)文件30中。
詞典數(shù)據(jù)31是用于數(shù)據(jù)的編碼和解碼的詞典的數(shù)據(jù)。
在本實(shí)施方式中,當(dāng)結(jié)構(gòu)化文檔被編碼時(shí),取決于結(jié)構(gòu)或結(jié)構(gòu)的屬性來切換編碼規(guī)則。詞典數(shù)據(jù)31是用于使用詞典來執(zhí)行編碼的編碼規(guī)則的詞典的數(shù)據(jù)。詞典數(shù)據(jù)31被設(shè)置用于使用詞典來執(zhí)行編碼的每個(gè)編碼規(guī)則。例如,在層次結(jié)構(gòu)化的文檔的層次中,詞典數(shù)據(jù)31被設(shè)置用于使用詞典來執(zhí)行編碼的每個(gè)層次或使用詞典來執(zhí)行編碼并且層次的數(shù)據(jù)屬性彼此類似的層次中的每一個(gè)層次。詞典數(shù)據(jù)31包括靜態(tài)詞典34和動(dòng)態(tài)詞典35。
靜態(tài)詞典34是取決于文檔的結(jié)構(gòu)或?qū)傩詠肀4媾c具有高出現(xiàn)頻率的模式相對(duì)應(yīng)的代碼的數(shù)據(jù)。動(dòng)態(tài)詞典35是取決于文檔的結(jié)構(gòu)或?qū)傩詠肀4媾c具有低出現(xiàn)頻率的模式相對(duì)應(yīng)的代碼的數(shù)據(jù)。預(yù)先設(shè)置靜態(tài)詞典34。根據(jù)需要?jiǎng)討B(tài)地創(chuàng)建動(dòng)態(tài)詞典35。
靜態(tài)詞典34根據(jù)出現(xiàn)在對(duì)應(yīng)層次中的字符串的特性來存儲(chǔ)與字符串相對(duì)應(yīng)的代碼。例如,靜態(tài)詞典34存儲(chǔ)與通常出現(xiàn)在對(duì)應(yīng)層次中的字符串或模式例如數(shù)字相對(duì)應(yīng)的代碼。靜態(tài)詞典34存儲(chǔ)已經(jīng)與短代碼相關(guān)聯(lián)的對(duì)應(yīng)層次中的具有高出現(xiàn)頻率的模式。例如,人體溫度通常落在35.0℃至42.0℃的范圍內(nèi)并且以高出現(xiàn)頻率位于36.0℃附近。因此,例如,與體溫的層次相對(duì)應(yīng)的靜態(tài)詞典34存儲(chǔ)已經(jīng)與代碼相關(guān)聯(lián)的數(shù)值35.0至42.0,并且存儲(chǔ)已經(jīng)被分配有短代碼的約36.0。在本實(shí)施方式中,以詞為單位對(duì)出現(xiàn)在概述中的字符串進(jìn)行編碼。例如,在本實(shí)施方式中,分析一般文檔,從而將詞分類成具有相對(duì)高的出現(xiàn)頻率的高頻詞和具有相對(duì)低的出現(xiàn)頻率的低頻詞。例如,高頻詞是出現(xiàn)頻率的降序中從頂部到預(yù)定排序的基本詞,而低頻詞是從預(yù)定排序到底部的基本詞。高頻詞預(yù)先被分配有短代碼,并且高頻詞和所分配的代碼彼此相關(guān)聯(lián)并被存儲(chǔ)在靜態(tài)詞典34中。例如,高頻詞預(yù)先被分配有2字節(jié)(16位)代碼,并且所分配的代碼被預(yù)先存儲(chǔ)在靜態(tài)詞典34中。當(dāng)?shù)皖l詞出現(xiàn)時(shí),低頻詞動(dòng)態(tài)地被分配代碼,并且所分配的代碼被存儲(chǔ)在動(dòng)態(tài)詞典35中。也就是說,針對(duì)高頻詞預(yù)先登記代碼,并且動(dòng)態(tài)地將代碼分配并存儲(chǔ)在用于低頻詞的動(dòng)態(tài)詞典35中。在概述中出現(xiàn)的字符串或模式例如數(shù)字被確定為特定模式的情況下,特定模式與代碼彼此相關(guān)聯(lián)并且預(yù)先被存儲(chǔ)在與概述的層次相對(duì)應(yīng)的靜態(tài)詞典34中。
動(dòng)態(tài)詞典35是根據(jù)出現(xiàn)在對(duì)應(yīng)層次中的字符串的特性來保存與動(dòng)態(tài)分配的代碼有關(guān)的各種信息的數(shù)據(jù)。例如,與概述的層次相對(duì)應(yīng)的動(dòng)態(tài)詞典35存儲(chǔ)動(dòng)態(tài)地被分配至具有低出現(xiàn)頻率的模式例如低頻詞的代碼。
圖4是圖示了代碼的分配的示例的示圖。圖4圖示了2字節(jié)(16位)代碼的分配的示例。上面部分中并且橫向方向上的項(xiàng)指示采用0到f的十六進(jìn)制符號(hào)的第一字節(jié),并且“*”指示第二字節(jié)。例如,“1*h”指示第一字節(jié)是采用二進(jìn)制符號(hào)的“00000001”。左側(cè)處并且縱向方向上的項(xiàng)指示采用0到f的十六進(jìn)制符號(hào)的第二字節(jié),并且“*”指示第一字節(jié)。例如,“*2h”指示第二字節(jié)是采用二進(jìn)制符號(hào)的“00000010”。
圖4圖示了與對(duì)應(yīng)于縱向方向上的項(xiàng)和橫向方向上的項(xiàng)的區(qū)域中的代碼相對(duì)應(yīng)的模式。例如,對(duì)于代碼“0*h”和“1*h”而言,相同的代碼對(duì)應(yīng)于每個(gè)層次中的相同的控制代碼。對(duì)于代碼“2*h”到“5*h”而言,相同的代碼對(duì)應(yīng)于每個(gè)層次中的相同標(biāo)簽。對(duì)于代碼“6*h”到“f*h”而言,可以將代碼單獨(dú)地分配至每個(gè)層次中的模式。例如,在以詞為單位對(duì)字符串進(jìn)行編碼的情況下,代碼“6*h”到“9*h”被分配至預(yù)定的高頻詞。對(duì)于代碼“a*h”到“f*h”而言,在低頻詞出現(xiàn)時(shí),動(dòng)態(tài)地分配代碼?!癳*h”和“f*h”是3字節(jié)代碼,以便處理代碼的缺少。
詞典數(shù)據(jù)31被設(shè)置在使用詞典來執(zhí)行編碼的每個(gè)層次中或使用詞典來執(zhí)行編碼并且層次的數(shù)據(jù)屬性彼此類似的層次中的每一個(gè)層次中,并且對(duì)于代碼“6*h”到“f*h”而言,字符串和代碼彼此相關(guān)聯(lián),并且根據(jù)出現(xiàn)在層次中的字符串的特性而被存儲(chǔ)。
詞典數(shù)據(jù)31可以能夠向標(biāo)簽動(dòng)態(tài)地分配代碼。圖5是圖示了代碼的分配的示例的示圖。在圖5的示例中,對(duì)于代碼“5*h”而言,第一字節(jié)能夠動(dòng)態(tài)地在特定層次中分配作為標(biāo)簽的代碼。
返回到圖3,編碼數(shù)據(jù)32是通過對(duì)編碼目標(biāo)數(shù)據(jù)30進(jìn)行編碼而提供的數(shù)據(jù)。索引33是通過存儲(chǔ)出現(xiàn)在編碼字符串中的模式的出現(xiàn)數(shù)目而提供的數(shù)據(jù)。例如,索引33被設(shè)置用于每個(gè)編碼規(guī)則,并且將編碼字符串與出現(xiàn)模式的出現(xiàn)數(shù)目和出現(xiàn)文件的文件編號(hào)相關(guān)聯(lián),并且存儲(chǔ)編碼字符串與出現(xiàn)模式的出現(xiàn)數(shù)目和出現(xiàn)文件的文件編號(hào)。
控制單元21是控制編碼裝置10的裝置。對(duì)于控制單元21而言,可以采用電子電路例如中央處理單元(cpu)或微處理單元(mpu)或集成電路例如專用集成電路(asic)或現(xiàn)場(chǎng)可編程門陣列(fpga)??刂茊卧?1包括用于存儲(chǔ)限定各個(gè)處理步驟的程序和控制數(shù)據(jù)并且從而執(zhí)行各種處理的內(nèi)部存儲(chǔ)器。當(dāng)各種程序進(jìn)行操作時(shí),控制單元21用作各種處理單元。例如,控制單元21包括編碼處理單元40、文件搜索單元50和解碼處理單元60。
編碼處理單元40讀取存儲(chǔ)在編碼目標(biāo)文件30中的結(jié)構(gòu)化文檔,并且根據(jù)針對(duì)與文檔結(jié)構(gòu)相對(duì)應(yīng)的層次結(jié)構(gòu)的編碼規(guī)則來創(chuàng)建通過對(duì)讀取的文檔進(jìn)行編碼而提供的編碼數(shù)據(jù)32。編碼處理單元40包括識(shí)別單元41、編碼單元42和創(chuàng)建單元43。
識(shí)別單元41執(zhí)行各種識(shí)別。例如,識(shí)別單元41識(shí)別存儲(chǔ)在編碼目標(biāo)文件30中的xml文檔的文檔結(jié)構(gòu)。例如,在限定xml的模式以便與編碼目標(biāo)文件30相對(duì)應(yīng)的情況下,識(shí)別單元41基于與編碼目標(biāo)文件30相對(duì)應(yīng)的模式來識(shí)別文檔結(jié)構(gòu)。
圖6是圖示了模式的一般配置的示圖。在xml文檔中,指示文檔結(jié)構(gòu)的xml模式70被限定。xml模式70描述了對(duì)xml文檔的文檔結(jié)構(gòu)的限定以及對(duì)模式語言中的終端元素的類型和約束的限定。在圖6的示例中,對(duì)于結(jié)構(gòu)限定而言,描述了指示文檔結(jié)構(gòu)、對(duì)標(biāo)簽的約束等的標(biāo)簽的嵌套關(guān)系。在圖6的示例中,對(duì)于終端元素的類型和約束而言,描述了要被存儲(chǔ)的字符串的數(shù)據(jù)類型、數(shù)值的最大值和最小值、串(字符串)的長度、可用字符以及字符串是否用作例如男性、女性等的選擇類型。編碼目標(biāo)文件30根據(jù)對(duì)xml模式70的限定來以xml存儲(chǔ)文檔。在圖6的示例中,xml文檔描述了第一行上的字符代碼,并且具有與xml模式70相對(duì)應(yīng)的文檔結(jié)構(gòu)的文檔被存儲(chǔ)。xml模式70可以靈活地限定文檔結(jié)構(gòu),并且還可以執(zhí)行對(duì)能夠改變編碼目標(biāo)文件30中的標(biāo)簽的數(shù)目的限定。例如,編碼目標(biāo)文件30a還可以具有在x標(biāo)簽下存在10個(gè)y標(biāo)簽的文檔結(jié)構(gòu),并且編碼目標(biāo)文件30b也可以具有在x標(biāo)簽下存在20個(gè)y標(biāo)簽的文檔結(jié)構(gòu)。
在xml模式70被限定以便與編碼目標(biāo)文件30相對(duì)應(yīng)的情況下,識(shí)別單元41基于xml模式70來識(shí)別文檔結(jié)構(gòu)。識(shí)別單元41可以分析存儲(chǔ)在編碼目標(biāo)文件30中的文檔,以識(shí)別文檔結(jié)構(gòu)。
編碼單元42執(zhí)行對(duì)存儲(chǔ)在編碼目標(biāo)文件30中的文檔的編碼。例如,編碼單元42從編碼目標(biāo)文件30讀取具有由識(shí)別單元41識(shí)別的文檔結(jié)構(gòu)的xml文檔。編碼單元42根據(jù)針對(duì)與文檔結(jié)構(gòu)相對(duì)應(yīng)的層次結(jié)構(gòu)的編碼規(guī)則來對(duì)所讀取的文檔進(jìn)行編碼。例如,編碼單元42連續(xù)地向出現(xiàn)在所讀取的文檔中的標(biāo)簽分配代碼,以執(zhí)行對(duì)所讀取的文檔的編碼。在出現(xiàn)在文檔結(jié)構(gòu)中的標(biāo)簽被限定的情況下,預(yù)先存儲(chǔ)用于具有已經(jīng)彼此相關(guān)聯(lián)的標(biāo)簽和代碼的標(biāo)簽的詞典數(shù)據(jù),并且編碼單元42可以使用用于標(biāo)簽的詞典數(shù)據(jù),以對(duì)出現(xiàn)在所讀取文檔中的標(biāo)簽進(jìn)行編碼。文檔結(jié)構(gòu)中的具有高出現(xiàn)頻率的一些標(biāo)簽被存儲(chǔ)在用于標(biāo)簽的詞典數(shù)據(jù)中,并且編碼單元42可以使用用于標(biāo)簽的詞典數(shù)據(jù),以對(duì)具有高出現(xiàn)頻率的一些標(biāo)簽進(jìn)行編碼,并且連續(xù)地向其他標(biāo)簽分配代碼,以執(zhí)行編碼。
在本文中,結(jié)構(gòu)化文檔包括具有通過由標(biāo)簽來界定文檔元素而指示的文檔結(jié)構(gòu)的文檔以及具有由標(biāo)簽在文檔的一部分上提供的元數(shù)據(jù)的文檔。
圖7a是圖示了具有由標(biāo)簽指示的文檔結(jié)構(gòu)的文檔的示例的示圖。在圖7a的示例中,“概述”和“正文”由示例1的文檔中的標(biāo)簽來限定。對(duì)于示例1的文檔而言,圖示了存儲(chǔ)與由標(biāo)簽界定的部分“概述”和“正文”中的每一個(gè)中的內(nèi)容相對(duì)應(yīng)的字符串(文本)的文檔。在示例2的文檔中,“專利”由標(biāo)簽來限定,并且“標(biāo)題”,“對(duì)象”和“優(yōu)點(diǎn)”以低于“專利”的級(jí)別而被限定。對(duì)于示例2的文檔而言,圖示了存儲(chǔ)與由標(biāo)簽界定的部分“標(biāo)題”、“對(duì)象”和“優(yōu)點(diǎn)”中的每一個(gè)中的內(nèi)容相對(duì)應(yīng)的字符串的文檔。
編碼單元42根據(jù)常見編碼規(guī)則來對(duì)標(biāo)簽進(jìn)行編碼。對(duì)于示例1的文檔而言,根據(jù)常見編碼規(guī)則來對(duì)標(biāo)簽“概述”和“正文”進(jìn)行編碼。對(duì)于示例2的文檔而言,根據(jù)常見編碼規(guī)則來對(duì)標(biāo)簽“專利”、“標(biāo)題”、“對(duì)象”和“優(yōu)點(diǎn)”進(jìn)行編碼。
編碼單元42根據(jù)與每個(gè)層次相對(duì)應(yīng)的編碼規(guī)則來對(duì)由標(biāo)簽界定的部分中的字符串進(jìn)行編碼。例如,編碼單元42通過使用與每個(gè)層次相對(duì)應(yīng)的詞典數(shù)據(jù)31來對(duì)由標(biāo)簽界定的部分中的字符串進(jìn)行編碼。例如,在與層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34或動(dòng)態(tài)詞典35中已經(jīng)登記出現(xiàn)在字符串中的詞的情況下,編碼單元42將出現(xiàn)的詞編碼成登記在靜態(tài)詞典34或動(dòng)態(tài)詞典35中的代碼。在出現(xiàn)在字符串中的詞沒有被登記在與層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34或動(dòng)態(tài)詞典35中的情況下,編碼單元42動(dòng)態(tài)地向該詞分配代碼,以便出現(xiàn)的詞被編碼成所分配的代碼。編碼單元42將出現(xiàn)的詞與所分配的代碼相互關(guān)聯(lián),并且將出現(xiàn)的詞和所分配的代碼登記在動(dòng)態(tài)詞典35中。因此,然后,通過在詞出現(xiàn)時(shí)使用動(dòng)態(tài)詞典35來將登記在動(dòng)態(tài)詞典35中的詞編碼成相同的代碼。編碼單元42可以根據(jù)相同的編碼規(guī)則來對(duì)具有類似的數(shù)據(jù)屬性的層次中的字符串進(jìn)行編碼。因此,編碼單元42可以基于相同的詞典數(shù)據(jù)31來對(duì)具有類似的數(shù)據(jù)屬性的層次中的字符串進(jìn)行編碼。
圖7b是圖示了具有通過標(biāo)簽在文檔的一部分上提供的元數(shù)據(jù)的文檔的示例的示圖。在圖7b的示例中,示例3的文檔說明了以下情況:通過標(biāo)簽來在文檔“這是到aaa的鏈接”中的部分“鏈接”上提供鏈接目的地的url作為元數(shù)據(jù)。示例4的文檔說明了以下情況:文檔“因?yàn)閎bb被抱怨,所以ccc被懷疑并且ddd被執(zhí)行”中的指示醫(yī)療狀況的部分“bbb”、指示疾病名稱的部分“ccc”以及指示藥物名稱的部分“ddd”通過標(biāo)簽被提供作為元數(shù)據(jù)。示例5的文檔說明了以下情況:文檔“suzuki將在2015年3月6日在大阪市被會(huì)見”中的指示個(gè)人名稱的部分“suzuki”、指示地點(diǎn)名稱的部分“大阪市”以及指示日期的“2015年3月6日”通過標(biāo)簽被提供作為元數(shù)據(jù)。
編碼單元42根據(jù)常見編碼規(guī)則來對(duì)標(biāo)簽進(jìn)行編碼。對(duì)于示例3的文檔而言,通過常見編碼規(guī)則來對(duì)標(biāo)簽“鏈接”進(jìn)行編碼。對(duì)于示例4的文檔而言,根據(jù)常見編碼規(guī)則對(duì)標(biāo)簽“醫(yī)療狀況”、“疾病名稱”和“藥品名稱”進(jìn)行編碼。對(duì)于示例5的文檔而言,根據(jù)常見編碼規(guī)則來對(duì)標(biāo)簽“個(gè)人名稱”,“地點(diǎn)名稱”和“日期”進(jìn)行編碼。編碼單元42根據(jù)針對(duì)每個(gè)層次的編碼規(guī)則來對(duì)由標(biāo)簽界定的部分上的字符串進(jìn)行編碼。例如,編碼單元42通過使用與每個(gè)層次相對(duì)應(yīng)的詞典數(shù)據(jù)31來對(duì)由標(biāo)簽界定的部分上的字符串進(jìn)行編碼。
圖8a是圖示了編碼的示例的示圖。例如,圖8a的示例說明了對(duì)字符串?dāng)?shù)據(jù)(其為以比標(biāo)簽“a”更低的級(jí)別而被限定的標(biāo)簽“b”)進(jìn)行編碼的示例。在圖8a的示例中,通過對(duì)字符串?dāng)?shù)據(jù)進(jìn)行編碼而提供的代碼被存儲(chǔ)在標(biāo)簽“a”的代碼與標(biāo)簽“b”的代碼之間。在圖8a的示例中,通過將起始標(biāo)簽的代碼與指示標(biāo)簽的結(jié)束的代碼組合來提供用于標(biāo)簽“a”或標(biāo)簽“b”的結(jié)束標(biāo)簽的代碼。
圖8b是圖示了編碼的示例的示圖。圖8b的示例說明了對(duì)字符串?dāng)?shù)據(jù)(其為文檔“suzuki將在大阪市被會(huì)見”中的指示地點(diǎn)名稱的部分“大阪市”以及指示個(gè)人名稱的部分“suzuki”)進(jìn)行編碼的示例,其中,文檔“suzuki將在大阪市被會(huì)見”中的指示地點(diǎn)名稱的部分“大阪市”以及指示個(gè)人名稱的部分“suzuki”通過標(biāo)簽被提供作為元數(shù)據(jù)。在圖8b的示例中,“大阪市”被編碼成地點(diǎn)名稱的起始代碼“25h”與結(jié)束代碼“20h”和“25h”之間的“b0h”?!皊uzuki”被編碼成個(gè)人名稱的起始代碼“26h”與結(jié)束代碼“20h”和“26h”之間的“b0h”。
編碼單元42可以向不同層次中的不同字符串分配相同的代碼,并且因此可以在每個(gè)層次中將字符串轉(zhuǎn)變成短代碼。例如,在圖8b的示例中,“大阪”和“suzuki”二者皆被轉(zhuǎn)變成相同的“b0h”。因此,編碼單元42可以在每個(gè)層次中將字符串轉(zhuǎn)變成短代碼,并且可以將整個(gè)編碼目標(biāo)文件30轉(zhuǎn)變成短代碼。
編碼單元42可以取決于字符串的屬性或范圍而在不使用詞典數(shù)據(jù)31的情況下對(duì)由標(biāo)簽界定的部分上的字符串進(jìn)行編碼。例如,在由標(biāo)簽界定的部分上的字符串是指示“0”到“255”的范圍內(nèi)的數(shù)值的字符串的情況下,編碼單元42可以將指示“0”到“255”的范圍內(nèi)的數(shù)值的字符串編碼成1字節(jié)整數(shù)型(例如int類型)代碼。也就是說,在字符串指示數(shù)值的情況下,編碼單元42可以將字符串編碼成具有與數(shù)值的范圍相對(duì)應(yīng)的數(shù)據(jù)類型的代碼。因?yàn)楸硎緮?shù)值的字符串被編碼成具有數(shù)值的數(shù)據(jù)類型的代碼,所以即使在字符串的編碼狀態(tài)下也可以執(zhí)行各種操作例如數(shù)值的比較或求和。
在本文中,在xml等的結(jié)構(gòu)化文檔中,上下文由標(biāo)簽來限定。結(jié)構(gòu)化文檔的上下文由標(biāo)簽來限定,并且通過上下文來確定與數(shù)據(jù)處理相關(guān)聯(lián)的元素。例如,確定與詞典相關(guān)聯(lián)的元素例如數(shù)據(jù)的類型或值范圍或文檔的成分(關(guān)于語言、日語詞、英語詞或以另一語言的詞)。例如,確定可以如何使用數(shù)據(jù)內(nèi)容,即使用數(shù)據(jù)內(nèi)容的領(lǐng)域例如搜索或挖掘文本或者數(shù)值的平均值、總值或頻率分布。如圖7a所示,具有由標(biāo)簽指示的文檔結(jié)構(gòu)的文檔包括通過以下而被識(shí)別的上下文:不僅跟蹤單個(gè)組的標(biāo)簽而且還以從層次的頂層開始的順序來跟蹤層次。例如,在<a><總數(shù)>t</總數(shù)></a>中,“t”指示a的總數(shù)。如圖7b所示,具有通過標(biāo)簽提供在文檔的一部分上的元數(shù)據(jù)的文檔包括由單個(gè)組的標(biāo)簽圍住的區(qū)域中的除了層次以外的附加上下文。例如,<地點(diǎn)名稱>大阪市</地點(diǎn)名稱>指示“大阪市”是地點(diǎn)名稱。因此,編碼單元42根據(jù)適合于由標(biāo)簽限定的上下文的編碼規(guī)則來對(duì)由標(biāo)簽界定的部分上的字符串進(jìn)行編碼,并且從而可以減少使用編碼單元42的處理量。
編碼單元42存儲(chǔ)被存儲(chǔ)在編碼目標(biāo)文件30中的文檔的編碼數(shù)據(jù)作為編碼數(shù)據(jù)32。
創(chuàng)建單元43針對(duì)每個(gè)編碼規(guī)則創(chuàng)建指示出現(xiàn)在編碼字符串中的模式的索引33。例如,創(chuàng)建單元43連續(xù)地向已被編碼的編碼目標(biāo)文件30提供文件編號(hào)。創(chuàng)建單元43創(chuàng)建與已被編碼的編碼目標(biāo)文件30的文件編號(hào)相關(guān)聯(lián)的索引33,該索引33存儲(chǔ)出現(xiàn)在編碼目標(biāo)文件30中的模式例如數(shù)值或詞的出現(xiàn)數(shù)目。
在本文中,將描述編碼的流程。圖9是示意性地圖示了編碼的流程的示圖。編碼裝置10的編碼處理單元40讀取存儲(chǔ)在編碼目標(biāo)文件30中的文檔并且識(shí)別文檔的文檔結(jié)構(gòu)。編碼處理單元40根據(jù)針對(duì)與文檔結(jié)構(gòu)相對(duì)應(yīng)的層次結(jié)構(gòu)的編碼規(guī)則來對(duì)所讀取的文檔進(jìn)行編碼。例如,在出現(xiàn)在標(biāo)簽或字符串中的詞已被登記在靜態(tài)詞典34或動(dòng)態(tài)詞典35中的情況下,編碼處理單元40將出現(xiàn)的詞編碼成登記在靜態(tài)詞典34或動(dòng)態(tài)詞典35中的代碼。在出現(xiàn)在標(biāo)簽或字符串中的詞未被登記在靜態(tài)詞典34或動(dòng)態(tài)詞典35中的情況下,編碼處理單元40動(dòng)態(tài)地向該詞分配代碼并且將該標(biāo)簽或出現(xiàn)的詞編碼成所分配的代碼。編碼處理單元40使標(biāo)簽或出現(xiàn)的詞與所分配的代碼彼此相關(guān)聯(lián),并且將標(biāo)簽或出現(xiàn)的詞與所分配的代碼登記在動(dòng)態(tài)詞典35中。
編碼處理單元40將存儲(chǔ)在編碼目標(biāo)文件30中的文檔的編碼數(shù)據(jù)存儲(chǔ)為編碼數(shù)據(jù)32。在圖9的示例中,標(biāo)簽“概述”和“正文”的層次中的字符串中的每一個(gè)已被編碼。編碼處理單元40創(chuàng)建與編碼目標(biāo)文件30的文件編號(hào)相關(guān)聯(lián)的索引33,該索引33存儲(chǔ)出現(xiàn)在編碼目標(biāo)文件30中的模式例如數(shù)值或詞的出現(xiàn)數(shù)目。在圖9的示例中,作為與標(biāo)簽“概述”和“正文”的層次相關(guān)聯(lián)的出現(xiàn)數(shù)目的總數(shù)的結(jié)果而創(chuàng)建索引33a和33b。在編碼數(shù)據(jù)32被移動(dòng)到另一裝置的情況下,編碼裝置10還移動(dòng)與編碼數(shù)據(jù)32和索引33a和33b相關(guān)聯(lián)而創(chuàng)建的動(dòng)態(tài)詞典35。
返回到圖3,文件搜索單元50根據(jù)指定的搜索條件來搜索文件。文件搜索單元50包括接受單元51、搜索單元52和輸出單元53。在下文中,將詳細(xì)描述文件搜索單元50的每個(gè)部件。
接受單元51接受搜索條件。例如,接受單元51提供接受作為搜索條件的關(guān)鍵詞或?qū)哟蔚妮斎氲妮斎虢涌诶绮僮髌聊?,并且接受單?1接受作為搜索條件的字符串或?qū)哟蔚妮斎搿?/p>
搜索單元52搜索滿足搜索條件的文件。例如,搜索單元52參考與搜索條件的層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來識(shí)別與搜索條件的關(guān)鍵詞相對(duì)應(yīng)的代碼。搜索單元52參考與搜索條件的層次相對(duì)應(yīng)的索引33來識(shí)別其中出現(xiàn)有識(shí)別的代碼的文件的文件編號(hào)。在搜索條件的關(guān)鍵詞包括多個(gè)詞或數(shù)值的情況下,搜索單元52將關(guān)鍵詞分解成詞或數(shù)值,以對(duì)詞或數(shù)值進(jìn)行編碼,并且識(shí)別與詞或數(shù)值中的每一個(gè)相對(duì)應(yīng)的代碼。搜索單元52參考與搜索條件的層次相對(duì)應(yīng)的索引33來識(shí)別具有與出現(xiàn)的詞或數(shù)值中的每一個(gè)相對(duì)應(yīng)的代碼的文件的文件編號(hào)。在本文中,對(duì)于索引33而言,可能不能確認(rèn)包括在搜索條件的字符串中的多個(gè)詞或數(shù)值的出現(xiàn)次序是否正確。因此,例如,搜索單元50搜索搜索條件的字符串是否被包括在具有識(shí)別的文件編號(hào)的編碼目標(biāo)文件30中。搜索單元52可以對(duì)與識(shí)別的文件編號(hào)相對(duì)應(yīng)的編碼數(shù)據(jù)32的搜索條件的層次進(jìn)行解碼,以搜索搜索條件的字符串是否包括在其中。
圖10a是圖示了搜索的示例的示圖。圖10a的示例說明了指定文件是否包括“概述”中的關(guān)鍵詞“xxx”,以及是否包括“正文”中的關(guān)鍵詞“yyy”的情況。搜索單元52參考與“概述”的層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來識(shí)別與“xxx”相對(duì)應(yīng)的代碼。搜索單元52參考與“概述”的層次相對(duì)應(yīng)的索引33來識(shí)別與“xxx”相對(duì)應(yīng)的代碼的出現(xiàn)是否被記錄在指定文件的文件編號(hào)中。搜索單元52參考與“正文”的層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來識(shí)別與“yyy”相對(duì)應(yīng)的代碼。搜索單元52參考與“正文”的層次相對(duì)應(yīng)的索引33來識(shí)別與“yyy”相對(duì)應(yīng)的代碼的出現(xiàn)是否被記錄在指定文件的文件編號(hào)中。在與“xxx”相對(duì)應(yīng)的代碼以及與yyy”相對(duì)應(yīng)的代碼的出現(xiàn)的記錄被包括在指定文件的文件編號(hào)中的情況下,搜索單元52搜索關(guān)鍵詞“xxx”是否被包括在“概述”中以及關(guān)鍵詞“yyy”是否被包括在“正文”中。
圖10b是圖示了搜索的示例的示圖。圖10b的示例說明了搜索包括“概述”中的關(guān)鍵詞“zzz”的文件的情況。搜索單元52參照與“概述”的層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來識(shí)別與“zzz”相對(duì)應(yīng)的代碼。搜索單元52參考與“概述”的層次相對(duì)應(yīng)的索引33來識(shí)別具有與其中出現(xiàn)的“zzz”相對(duì)應(yīng)的代碼的文件的文件編號(hào)。
因此,文件搜索單元50可以在不對(duì)編碼數(shù)據(jù)32進(jìn)行解碼的情況下執(zhí)行搜索,并且因此可以減少用于搜索的處理量,以便可以減少用于搜索的處理時(shí)間。
在沒有創(chuàng)建索引33的情況下,文件搜索單元50僅對(duì)指定的層次進(jìn)行解碼,以搜索指定的字符串。在這種情況下,文件搜索單元50也可以通過僅對(duì)指定的層次進(jìn)行解碼來執(zhí)行搜索,并且因此,與對(duì)整個(gè)編碼數(shù)據(jù)進(jìn)行編碼的情況相比,可以減少使用文件搜索單元50的處理量,以便可以減少用于搜索的處理時(shí)間。
輸出單元53執(zhí)行對(duì)搜索結(jié)果的輸出。例如,在由搜索單元52識(shí)別文件編號(hào)的情況下,輸出單元53輸出具有所識(shí)別的文件編號(hào)的文件的文件名稱,作為搜索的結(jié)果。另一方面,在搜索單元52未識(shí)別文件編號(hào)的情況下,輸出單元53不輸出對(duì)應(yīng)文件,作為搜索的結(jié)果。
返回到圖3,解碼處理單元60對(duì)編碼數(shù)據(jù)32進(jìn)行解碼。解碼處理單元60包括接受單元61和解碼單元62。在下文中,將詳細(xì)描述解碼處理單元60的每個(gè)部件。
接受單元61接受解碼的指令。例如,接受單元61提供接受對(duì)編碼數(shù)據(jù)32(其為用于解碼的目標(biāo))的指定的輸入接口例如操作屏幕,并且接受對(duì)編碼數(shù)據(jù)32(其為用于解碼的目標(biāo))的指定。接受單元61可以接受對(duì)用于解碼的層次的指定以及作為用于解碼的目標(biāo)的編碼數(shù)據(jù)32。
解碼單元62對(duì)已被指定的編碼數(shù)據(jù)32進(jìn)行解碼。例如,解碼單元62根據(jù)針對(duì)層次的編碼規(guī)則來對(duì)編碼數(shù)據(jù)32的每個(gè)層次中的代碼數(shù)據(jù)進(jìn)行解碼。例如,解碼單元62通過使用與層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來將編碼數(shù)據(jù)32的每個(gè)層次中的代碼數(shù)據(jù)解碼成字符串。例如,解碼單元62根據(jù)常見編碼規(guī)則來對(duì)標(biāo)簽的代碼數(shù)據(jù)進(jìn)行解碼。解碼單元62參考與層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來將由標(biāo)簽界定的每個(gè)層次中的代碼數(shù)據(jù)解碼成字符串。在由接受單元61接受對(duì)用于解碼的層次的指定的情況下,解碼單元62可以僅對(duì)指定層次中的代碼數(shù)據(jù)進(jìn)行解碼。
處理流程
將描述根據(jù)本實(shí)施方式的用于對(duì)編碼目標(biāo)文件30進(jìn)行編碼的編碼裝置10的編碼處理的流程。圖11是圖示了編碼處理的步驟的示例的流程圖。這樣的編碼處理在預(yù)定的定時(shí)例如在執(zhí)行預(yù)定操作(其指定編碼目標(biāo)文件30并且指示開始對(duì)編碼目標(biāo)文件30的編碼)時(shí)的定時(shí)處被執(zhí)行。
如圖11所示,識(shí)別單元41識(shí)別存儲(chǔ)在編碼目標(biāo)文件30中的結(jié)構(gòu)化文檔的文檔結(jié)構(gòu)(s10)。編碼單元42根據(jù)針對(duì)與文檔結(jié)構(gòu)相對(duì)應(yīng)的層次結(jié)構(gòu)的編碼規(guī)則來對(duì)具有所識(shí)別的文檔結(jié)構(gòu)的文檔的每個(gè)層次中的字符串進(jìn)行編碼(s11)。例如,編碼單元42根據(jù)常見編碼規(guī)則來對(duì)標(biāo)簽進(jìn)行編碼。編碼單元42根據(jù)針對(duì)每個(gè)層次的編碼規(guī)則來對(duì)由標(biāo)簽界定的部分上的字符串進(jìn)行編碼。編碼單元42將編碼數(shù)據(jù)存儲(chǔ)在編碼數(shù)據(jù)32中(s12)。創(chuàng)建單元43針對(duì)每個(gè)編碼規(guī)則創(chuàng)建指示在編碼字符串中出現(xiàn)的模式的索引33(s13),并且處理結(jié)束。
接下來,將描述根據(jù)本實(shí)施方式的用于搜索滿足搜索條件的文件的編碼裝置10的搜索處理的流程。首先,將描述在沒有針對(duì)搜索條件指定層次的情況下的搜索處理的流程。圖12是圖示了搜索處理的步驟的示例的流程圖。這樣的搜索處理在預(yù)定定時(shí)例如在執(zhí)行預(yù)定操作(其指定搜索條件并指示開始搜索)時(shí)的定時(shí)處被執(zhí)行。
如圖12所示,搜索單元52參考詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來確定是否存在與搜索條件的關(guān)鍵詞相對(duì)應(yīng)的代碼(s20)。在不存在代碼的情況下(s20:否),搜索單元52將關(guān)鍵詞分解成詞或數(shù)值,以對(duì)詞或數(shù)值中的每一個(gè)進(jìn)行編碼,并且識(shí)別與詞或數(shù)值中的每一個(gè)相對(duì)應(yīng)的代碼(s21)。搜索單元52參考每個(gè)索引33來識(shí)別具有與其中出現(xiàn)的詞或數(shù)值中的每一個(gè)相對(duì)應(yīng)的代碼的文件的文件編號(hào)(s22)。搜索單元52搜索搜索條件的字符串是否被包括在具有所識(shí)別的文件編號(hào)的編碼目標(biāo)文件30中(s23)。
另一方面,在存在代碼的情況下(s20:是),搜索單元52參考索引33來識(shí)別其中出現(xiàn)有識(shí)別代碼的文件的文件編號(hào)(s24)。
輸出單元53輸出搜索的結(jié)果,并且處理結(jié)束(s25)。例如,在搜索包括搜索條件的字符串的編碼目標(biāo)文件30的情況下或在編碼目標(biāo)文件30的文件編號(hào)由搜索單元52識(shí)別的情況下,輸出單元53輸出編碼目標(biāo)文件30的文件名稱。
接下來,將描述在針對(duì)搜索條件指定層次的情況下的搜索處理的流程。圖13是圖示了搜索處理的步驟的示例的流程圖。這樣的搜索處理在預(yù)定定時(shí)例如在執(zhí)行預(yù)定操作(其指定搜索條件并且指示開始搜索)時(shí)的定時(shí)處被執(zhí)行。
如圖13所示,搜索單元52參考詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來確定是否存在與搜索條件的關(guān)鍵詞相對(duì)應(yīng)的代碼(s30)。在不存在代碼的情況下(s30:否),搜索單元52將關(guān)鍵詞分解成詞或數(shù)值,以對(duì)詞或數(shù)值中的每一個(gè)進(jìn)行編碼,并且識(shí)別與詞或數(shù)值中的每一個(gè)相對(duì)應(yīng)的代碼(s31)。搜索單元52參考指定層次中的索引33來識(shí)別具有與其中出現(xiàn)的詞或數(shù)值中的每一個(gè)相對(duì)應(yīng)的代碼的文件的文件編號(hào)(s32)。搜索單元52搜索搜索條件的字符串是否被包括在具有所識(shí)別的文件編號(hào)的編碼目標(biāo)文件30中(s33)。
另一方面,在存在代碼的情況下(s30:是),搜索單元52參考指定層次中的索引33來識(shí)別其中出現(xiàn)有識(shí)別代碼的文件的文件編號(hào)(s34)。
輸出單元53輸出搜索的結(jié)果,并且處理結(jié)束(s35)。例如,在搜索包括搜索條件的字符串的編碼目標(biāo)文件30的情況下或在編碼目標(biāo)文件30的文件編號(hào)由搜索單元52識(shí)別的情況下,輸出單元53輸出編碼目標(biāo)文件30的文件名稱。
接下來,將描述根據(jù)本實(shí)施方式的用于對(duì)編碼數(shù)據(jù)32進(jìn)行解碼的編碼裝置10的解碼處理的流程。圖14是圖示了解碼處理的步驟的示例的流程圖。這種解碼處理在預(yù)定定時(shí)例如在執(zhí)行預(yù)定操作(其指定作為用于解碼的目標(biāo)的解碼數(shù)據(jù)32并且指示開始解碼)時(shí)的定時(shí)處被執(zhí)行。
解碼單元62從已被指定的編碼數(shù)據(jù)32讀取代碼數(shù)據(jù)(s40)。解碼單元62通過使用與層次相對(duì)應(yīng)的詞典數(shù)據(jù)31的靜態(tài)詞典34和動(dòng)態(tài)詞典35來將所讀取的代碼數(shù)據(jù)解碼成字符串(s41)。解碼單元62確定編碼數(shù)據(jù)32的讀取是否已經(jīng)完成(s42)。在未完成讀取的情況下(s42:否),執(zhí)行轉(zhuǎn)到s40。另一方面,在已經(jīng)完成讀取的情況下(s42:是),處理結(jié)束。優(yōu)點(diǎn)
如上所述,根據(jù)本實(shí)施方式的編碼裝置10識(shí)別結(jié)構(gòu)化文檔的文檔結(jié)構(gòu)。編碼裝置10采用針對(duì)與文檔結(jié)構(gòu)相對(duì)應(yīng)的層次結(jié)構(gòu)的編碼規(guī)則來對(duì)具有所識(shí)別的文檔結(jié)構(gòu)的文檔中的特定層次中的字符串進(jìn)行編碼。因此,編碼裝置10可以僅對(duì)特定層次部分中的代碼進(jìn)行解碼,并且因此可以減少使用編碼裝置10的處理量。
根據(jù)本實(shí)施方式的編碼裝置10根據(jù)常見編碼規(guī)則來對(duì)在文檔中限定文檔結(jié)構(gòu)的字符串進(jìn)行編碼。因此,編碼裝置10可以采用常見編碼規(guī)則來執(zhí)行解碼,以采用相同的編碼規(guī)則來恢復(fù)在文檔中限定文檔結(jié)構(gòu)的字符串,并且因此可以快速地識(shí)別文檔結(jié)構(gòu),以便可以提取特定層次中的數(shù)據(jù)。
根據(jù)本實(shí)施方式的編碼裝置10采用相同的編碼規(guī)則來對(duì)具有類似的數(shù)據(jù)屬性的層次中的字符串進(jìn)行編碼。因此,編碼裝置10可以通過相同的詞典數(shù)據(jù)31來對(duì)具有類似的數(shù)據(jù)屬性的層次中的字符串進(jìn)行編碼。
根據(jù)本實(shí)施方式的編碼裝置10根據(jù)與出現(xiàn)在特定層次中的字符串的特性相對(duì)應(yīng)的編碼規(guī)則來對(duì)特定層次中的字符串進(jìn)行編碼。因此,編碼裝置10可以采用與特定層次中的字符串的特性相對(duì)應(yīng)的編碼規(guī)則來對(duì)特定層次中的字符串進(jìn)行編碼。
在具有類似的數(shù)據(jù)屬性的單個(gè)層次或多個(gè)層次中,根據(jù)本實(shí)施方式的編碼裝置10根據(jù)將具有高出現(xiàn)頻率的模式轉(zhuǎn)變成短代碼的編碼規(guī)則來執(zhí)行編碼。因此,編碼裝置10可以以高壓縮率來對(duì)編碼目標(biāo)文件30進(jìn)行編碼。
根據(jù)本實(shí)施方式的編碼裝置10創(chuàng)建指示出現(xiàn)在編碼字符串中的模式的索引33。因此,編碼裝置10可以基于索引33來識(shí)別具有出現(xiàn)模式的編碼目標(biāo)文件30。
雖然上面已經(jīng)描述了與所公開的裝置相關(guān)的實(shí)施方式,但是所公開的技術(shù)可以以除了上述實(shí)施方式以外的各種不同的實(shí)施方式來實(shí)現(xiàn)。在下文中,將描述被包括在本發(fā)明中的其他實(shí)施方式。
例如,雖然在如上所述的實(shí)施方式中已經(jīng)描述了詞典數(shù)據(jù)31的靜態(tài)詞典34中預(yù)先存儲(chǔ)有與具有高出現(xiàn)頻率的模式相對(duì)應(yīng)的代碼的情況,但這并非限制性的。例如,可以通過文檔的每個(gè)層次中的分析來獲得每個(gè)出現(xiàn)模式(例如字符串中的詞或數(shù)字)的出現(xiàn)頻率,以便向具有高出現(xiàn)頻率的模式分配短代碼,以便對(duì)該模式進(jìn)行編碼。詞典數(shù)據(jù)31可以將出現(xiàn)的模式和所分配的代碼相互關(guān)聯(lián)并且存儲(chǔ)出現(xiàn)的模式和所分配的代碼。
雖然在上述實(shí)施方式中已經(jīng)描述了以層次為單位將代碼存儲(chǔ)在詞典數(shù)據(jù)31中的情況,但這不是限制性的。例如,可以使用常見詞典數(shù)據(jù)31。可以以層次為單位在詞典數(shù)據(jù)31中共同地登記并且管理代碼的一部分。圖15是圖示了代碼的分配的示例的示圖。圖15圖示了在以層次為單位在詞典數(shù)據(jù)31中共同地登記并且管理代碼的一部分的情況下的代碼的分配的示例。對(duì)于代碼“8*h”到“a*h”而言,在每個(gè)層次中共同地登記并且管理代碼。例如,通過常見詞典數(shù)據(jù)31來管理整個(gè)文件中的代碼可以是高效的。例如,作為數(shù)值的信息的na(非輸入)或空值(在字符串或數(shù)值中常見的無值)可以由另一值來表示。在這種情況下,可以通過常見詞典數(shù)據(jù)31來整體地管理代碼。即使在整體地管理代碼的情況下,0.0可以是針對(duì)數(shù)值的na,并且可以將-99.9分配到針對(duì)另一值的na。優(yōu)選的是,整體地管理在遍及整個(gè)文檔出現(xiàn)時(shí)的字符串的代碼。例如,在電子書的小說中的主要人物的名稱出現(xiàn)在概述、正文和評(píng)論中的情況下,優(yōu)選的是,整體地管理主要人物的名稱的代碼。另一方面,以層次為單位來管理代碼可以是高效的。例如,在以層次為單位來限定適當(dāng)?shù)姆秶那闆r下,優(yōu)選的是,以層次為單位來管理代碼。在偏離適當(dāng)?shù)姆秶那闆r下,執(zhí)行編碼成na或null。例如,在35.0至42.0的范圍內(nèi)準(zhǔn)備詞典數(shù)據(jù)31作為針對(duì)人體溫度的詞典。在34.8作為體溫出現(xiàn)的情況下,向體溫分配na或null,或者動(dòng)態(tài)地分配代碼以便編碼。在120.0到222.3的范圍內(nèi)準(zhǔn)備詞典數(shù)據(jù)31作為針對(duì)人體高度的詞典。在值231.2作為身高出現(xiàn)的情況下,向身高分配na或null,或者動(dòng)態(tài)地分配代碼以便編碼。
如附圖中所示的每個(gè)裝置的每個(gè)部件在功能上是概念性的,并且不要求如附圖中所示的那樣物理地被配置。也就是說,每個(gè)裝置中的分散或整體的特定狀態(tài)不限于附圖中所示的那樣,并且可以以下述這樣的方式來提供每個(gè)裝置的配置:可以取決于各種負(fù)載、用途等使其全部或一部分在功能上或物理上分散或集成在任意單元中。例如,作為識(shí)別單元41、編碼單元42、創(chuàng)建單元43、接受單元51、搜索單元52、輸出單元53、接受單元61和解碼單元62的編碼裝置10的各自的處理單元可以適當(dāng)?shù)乇患?。編碼裝置10的上面所提及的處理單元中的每一個(gè)的處理可以適當(dāng)?shù)乇环殖捎糜诙鄠€(gè)處理單元的處理。在每個(gè)處理單元中執(zhí)行的每個(gè)處理功能的全部或任何部分可以由cpu和由cpu分析并執(zhí)行或由基于有線邏輯的硬件實(shí)現(xiàn)的程序來實(shí)現(xiàn)。
編碼程序
還可以通過在計(jì)算機(jī)系統(tǒng)例如個(gè)人計(jì)算機(jī)或工作站中執(zhí)行預(yù)先準(zhǔn)備的程序來實(shí)現(xiàn)針對(duì)如上所述的實(shí)施方式所描述的各種處理。在下文中,將描述執(zhí)行具有與上述實(shí)施方式的功能相同的功能的程序的計(jì)算機(jī)系統(tǒng)的示例。首先,將描述用于執(zhí)行編碼處理的編碼程序。圖16是圖示了執(zhí)行編碼程序的計(jì)算機(jī)的示例的示圖。
如圖16所示,計(jì)算機(jī)400包括中央處理單元(cpu)410、硬盤驅(qū)動(dòng)器(hdd)420和隨機(jī)存取存儲(chǔ)器(ram)440。這些單元410至440中的每一個(gè)通過總線500相互連接。
hdd420預(yù)先存儲(chǔ)實(shí)現(xiàn)與如上所述的編碼裝置10的識(shí)別單元41、編碼單元42和創(chuàng)建單元43的功能類似的功能的編碼程序420a??梢赃m當(dāng)?shù)貏澐志幋a程序420a。
hdd420存儲(chǔ)各種信息。例如,hdd420存儲(chǔ)用于os或編碼的各種數(shù)據(jù)。
cpu410從hdd420讀取編碼程序420a,并且執(zhí)行編碼程序420a,以便執(zhí)行與實(shí)施方式的每個(gè)處理單元的操作類似的操作。也就是說,編碼程序420a執(zhí)行與識(shí)別單元41、編碼單元42和創(chuàng)建單元43的操作類似的操作。
不要求從開始起將如上所述的編碼程序420a存儲(chǔ)在hdd420中。
搜索程序
接下來,將描述用于搜索編碼數(shù)據(jù)32的搜索程序。圖17是圖示了執(zhí)行搜索程序的計(jì)算機(jī)的示例的示圖。與圖16的部分相同的部分將被設(shè)置有相同的符號(hào),以省略對(duì)相同部分的描述。
如圖17所示,hdd420預(yù)先存儲(chǔ)實(shí)現(xiàn)與如上所述的編碼裝置10的接受單元51、搜索單元52和輸出單元53的功能類似的功能的搜索程序420b??梢赃m當(dāng)?shù)貏澐炙阉鞒绦?20b。
hdd420存儲(chǔ)各種信息。例如,hdd420存儲(chǔ)用于os或搜索的各種數(shù)據(jù)。
cpu410從hdd420讀取搜索程序420b,并且執(zhí)行搜索程序420b,以便執(zhí)行與實(shí)施方式的每個(gè)處理單元的操作類似的操作。也就是說,搜索程序420b執(zhí)行與接受單元51、搜索單元52和輸出單元53的操作類似的操作。
也不要求從開始起將如上所述的搜索程序420b存儲(chǔ)在hdd420中。解碼程序
接下來,將描述用于對(duì)滿足搜索條件的文件進(jìn)行解碼的解碼程序。圖18是圖示了執(zhí)行解碼程序的計(jì)算機(jī)的示例的示圖。與圖16和圖17的部分相同的部分將被設(shè)置有相同的符號(hào),以省略對(duì)相同的部分的描述。
如圖18所示,hdd420預(yù)先存儲(chǔ)實(shí)現(xiàn)與如上所述的編碼裝置10的接受單元61和解碼單元62的功能類似的功能的解碼程序420c??梢赃m當(dāng)?shù)貏澐纸獯a程序420c。
hdd420存儲(chǔ)各種信息。例如,hdd420存儲(chǔ)用于os或解碼的各種數(shù)據(jù)。
cpu410從hdd420讀取解碼程序420c,并且執(zhí)行解碼程序420c,以便執(zhí)行與實(shí)施方式的每個(gè)處理單元的操作類似的操作。也就是說,解碼程序420c執(zhí)行與接受單元61和解碼單元62的操作類似的操作。
也不要求從開始起將如上所述的解碼程序420c存儲(chǔ)在hdd420中。
例如,編碼程序420a、搜索程序420b、解碼程序420c可以被存儲(chǔ)在被插入到計(jì)算機(jī)400中的“便攜式物理介質(zhì)”例如軟盤(fd)、cd-rom、dvd盤、磁光盤或ic卡中。計(jì)算機(jī)400可以從便攜式物理介質(zhì)讀取程序,并且執(zhí)行該程序。
程序被存儲(chǔ)在通過公共線路、互聯(lián)網(wǎng)、lan、wan等連接到計(jì)算機(jī)400的“另一計(jì)算機(jī)(或服務(wù)器)”等中。計(jì)算機(jī)400可以從另一計(jì)算機(jī)(或服務(wù)器)讀取程序,并且執(zhí)行該程序。
根據(jù)一個(gè)實(shí)施方式,提供了可以執(zhí)行與文檔結(jié)構(gòu)相對(duì)應(yīng)的編碼的優(yōu)點(diǎn)。