KR101750646B1 - 압축 장치, 압축 방법, 신장 장치, 신장 방법 및 정보 처리 시스템 - Google Patents

압축 장치, 압축 방법, 신장 장치, 신장 방법 및 정보 처리 시스템 Download PDF

Info

Publication number
KR101750646B1
KR101750646B1 KR1020157025611A KR20157025611A KR101750646B1 KR 101750646 B1 KR101750646 B1 KR 101750646B1 KR 1020157025611 A KR1020157025611 A KR 1020157025611A KR 20157025611 A KR20157025611 A KR 20157025611A KR 101750646 B1 KR101750646 B1 KR 101750646B1
Authority
KR
South Korea
Prior art keywords
data
compression
code
symbol
unit
Prior art date
Application number
KR1020157025611A
Other languages
English (en)
Other versions
KR20150119402A (ko
Inventor
마사히로 가타오카
마사노리 사카이
다카후미 오타
Original Assignee
후지쯔 가부시끼가이샤
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 후지쯔 가부시끼가이샤 filed Critical 후지쯔 가부시끼가이샤
Publication of KR20150119402A publication Critical patent/KR20150119402A/ko
Application granted granted Critical
Publication of KR101750646B1 publication Critical patent/KR101750646B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/146Coding or compression of tree-structured data
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3068Precoding preceding compression, e.g. Burrows-Wheeler transformation
    • H03M7/3071Prediction
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/70Type of the data to be coded, other than image and sound
    • H03M7/705Unicode

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

하나의 측면에 따르면, 데이터를 구성하는 단위 사이의 단락이 기호에 의해 표시되는 데이터의 압축에 있어서 압축율을 향상시키는 것을 목적으로 한다.
압축 장치가, 데이터를 구성하는 요소 중 하나인 제1 요소와, 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 제1 단락 기호와의 조합에 대응하는 하나의 압축 부호를, 상기 제1 요소와 대응시켜 기억하는 기억부와, 상기 데이터로부터 판독된 상기 제1 요소와 대응시켜 기억된 상기 압축 부호를, 상기 기억부로부터 취득하는 취득부와, 취득된 상기 압축 부호를, 상기 데이터의 압축 데이터를 저장하는 저장 영역에 기록하는 기록부를 포함한다.

Description

압축 장치, 압축 방법, 신장 장치, 신장 방법 및 정보 처리 시스템{COMPRESSION DEVICE, COMPRESSION METHOD, DECOMPRESSION DEVICE, DECOMPRESSION METHOD, AND INFORMATION PROCESSING SYSTEM}
데이터의 압축 기술 또는 신장 기술의 적어도 하나에 관한 것이다.
허프만 부호화나 산술 압축 등의 가변 길이 압축 부호를 이용한 압축 알고리즘에 따르면, 압축 대상 데이터 내의 문자 코드에 대응하는 압축 부호를 이용하여 압축 데이터가 생성된다. 또한, 허프만 부호화 등의 압축 알고리즘을 이용하여, 문자 코드의 조합인 단어에 대응시켜진 압축 부호를 할당하여 압축 데이터를 생성하는 압축 기술이 있다(예컨대, 특허문헌 1 등 참조).
특허문헌 : 일본 특허공개 2010-93414호 공보
특정 언어(예컨대, 영어나 독일어 등)에서는, 문서를 구성하는 문자열 중에 포함되는 스페이스 기호에 의해, 문서를 구성하는 단위인 단어의 단락이 나타내어진다. 전술한 압축 알고리즘에서는, 복수의 문자를 포함하는 단어에 대하여 하나의 압축 부호가 할당되는 한편, 스페이스 기호에 대하여도 압축 부호가 할당된다. 단어와 동등하게 스페이스 기호에도 압축 부호가 할당되기 때문에, 압축에 이용되는 압축 부호의 수가 많아져, 압축율이 저하되는 요인이 된다.
본 발명의 하나의 측면에 따르면, 데이터를 구성하는 단위 사이의 단락이 기호에 의해 나타내어지는 데이터의 압축에 있어서 압축율을 향상시키는 것을 목적으로 한다.
하나의 양태에 따르면, 압축 장치는, 데이터를 구성하는 요소 중 하나인 제1 요소와, 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 제1 단락 기호와의 조합에 대응하는 하나의 압축 부호를, 상기 제1 요소와 대응시켜 기억하는 기억부와, 상기 데이터로부터 판독된 상기 제1 요소와 대응시켜 기억된 상기 압축 부호를, 상기 기억부로부터 취득하는 취득부와, 취득한 상기 압축 부호를, 상기 데이터의 압축 데이터를 저장하는 저장 영역에 기록하는 기록부를 포함한다.
하나의 양태에 따르면, 신장 장치는, 데이터를 구성하는 요소 중 하나인 제1 요소와, 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 제1 단락 기호와의 조합을, 하나의 압축 부호와 대응시켜 기억하는 기억부와, 상기 데이터를 압축하여 얻어지는 압축 데이터로부터 판독된 상기 압축 부호에 대응하는 상기 조합을, 상기 기억부로부터 취득하는 취득부와, 취득된 상기 조합에 포함되는 상기 제1 요소 및 상기 제1 단락 기호 양쪽을, 상기 압축 데이터를 신장하여 얻어지는 신장 데이터의 저장 영역에 기록하는 기록부를 포함한다.
하나의 양태에 따르면, 정보 처리 시스템은, 기억 장치와 정보 처리 장치를 포함하고, 정보 처리 장치는, 데이터를 구성하는 요소 중 하나인 제1 요소와 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 단락 기호의 조합과, 하나의 압축 부호가 대응시켜진 변환 사전을 기억하는 기억부와, 상기 기억 장치로부터, 데이터를 압축하여 얻어지는 압축 데이터를 받는 수신부와, 상기 압축 데이터로부터 판독된 상기 압축 부호에 대응하는 상기 조합을, 상기 변환 사전으로부터 취득하는 제1 취득부와, 취득된 상기 조합에 포함되는 상기 제1 요소 및 상기 단락 기호 양쪽을, 상기 압축 데이터를 신장하여 얻어지는 신장 데이터의 제1 저장 영역에 기록하는 제1 기록부와, 상기 제1 저장 영역에 기록된 상기 신장 데이터에 대하여 정보 처리를 하는 처리부와, 상기 정보 처리가 행해진 상기 신장 데이터로부터 판독된 상기 제1 요소에 대응시켜 기억된 상기 압축 부호를, 상기 변환 사전으로부터 취득하는 제2 취득부와, 취득된 상기 압축 부호를, 상기 데이터의 압축 데이터를 저장하는 제2 저장 영역에 기록하는 제1 기록부와, 상기 제2 저장 영역에 기록된 압축 데이터를, 상기 기억부에 송신하는 송신부를 포함한다.
하나의 양태에 따르면, 컴퓨터 판독 가능한 기억 매체는, 데이터에 있어서 요소 사이의 단락을 나타내는 단락 기호와, 상기 단락 기호에 의해서 단락지어지는 하나의 데이터 요소와의 조합에 대응하는 하나의 압축 부호를 상기 데이터 요소에 대응시킨 압축 처리용 정보를, 상기 데이터 요소의 종류마다 포함하는 구조를 갖는 압축 사전 데이터로서, 컴퓨터에 의한 압축 처리에 있어서, 상기 하나의 데이터 요소에 기초하여 상기 하나의 압축 부호가 참조되는 상기 압축 사전 데이터를 기억한다.
하나의 양태에 따르면, 컴퓨터 판독 가능한 기억 매체는, 데이터에 있어서 요소 사이의 단락을 나타내는 단락 기호와, 상기 단락 기호에 의해서 단락지어지는 하나의 데이터 요소와의 조합을, 상기 조합에 대응하는 하나의 압축 부호와 대응시킨 신장 처리용 정보를, 상기 데이터 요소의 종류마다 포함하는 구조를 갖는 신장 사전 데이터이며, 컴퓨터에 의한 신장 처리에 있어서, 상기 하나의 압축 부호에 기초하여 상기 조합이 참조되는 상기 신장 사전 데이터를 기억한다.
하나의 측면에 따르면, 스페이스 기호가 이용되는 문서 데이터의 압축 효율을 향상시킬 수 있다.
도 1은 압축 사전의 예를 도시한다.
도 2는 압축 부호로 변환하는 예를 도시한다.
도 3은 신장 데이터로 변환하는 예를 도시한다.
도 4는 기능 블록 구성의 예를 도시한다.
도 5는 압축 기능의 처리 프로세스의 예를 도시한다.
도 6은 압축 사전 생성의 처리 프로세스의 예를 도시한다.
도 7은 통계 처리의 처리 프로세스의 예를 도시한다.
도 8은 통계 테이블 T1의 데이터 구조의 예를 도시한다.
도 9는 압축 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 10은 압축 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 11은 압축 사전의 데이터 구조의 예를 도시한다.
도 12는 신장 기능의 처리 프로세스의 예를 도시한다.
도 13은 신장 사전 생성의 처리 프로세스의 예를 도시한다.
도 14는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 15는 신장 사전의 데이터 구조의 예를 도시한다.
도 16은 컴퓨터(1)의 하드웨어 구성의 예를 도시한다.
도 17은 컴퓨터(1)에서 동작하는 프로그램 구성의 예를 도시한다.
도 18은 컴퓨터(1)를 이용한 시스템 구성의 예를 도시한다.
도 19는 컴퓨터(1)를 이용한 시스템 구성의 예를 도시한다.
도 20은 압축 사전의 데이터 구조의 예를 도시한다.
도 21은 신장 사전의 데이터 구조의 예를 도시한다.
도 22는 csv 형식의 데이터 구조의 예를 도시한다.
도 23은 압축 사전의 데이터 구조의 예를 도시한다.
도 24는 신장 사전의 데이터 구조의 예를 도시한다.
이하에 실시형태가 기재된다.
[압축 부호의 예]
도 1은 압축 사전의 예를 도시한다. 압축 사전 D0은, 기호 압축 사전 D01 및 기호열 압축 사전 D02를 포함한다. 기호 압축 사전 D01은, 문자나 숫자 등의 기호를 나타내는 문자 코드와 압축 부호의 대응 관계를 나타낸다. 기호열 압축 사전 D02는, 단어나 태그 등의 기호열을 나타내는 문자 코드열과 압축 부호의 대응 관계를 나타낸다. 압축 사전 D1은, 기호 압축 사전 D11, 기호열 압축 사전 D12 및 제어 기호 압축 사전 D13을 포함한다. 기호 압축 사전 D11은, 문자나 숫자 등의 기호를 나타내는 문자 코드와 압축 부호의 대응 관계를 나타낸다. 기호열 압축 사전 D12는, 단어나 태그 등의 기호열 및 스페이스 기호의 조합을 나타내는 문자 코드열과 압축 부호의 대응 관계를 나타낸다. 제어 기호 압축 사전 D13은, 직전의 스페이스 기호를 삭제한다는 취지의 제어 기호 및 단락 기호의 조합을 나타내는 문자 코드열과 압축 부호의 대응 관계를 나타낸다.
도 1에 예시되는 압축 사전 D0 및 압축 사전 D1에는, 압축 부호와, 압축 부호와 대응시켜진 기호 또는 기호열이 대응시켜 등록되어 있다. 압축 사전 D0이나 압축 사전 D1에 등록된 기호 또는 기호열 중, 압축 대상의 데이터로부터 판독된 기호 또는 기호열과 일치하는 기호 또는 기호열에 대응하는 압축 부호가 판독된다.
본 실시형태에서, 압축 사전 D0에 포함되는 압축 부호는 「c'()」로 나타내어진다. 압축 부호를 「c'()」로 나타내는 경우에는, 둥근 괄호 안에 압축 부호에 대응하는 기호 또는 기호열이 표시된다. 또한, 압축 사전 D1에 포함되는 압축 부호는 「c()」로 나타내어진다. 압축 부호 c()에서도, 둥근 괄호 안에 압축 부호에 대응하는 기호 또는 기호열이 표시된다. 예컨대, 「a」에 대응하는 압축 부호는 「압축 부호 c(a)」 등으로 나타내어지고, 「about△」에 대응하는 압축 부호는 「압축 부호 c(about△)」 등으로 나타내어진다. 스페이스 기호는, ASCII 코드계에서 0x20으로 나타내어지는 기호이며, 본 실시형태의 설명에서는 「△」로 나타내어진다.
또한, 상세한 것은 후술하지만, 직전에 신장된 스페이스 기호를 삭제한다는 취지의 제어 기호는 「[-△]」로 나타내어진다. 예컨대, 제어 기호 [-△] 및 단락 기호 「;」의 조합에는, 압축 부호 c([-△];)가 대응한다.
압축 사전 D0 내의 기호열 압축 사전 D02는, 기호열과 스페이스 기호의 각각에 대하여 압축 부호를 대응시키는 데 대하여, 압축 사전 D1 내의 기호열 압축 사전 D12는, 기호열 단일체가 아니라, 기호열과 스페이스 기호와의 조합에 대하여 하나의 압축 부호를 대응시킨다. 압축 사전 D1을 이용하여 압축이 이루어지는 경우에는, 압축 대상의 데이터 내에 존재하는 기호열과 스페이스 기호와의 조합은, 기호열 압축 사전 D12에 등록된 조합에 대응하는 압축 부호에 의해 부호화된다.
한편, 기호열과, 스페이스 기호 이외의 단락 기호(콤마나 콜론 등)와의 조합은, 기호열 압축 사전 D11 내에 등록되어 있지 않다. 압축 대상의 데이터 내에는, 스페이스 기호가 후속되는 기호열뿐만 아니라, 스페이스 기호 이외의 단락이 후속되는 기호열도 존재할 수 있다. 콤마나 콜론 등의 스페이스 기호와 다른 단락 기호 각각에 관해서 기호열 압축 사전 D12가 마련되면, 압축 부호의 종류가 증대되고, 그 결과, 압축 사전의 데이터 사이즈가 증대된다. 그래서, 스페이스 기호를 삭제한다는 취지를 나타내는 제어 기호가 각 단어에 대하여 공통으로 이용된다. 압축 사전 D1 내의 제어 기호 압축 사전 D13에 있어서, 제어 기호와 단락 기호와의 조합이, 하나의 압축 부호와 대응시켜진다. 압축 대상의 데이터 내의 기호열과 스페이스 기호 이외의 단락 기호와의 조합에 대해서는, 기호열 압축 사전 D12 내의 압축 부호와, 제어 기호 압축 사전 D13 내의 압축 부호가 조합되어 부호화된다. 제어 기호 압축 사전 D13에 등록되는 압축 부호가, 기호열 압축 사전 D12에 등록되는 각 단어에 대하여 공통으로 이용되고 있어, 각 단락 기호에 대하여 개별적으로 기호열 압축 사전 D12를 두는 것보다도 압축 사전의 데이터 사이즈가 증대되기 어렵다.
도 2는 압축 부호로의 변환하는 예를 도시한다. 도 2에는 영어 예문 E1 「He△spent△much△time△for△talking△about△his△invention.」이 도시된다. 도 2의 예에서, 영어 예문 E1은 기억 영역 A1에 저장된 상태이다. 영어 예문 E1 중 「about△」 및 「invention.」의 각각의 부분에 관해서, 압축 부호의 예(1)~예(4)가 도시된다. 압축 부호의 예(1) 및 예(3)는, 압축 사전 D0에 포함되는 압축 부호가 이용된 예이며, 압축 부호의 예(2) 및 예(4)는, 압축 사전 D1에 포함되는 압축 부호가 이용된 예이다.
도 2의 예(1)는, 영어 예문 E1 중 「about△」 부분이 압축 사전 D0에 기초하여 압축된 경우의 예를 도시한다. 「about△」에 포함되는 단어 「about」 및 기호 「△」의 각각에 대응하는 압축 부호 c'(about) 및 압축 부호 c'(△)가 압축 데이터에 이용된다. 즉, 예(1)에서, 영어 예문 E1 중 「about△」 부분에 대응하는 압축 데이터는 「c'(about)c'(△)」가 된다.
도 2의 예(2)는, 영어 예문 E1 중 「about△」 부분이 압축 사전 D1에 기초하여 압축된 경우의 예를 도시한다. 기호열 압축 사전 D12에 단어 「about△」이 등록되어 있기 때문에, 영어 예문 E1 중 「about△」 부분에 대응하는 압축 데이터는 「c(about△)」가 된다. 예(1)에서는 「about△」 부분의 압축 데이터가 2개의 압축 부호로 구성되는 데 대하여, 예(2)에서는 「about△」 부분의 압축 데이터를 구성하는 압축 부호는 하나이다.
도 2의 예(3)는, 영어 예문 E1 중 「invention.」 부분이 압축 사전 D0에 기초하여 압축된 경우의 예를 도시한다. 「invention.」에 포함되는 단어 「invention」 및 기호 「.」의 각각에 대응하는 압축 부호 c'(invention) 및 압축 부호 c'(.)가 압축 데이터에 이용된다. 즉, 예(3)에서는 영어 예문 E1 중「invention.」 부분에 대응하는 압축 데이터는 「c'(invention)c'(.)」가 된다.
도 2의 예(4)는, 영어 예문 E1 중 「invention.」 부분이 압축 사전 D1에 기초하여 압축된 경우의 예를 도시한다. 기호열 압축 사전 D12에, 단어 「invention△」이 등록되어 있다. 기호열 압축 사전 D12에 등록된 기호열의 마지막 스페이스 기호 「△」가 「.」, 「,」, 「;」 및 「:」 등의 스페이스 기호 이외의 단락 기호인 경우에는, 스페이스 기호 「△」를 포함하는 압축 부호(「invention△」)가 압축 데이터에 이용된다. 즉, 압축 대상의 부분이 「invention.」이라도, 압축 부호 c(invention△)가 이용된다. 이 경우에는, 추가로, 제어 기호 압축 사전 D13에 등록된 압축 부호 c([-△].)가 이용된다. 압축 부호 c([-△].)는, 제어 기호 [-△]와 기호 「.」와의 조합에 대응하는 압축 부호이다. 제어 기호 [-△]는, 직전의 스페이스를 부정한다는 취지를 나타내는 제어 기호이다. 제어 기호를 나타내는 코드에는, 압축 대상의 데이터가 사용하는 문자 코드계에서의 빈 코드가 할당된다.
예(4)에서는 영어 예문 E1 중 「invention.」 부분에 대응하는 압축 데이터는 「c(invention△)c([-△].)」가 된다. 예(3)에서도 예(4)에서도 「invention.」에 대응하는 압축 데이터를 구성하는 압축 부호의 수는 2개이다.
압축 대상의 데이터 내에서 스페이스 기호가 사용되는 경우에는 압축 사전 D1을 이용한 쪽이 압축 사전 D0을 이용하는 것보다도 압축 데이터에 포함되는 압축 부호의 수는 적다. 한편, 스페이스 기호 이외의 단락 기호가 존재하는 경우에는, 압축 사전 D0을 이용하여도 압축 사전 D1을 이용하여도 압축 데이터에 포함되는 압축 부호의 수는 같다. 그 때문에, 기호열 압축 사전 D12에 등록된 기호열 및 스페이스 기호의 조합이 압축 대상의 데이터 내에 존재하면, 압축 사전 D0보다도 압축 사전 D1을 이용한 쪽이 압축 데이터에 사용되는 압축 부호의 수가 적어진다.
또한, 스페이스 기호는 압축 대상의 데이터 내의 단어와 거의 동수 포함된다. 영어 등의 언어로 기술된 문서 데이터에서는, 단어와 단어의 경계가 스페이스 기호로 표현되기 때문이다. 한편, 스페이스 기호 이외의 단락 기호는, 한 문장 중에 한 번이나 두 번 정도 이용된다. 문서 데이터에 있어서, 스페이스 기호 이외의 단락 기호보다도 스페이스 기호 쪽이 이용되는 빈도가 높다.
한편, 압축 사전 D0과 비교하여, 제어 기호 압축 사전 D13 내의 등록되는 압축 부호의 수만큼, 압축 사전 D1 내의 압축 부호의 수가 많다. 그러나, 제어 기호 압축 사전 D13 내의 압축 부호의 수는 문자의 종류와 비교하여 압도적으로 적다. 예컨대, 엑스클라메이션, 콤마, 피리어드, 콜론, 세미콜론 및 퀘스쳔에 관한 압축 부호의 제어 기호 압축 사전 D13에의 등록이 이루어졌다고 해도, 취급되는 압축 부호의 종류의 수가 6 종류 증대될 뿐이다.
압축 부호의 종류가 6 종류 증가했다고 해도, 압축 사전 전체적으로 압축 부호 길이는 거의 변하지 않는다. 설사 압축 사전 내에 포함되는 압축 부호의 종류의 수가 배가 되었다고 해도, 각 압축 부호에 관해서 압축 부호 길이가 1 비트 증가하는 정도이다.
그 때문에, 단어수와 같은 정도의 빈도로 존재하는 스페이스 기호를 단어와 조합하여 압축 사전에 등록한 쪽이, 제어 기호 압축 사전 D13이 더해짐에 따른 압축 부호 길이의 증대보다도 영향이 크다. 그 때문에, 압축 사전 D1을 이용한 압축에 의해 압축율의 향상이 예상된다.
[신장 프로세스의 예]
도 3은 신장 데이터로 변환하는 예를 도시한다. 도 3에는, 도 2에서 압축 사전 D1을 이용하여 생성된 압축 데이터의 예인 압축 부호 「c(invention)c([-△].)」에 대응하는 신장 데이터의 생성 과정 (1)~(5)가 예시되어 있다. 기억 영역 A3은 압축 데이터가 저장되는 기억 영역이다. 기억 영역 A5는 기억 영역 A3에 저장된 압축 부호에 대응하는 신장 코드가 저장되는 버퍼 영역이다. 또한, 기억 영역 A4는, 기억 영역 A5에 저장되는 신장 코드에 기초하여 생성되는 신장 데이터가 저장되는 기억영역이다.
도 3의 과정(1)은, 기억 영역 A3에 압축 데이터가 저장되어 있는 상태를 도시한다. 우선, 압축 부호 c(invention△)에 대응하는 신장 코드의 생성이 이루어진다. 도 3의 과정(2)은, 과정(1)에서 생성된 신장 코드가 기억 영역 A4에 기록된 상태이다. 이어서, 압축 부호 c([-△].)에 대응하는 신장 코드의 생성이 이루어진다. 도 3의 과정(3)은, 과정(2)에서 생성된 신장 코드 「[-△]」와 「.」가 기록된 상태를 도시한다. 기억 영역 A5에 저장되어 있는 제어 기호 [-△]에 기초한 제어가 기억 영역 A4에 대하여 행해진다. 도 3의 과정(4)은, 제어 기호 [-△]에 기초한 제어가 행해진 상태를 도시한다. 과정(3)의 상태에서 「invention」에 이어서 존재하고 있었던 스페이스 기호 △가, 과정(4)의 상태에서는 삭제되어 있다. 또한, 기억 영역 A5에 저장되어 있는 「.」에 기초하여 기억 영역 A4에의 기록이 행해진다. 도 3의 과정(5)은, 「invention」에 이어서 「.」가 기록된 상태를 도시한다.
도 3의 과정(3)에서, 기억 영역 A4 내의 스페이스 기호 △를 삭제하지 않고, 기억 영역 A4에의 기록 위치를 바꾸기만 하여도 좋다. 그 경우에는, 제어 기호에 후속되는 기호(이 경우에는 「.」)는, 스페이스 기호가 기록되어 있었던 위치에 덮어쓰기된다.
전술한 과정에서 제어 기호 [-△]에 따른 변환 처리가 이루어진다. 제어 기호 [-△]를 이용함으로써, 말미의 스페이스 기호가 일치하지 않는 기호열에 대하여도 압축 사전 D1에 등록된 기호열에 대응하는 압축 부호를 이용하여 압축 데이터를 생성함에 따른 부정합이 해소된다.
전술한 압축 처리에 따르면, 압축 부호 종류의 증대를 소량으로 억제하면서, 압축 데이터에 이용되는 압축 부호의 수를 저감시킬 수 있기 때문에, 압축율이 향상된다. 또한, 전술한 압축 처리에서 압축된 압축 데이터를 신장하는 경우에는, 처리 대상이 되는 압축 부호의 수가 적어지기 때문에, 신장 속도의 향상이 예상된다.
스페이스 기호에 대응하는 압축 부호가 압축 데이터 내에 빈번히 나오는 것을 억제하기 위해서, 예컨대, 압축 처리에 있어서 애당초 스페이스 기호에 대응하는 압축 부호가 생성되지 않고, 신장 처리에 있어서 단어를 생성할 때마다 스페이스 기호를 자동 생성하는 것을 생각할 수 있다.
그러나, 압축 사전에 등록되어 있지 않은 단어에 관해서는 문자 단위로 압축 부호의 생성 처리가 이루어진다. 압축 데이터 내에는 단어를 나타내는 압축 부호와 문자 등의 기호를 나타내는 압축 부호가 포함되기 때문에, 압축 부호에 대응하는 신장 코드가 단어인지 기호인지의 판정이 신장 코드를 생성할 때마다 이루어진다. 또한, 압축 부호가 단어에 대응하는 압축 부호인지 문자에 대응하는 압축 부호인지를 식별하기 위한 체계가 필요하게 된다.
또한, 단어에 이어서 스페이스 기호 이외의 단락 기호가 존재하는 경우도 있을 수 있기 때문에, 신장 코드가 단어라고 판정된 후에, 단어의 다음 신장 코드가 스페이스 기호 이외의 단락 기호인지 여부의 판정이 이루어지게 된다. 이 판정이 이루어지면, 복수의 신장 코드에 걸쳐 스페이스 기호를 배치하는지의 판정이 이루어지기 때문에, 판정의 알고리즘이 번잡하게 된다. 그 결과, 신장 속도가 열화되는 동시에, 이미 존재하는 신장 프로그램의 소스 코드에 대하여 대폭적인 변경이 필요하게 된다.
본 실시예의 신장 처리에서는, 신장 코드가 제어 기호인지 여부의 판정이 이루어질 뿐이다. 예컨대, 레지스터에 기록된 제어 기호와, 신장 사전으로부터 판독된 신장 코드가 기록되는 레지스터와의 판정 처리를 행함으로써 실현된다. 하나의 신장 코드에 대하여 다중으로 판정 처리를 하는 것이나, 복잡한 알고리즘으로 신장 프로그램을 작성하는 것을 피하게 된다. 또한, 복수의 신장 코드에 걸쳐 처리를 하는 것이 억제되기 때문에, 사용하는 레지스터의 수도 억제할 수 있다.
[기능·처리 프로세스의 설명]
도 4는 기능 블록 구성의 예를 도시한다. 컴퓨터(1)는 압축부(11), 신장부(12), 생성부(13), 생성부(14) 및 기억부(15)를 포함한다. 기억부(15)는, 예컨대, 압축 대상의 파일 F1, 압축 파일 F2, 신장 파일 F3, 압축 사전 D2나 신장 사전 D3 등을 기억한다. 또한, 기억부(15)는, 예컨대 압축 사전 D2나 신장 사전 D3의 생성에 이용되는 단어 리스트 L1을 기억한다. 단어 리스트 L1은, 압축 부호를 할당하는 대상의 단어군의 리스트이다. 또한, 기억부(15)는, 기억 영역 A1, A2, A3, A4 및 A5 등의 기억 영역을 두어, 압축부(11), 신장부(12), 생성부(13) 및 생성부(14)의 처리 작업 영역으로서 이용된다. 압축부(11)는, 기억부(15)에 기억된 파일 F1의 압축 처리를 실행하여, 압축 파일 F2를 생성한다. 신장부(12)는, 기억부(15)에 기억된 압축 파일 F2의 신장 처리를 실행하여, 신장 파일 F3을 생성한다. 생성부(13)는, 압축부(11)의 압축 처리에서 이용되는 압축 사전 D2를 생성한다. 생성부(14)는, 신장부(12)의 신장 처리에서 이용되는 신장 사전 D3을 생성한다.
압축부(11)는 제어부(111), 검색부(112), 판독부(113) 및 기록부(114)를 포함한다. 제어부(111)는, 검색부(112), 판독부(113) 및 기록부(114)를 제어하여, 파일 F1의 압축 처리를 실행한다. 제어부(111)는 파일 F1을 기억 영역 A1에 로드한다. 판독부(113)는 파일 F1로부터 데이터를 판독한다. 검색부(112)는, 판독부(113)가 판독한 데이터에 관해서, 압축 사전 D2의 검색을 한다. 기록부(114)는, 검색부(112)의 검색 결과에 따른 압축 부호를 기억 영역 A2에 기록한다. 제어부(111)는 판독부(113)의 판독 위치나 기록부(114)의 기록 위치 등을 관리하며, 예컨대, 판독부(113)나 기록부(114)에, 파일 F1에 포함되는 기호 또는 기호열에 대하여 순차 처리를 실행하게 한다. 또한, 제어부(111)는, 기억 영역 A2에 저장된 압축 데이터에 기초하여 압축 파일 F2를 생성하여, 기억부(15)에 압축 파일 F2를 저장한다.
신장부(12)는 제어부(121), 검색부(122), 판독부(123) 및 기록부(124)를 포함한다. 제어부(121)는, 검색부(122), 판독부(123) 및 기록부(124)를 제어하여, 압축 파일 F2의 신장 처리를 실행한다. 제어부(121)는 압축 파일 F2를 기억 영역 A3에 로드한다. 판독부(123)는 압축 파일 F2로부터 압축 부호를 판독한다. 검색부(122)는, 판독부(123)가 판독한 압축 부호에 관해서, 신장 사전 D3의 검색을 한다. 기록부(124)는, 검색부(122)의 검색 결과에 따른 신장 코드를 기억 영역 A4에 기록한다. 제어부(121)는, 검색부(122)의 검색 결과에 의해 얻어진 신장 코드가 제어 기호를 나타내는 경우에는, 기록부(124)에 의한 기록이 행해지는 기록 위치를 스페이스 기호 하나분만큼(예컨대 1 바이트) 되돌리는 조정을 한다. 제어부(121)는, 판독부(123)의 판독 위치나 기록부(124)의 기록 위치 등을 관리하며, 예컨대, 판독부(123)나 기록부(124)에, 압축 파일 F2에 포함되는 압축 부호에 대하여 순차 처리를 실행하게 한다. 또한, 제어부(121)는, 기억 영역 A4에 저장된 신장 데이터에 기초하여 신장 파일 F3을 생성하여, 기억부(15)에 신장 파일 F3을 저장한다.
생성부(13)는 제어부(131), 통계부(132), 할당부(133) 및 소트부(134)를 포함한다. 생성부(13)는, 압축부(11)로부터의 지시에 따라서, 압축 사전 D2를 생성한다. 제어부(131)는, 통계부(132), 할당부(133) 및 소트부(134)를 제어하여, 파일 F1의 압축에 이용되는 압축 사전 D2를 생성한다. 통계부(132)는, 파일 F1 내에 포함되는 문자나 단어의 출현 횟수를 카운트하거나 함으로써, 각 문자나 단어의 통계 정보를 생성한다. 소트부(134)는, 통계부(132)가 생성한 통계 정보에 기초하여, 통계 정보가 생성된 각 문자나 단어를 소트한다. 할당부(133)는, 통계부(132)가 생성한 통계 정보에 기초하여, 각 문자나 단어에 대응하는 압축 부호를 생성하고, 생성된 압축 부호를 각 문자나 단어에 할당한다. 소트부(134)는, 또한, 압축 부호가 할당된 문자나 단어를, 문자나 단어에 대응하는 문자 코드의 순서(예컨대 문자 코드의 값이 작은 순서)로 소트한다. 제어부(131)는, 통계부(132), 할당부(133) 및 소트부(134)에 의한 처리 결과에 기초하여 압축 사전 D2를 생성하여, 기억부(15)에 압축 사전 D2를 저장한다. 또한, 제어부(131)는, 통계부(132)가 생성한 통계 정보를 기억부(15)에 저장한다.
생성부(14)는 제어부(141), 할당부(142), 복제부(143) 및 소트부(144)를 포함한다. 생성부(14)는, 신장부(12)로부터의 지시에 따라서, 신장 사전 D3을 생성한다. 제어부(141)는, 할당부(142), 복제부(143) 및 소트부(144)를 제어하여, 압축 파일 F2의 신장에 이용되는 신장 사전 D3을 생성한다. 할당부(142)는, 기억부(15)에 저장된 통계 정보를 이용하여, 각 문자나 단어에 대응하는 압축 부호를 생성한다. 소트부(144)는, 압축 부호가 할당된 문자 정보를, 압축 부호의 값에 따라서 소트한다. 복제부(143)는, 소트된 각 압축 부호의 부호 길이에 따라서, 압축 부호에 대응하는 문자나 단어를 나타내는 문자 코드를 복제한다. 제어부(141)는, 복제부(143)에 의해 복제된 문자 코드를, 할당부(142)에 의해 생성된 압축 부호에 대응한 오프셋 위치에 배치함으로써, 신장 사전 D3을 생성한다. 제어부(141)는, 또한 기억부(15)에 신장 사전 D3을 저장한다.
압축부(11) 및 생성부(13)에 의해 파일 F1의 압축 처리가 행해진다. 압축 처리의 처리 프로세스는 도 5, 도 6, 도 7, 도 9 및 도 10에 도시된다. 또한, 신장부(12) 및 생성부(14)에 의해 압축 파일 F2의 신장 처리가 행해진다. 신장 처리의 처리 프로세스는 도 12, 도 13 및 도 14에 도시된다.
도 5는 압축 기능의 처리 프로세스의 예를 도시한다. 압축 기능이 호출되면, 제어부(111)는 압축 처리의 전처리를 실행한다(S101). 압축 기능의 호출은 압축 대상인 파일 F1의 지정을 포함한다. S101의 전처리에서는, 제어부(111)는, 기억 영역 A1 및 기억 영역 A2를 확보하고, 단어 리스트 L1을 기억부(15)로부터 로드하여, 통계 테이블 T1 및 압축 사전 D2의 저장 영역을 확보한다.
S101의 처리가 종료되면, 제어부(111)는, 기억 영역 A1에 파일 F1을 로드한다(S102). 파일 F1의 사이즈가 정해진 사이즈보다도 큰 경우에는, 제어부(111)는, 파일 F1을 블록 분할하고, 분할하여 얻어진 블록마다 이하의 압축 처리를 한다. 이어서, 제어부(111)는 생성부(13)에 압축 사전 D2의 생성을 지시한다(S103).
도 6은 압축 사전 생성의 처리 프로세스의 예를 도시한다. 제어부(111)로부터 압축 사전의 생성 지시를 받으면, 제어부(131)는, 통계부(132)에 파일 F1의 통계 처리를 실행하게 한다(S201).
도 7은 통계 처리의 처리 프로세스의 예를 도시한다. 제어부(131)에 의해 통계 처리의 지시를 받으면, 통계부(132)는, 기억 영역 A1에 로드된 파일 F1에 관해서 통계 처리를 시작한다. 통계 처리를 시작할 때에, 판독 위치는 기억 영역 A1에 로드된 파일 F1의 선두를 나타낸다. 통계부(132)는, 기억 영역 A1의 판독 위치로부터 문자 코드를 취득한다(S301). S301의 처리에서, 판독 위치는 S301에서 취득된 문자 코드분만큼 나아가게 된다.
이어서, 통계부(132)는, S301에서 취득된 문자 코드가 단락 기호인지 여부를 판정한다(S302). S302의 판정은, 단락 기호로서 처리하는 문자 코드를 미리 설정해 두고서, S301에서 취득된 문자 코드가 미리 설정한 문자 코드 중 어느 것에 해당하는지 여부에 따라서 판단된다. 단락 기호는, 예컨대, 스페이스 기호(ASCII 코드계에서 0x20), 엑스클라메이션(ASCII 코드계에서 0x21), 콤마(ASCII 코드계에서 0x2C), 피리어드(ASCII 코드계에서 0x2E), 콜론(ASCII 코드계에서 0x3A), 세미콜론(ASCII 코드계에서 0x3B) 및 퀘스쳔(ASCII 코드계에서 0x3F) 등이다. 혹은, S302의 판정은, S301에서 취득된 문자 코드가 미리 정한 수치 범위(예컨대, 0x20~0x3F)인지 여부에 따라서 판단되더라도 좋다.
S301에서 취득된 문자 코드가 단락 기호가 아닌 경우(S302: NO)에는, 통계부(132)는, S301에서 취득된 문자 코드를 버퍼에 저장한다(S303). S303의 처리가 종료되면, S309의 순서로 이행한다.
S301에서 취득된 문자 코드가 단락 기호인 경우(S302: YES)에는, 통계부(132)는, S301에서 취득된 문자 코드가 스페이스 기호인지 여부를 판정한다(S304). 일례로서, S304의 판정이 S302의 판정보다도 먼저 행해지더라도 좋다. 그 경우에는, 통계부(132)는, S304의 조건을 만족하지 않는 경우에 S302의 판정을 하여, S302의 판정 조건을 만족하면 S305의 프로세스로 이행하고, S302의 판정 조건을 만족하지 않으면, S303의 프로세스로 이행한다.
S301에서 취득된 문자 코드가 스페이스 기호가 아닌 경우(S304: NO)에는, 통계부(132)는 단어의 카운트 처리를 한다(S305). 즉, 통계부(132)는, 버퍼에 저장되어 있는 문자 코드(또는 문자 코드열)와 S301에서 최근에 취득한 문자 코드를 연결한 문자열에 관해서, 통계 테이블 T1에 저장된 출현 횟수를 인크리멘트한다. S305의 처리에서, 통계 테이블 T1 내에 대응하는 문자열이 존재하지 않는 경우에는, 버퍼 내의 문자 코드 및 S301에서 최근에 취득한 문자 코드의 각각에 관해서, 통계 테이블 T1 내의 출현 횟수를 인크리멘트한다.
도 8은 통계 테이블 T1의 예를 도시한다. 통계 테이블 T1에는, 문자나 숫자 등의 각 기호, 단어 리스트 L1에 포함되는 각 단어, 및 제어 기호와 각 단락 기호와의 조합의 각각에 관해서 출현 횟수가 저장된다.
통계 테이블 T1을 이용한 통계 처리의 다른 일례로서, 통계부(132)가, S302의 판정 조건을 만족함으로써 단락지어지는 문자열을 단어로서 통계 테이블 T1에 등록하여도 좋다. 이 밖의 일례에서는, 통계 테이블 T1 내에 대응하는 문자열이 존재하지 않는 경우에, 통계부(132)는, 문자열을 단어로서 통계 테이블 T1에 신규 등록한다. 이에 따라 단어 리스트 L1 내에 포함되고, 파일 F1 내에 포함되지 않는 단어에 대하여 압축 부호를 할당하는 것이 억제된다. 또한, 단어 리스트 L1에 포함되지 않고, 파일 F1 내에 포함되는 단어에 대하여도 압축 부호가 할당된다. 또한, 단어 리스트 L1에 포함되고, 파일 F1 내에 포함되지 않는 단어에 관해서도, 통계 테이블 T1에 등록됨으로써 기억 영역을 점유해 버리는 것이 억제된다.
S305의 처리를 끝내면, 통계부(132)는, 제어 기호 및 단락 기호의 조합을 카운트한다(S306). S306에서는, 스페이스 기호를 취소한다는 취지의 제어 기호와, S301에서 취득한 단락 기호와의 조합에 관한 출현 횟수가 인크리멘트된다. S306의 처리가 종료되면, 통계부(132)는 S309의 프로세스로 이행한다.
S301에서 취득한 문자 코드가 스페이스 기호인 경우(S304: YES)에는, S305와 마찬가지로 단어의 카운트를 한다(S307). 또한, S305와 마찬가지로, 통계부(132)는, 통계 테이블 T1에 대응하는 단어가 존재하지 않는 경우에는, 버퍼에 저장된 문자 코드도 포함시켜 문자 코드마다 카운트를 한다. S307의 처리가 종료되면, 통계부(132)는 버퍼를 클리어한다(S308).
S303, S306 및 S308 중 어느 것이 행해지면, 통계부(132)는, 판독 위치가, 기억 영역 A1에 로드한 파일 F1의 종단인지 여부를 판정한다(S309). S309의 판정에서 종단이 아니면(S309: NO), 통계부(132)는 S301의 프로세스로 이행한다. 또한 S309의 판정에서 종단이라면(S309: YES), 통계부(132)는 통계 처리를 종료한다.
통계부(132)에 의한 통계 처리가 종료되면, 제어부(131)는, 도 6의 프로세스로 되돌아가, 소트부(134)에 소트 처리를 실행하게 한다(S202). 소트부(134)는, 통계 테이블 T1에 등록된 문자 정보(문자 등의 기호, 단어 등의 기호열, 제어 기호와 단락 기호와의 조합 등)를, 통계부(132)에 의해 생성된 통계 정보(각 문자 정보에 관한 출현 횟수)에 기초하여 재배열한다. 예컨대, 통계부(132)는 출현 횟수가 많은 순이나 적은 순 중 어느 한쪽으로, 통계 테이블 T1에 등록된 문자 정보를 재배열한다.
S202의 처리가 종료되면, 제어부(131)는, 할당부(133)에 압축 부호의 할당을 실행하게 한다(S203). 할당부(133)는, S202에서 빈도 순으로 재배열된 문자 정보군에 대하여, 허프만 부호화나 산술 부호화 등, 높은 빈도의 문자 정보일수록 짧은 압축 부호를 할당하는 알고리즘에 기초하여 압축 부호를 할당한다. 각 문자 정보에 압축 부호가 할당되면, 제어부(131)는, 소트부(134)에, 문자 정보와, 문자 정보에 할당된 압축 부호와의 조를, 문자 정보에 기초하여 소트 처리하게 한다(S204). 소트부(134)는, 예컨대, 문자 정보의 문자 코드가 작은 순으로 재배열한다. 예컨대, 소트부(134)는, 문자 정보의 1번째 문자의 문자 코드의 값이 작은 순으로 재배열하고, 1번째 문자의 문자 코드가 동일한 문자 정보끼리는, 2번째 문자의 문자 코드의 값이 작은 순으로 재배열한다. S204의 처리에 의해 재배열된 상태가 도 11에 도시하는 압축 사전 D2이다.
S204의 처리가 종료되면, 제어부(131)는 인덱스 생성 처리를 한다(S205). 제어부(131)는, 문자 정보와, 그 문자 정보가 S204에서 소트된 문자 정보군 내에서 존재하는 위치(오프셋)를 나타내는 정보를 대응시켜 인덱스를 생성한다. 도 11에 도시하는 압축 사전 D2에 대하여, 예컨대, 문자 「i」에 오프셋 「0x126」 등이 대응시켜진다. 압축 부호의 생성에 있어서 이 인덱스가 이용되면, 「i」부터 시작되는 단어에 대응하는 압축 부호의 검색이 「0x126」부터 시작된다. S205의 처리가 종료되면, 생성부(13)는 압축 사전 D2의 생성 처리를 종료한다.
도 11은 압축 사전의 데이터 구조의 예를 도시한다. 도 11에 도시되는 압축 사전 D2에는, 문자 정보와 압축 부호가 대응시켜져 저장된다. 문자 정보와 압축 부호로 이루어지는 조의 저장 위치는, 압축 사전 D2의 저장 위치를 시작점으로 하는 오프셋으로 나타내어진다. 예컨대, 문자 정보 「invent△」의 정보는 오프셋 0x0140에 저장된다. S205에서 생성되는 인덱스는, 이 오프셋을 이용하여 검색 범위의 압축을 실현한다. 또한, 전술한 대로, 「c()」는, 괄호 안의 문자 정보에 대응하는 압축 부호임을 나타낸다.
압축 사전 D2는 생성부(13)에 의해 생성되었지만, 다른 일례로서, 압축 사전 D2가 미리 기억부(15)에 기억되어 있는 것으로 하여도 좋다. 이 경우에는, 압축 사전 D2는 복수의 파일에 있어서 공통으로 이용된다. 예컨대, 미리 기억부(15)에 기억되는 압축 사전 D2에서는, 예컨대, 과거에 압축된 파일이나 데이터베이스 내에 존재하는 복수의 파일에 있어서의 문자 정보의 통계 정보에 기초하여 압축 부호가 할당된다.
생성부(13)가 압축 사전 D2의 생성 처리를 종료하면, 제어부(111)는 도 5의 프로세스로 되돌아가, 압축 데이터 생성 처리를 실행한다(S104).
도 9는 압축 데이터 생성 처리의 처리 프로세스의 예를 도시한다. 압축 데이터 생성 처리 시점에서, 판독 위치는 기억 영역 A1에 로드된 파일 F1의 시작점에 셋트되고, 기록 위치는 기억 영역 A2의 정해진 위치에 셋트되고, 버퍼는 클리어된다. 판독부(113)는 판독 위치에서 문자 코드를 취득한다(S401). 제어부(111)는, S401의 문자 코드 취득 후, 판독 위치를 갱신한다. 또한, 제어부(111)는, 판독부(113)가 S401에서 취득한 문자 코드를 버퍼에 저장한다(S402). 제어부(111)는, S401에서 취득한 문자 코드가 스페이스 기호인지 여부를 판정한다(S403).
S401에서 취득한 문자 코드가 스페이스 기호가 아닌 경우(S403: NO)에는, S401의 프로세스로 되돌아가, 판독부(113)는 판독 위치에서 문자 코드를 취득한다. 즉, S401 및 S402의 프로세스가, 스페이스 기호가 판독될 때까지 반복된다.
S401에서 취득한 문자 코드가 스페이스 기호인 경우(S403: YES)에는, 검색부(112)는, 압축 사전 D2를 버퍼 내에 저장된 문자 코드(또는 문자 코드열)로 검색한다(S404). 제어부(111)는, 버퍼 내에 저장된 문자 코드(또는 문자 코드열)와 일치하는 일치 문자 정보가 압축 사전 D2 내에 존재하는지 여부를 판정한다(S405). 압축 사전 D2 내에 일치 문자 정보가 존재하지 않는 경우(S405: NO)의 처리는, 도 10에 기초하여 후술한다. 일치 문자 정보가 존재하는 경우(S405: YES)에는, 기록부(114)는, 기억 영역 A2의 기록 위치에, 압축 사전 D2 내에서 일치 문자 정보에 대응시켜진 압축 부호를 기록한다(S406). 이어서, 제어부(111)는, 기록 위치를 갱신하고, 버퍼에 저장된 문자 코드(또는 문자 코드열)를 삭제(클리어)한다(S407). 또한, 제어부(111)는, 판독 위치가 기억 영역 A1에 로드된 파일 F1의 종단인지 여부를 판정한다(S408).
판독 위치가 파일 F1의 종단이 아닌 경우(S408: NO)에는, S401의 프로세스로 되돌아가, 판독부(113)는 판독 위치에서 문자 코드를 취득한다. 판독 위치가 파일 F1의 종단인 경우(S408: YES)에는, 제어부(111)는, 압축 데이터 생성 처리를 종료한다.
도 10은 압축 데이터 생성 처리의 처리 프로세스의 예를 도시한다. S405의 처리에서, 압축 사전 D2 내에 일치 문자 정보가 존재하지 않는 경우(S405: NO)에는, 제어부(111)는, 스페이스 기호로 단락지어진 문자 코드(또는 문자 코드열)의 말미의 문자 코드가 단락 기호인지 여부를 판정한다(S409). 즉, 버퍼에 저장된 문자 코드열에 있어서, 스페이스 기호 직전의 문자 코드가 단락 기호를 나타내는지 여부가 판정된다. 단락 기호인지 여부에 관해서, 도 7의 S302와 같은 판정 조건이 이용된다.
S409의 판정에서, 말미가 단락 기호인 경우(S409: YES)에는, 제어부(111)는, 버퍼 내의 말미의 단락 기호까지의 문자 코드열 중, 말미의 단락 부호를 스페이스 기호로 치환한 문자 코드열을 생성한다(S410). 검색부(112)는, S410에서 생성한 문자 코드열에 관해서, 압축 사전 D2를 검색한다(S411). 제어부(111)는, S411의 검색결과에 기초하여, 압축 사전 D2에, S410에서 생성한 문자 코드열과 일치하는 일치 문자 정보가 존재하는지 여부를 판정한다(S412).
일치 문자 정보가 존재하는 경우(S412: YES)에는, 기록부(114)는, 압축 사전 D2 내에서 일치 문자 정보와 대응시켜진 압축 부호를 기억 영역 A2의 기록 위치에 기록한다(S413). 제어부(111)는, 기록부(114)의 기록에 따라서 기록 위치를 갱신한다. 또한, 기록부(114)는, 압축 사전 D2에 있어서, 제어 기호와 단락 기호의 조합에 대응시켜진 압축 부호(제어 부호) 및 스페이스 기호와 대응시켜진 압축 부호를, 기억 영역 A2의 기록 위치에 기록한다(S414). 제어부(111)는, 기록부(114)의 기록에 따라서 기록 위치를 갱신한다.
일치 문자 정보가 존재하지 않는 경우(S412: NO) 또는 말미의 문자 코드가 단락 기호가 아닌 경우(S409: NO)에는, 제어부(111)는, 버퍼 내의 각 문자 코드에 대하여 처리를 한다(S415~S418). 제어부(111)는, 각 문자 코드에 관해서, 검색부(112)에 압축 사전 D2를 검색하게 하고(S416), 검색 결과 얻어진 압축 부호를 기록부(114)에 기록 위치에 기록하게 한다(S417). S416 및 S417의 처리가, 버퍼에 저장된 각 문자 코드에 대하여 행해지면, 프로세스가 S407로 되돌아가, 제어부(111)는, 버퍼에 저장된 문자 코드열을 클리어한다.
전술한 압축 데이터 생성 처리가 종료되면, 도 5에 도시하는 S105로 프로세스가 되돌아간다. 제어부(111)는, 기억 영역 A2 내에 저장된 압축 데이터를 이용하여 압축 파일 F2를 생성하여, 기억부(15)에 저장한다(S105). 압축 파일 F2는, 예컨대, 헤더, 기억 영역 A2 내의 압축 데이터 및 트레일러 정보로 구성된다. 헤더에는, 예컨대, 압축 알고리즘을 식별하는 식별 정보나, 헤더, 압축 데이터 및 트레일러 정보 각각의 데이터 사이즈 등의 정보가 포함된다. 또한, 트레일러 정보에는, 예컨대, 통계 테이블 T1 또는 압축 사전 D2에 대응하는 신장 사전 D3이 포함된다. 신장 사전 D3은 도 15에 기초하여 후술한다.
S105의 처리가 종료되면, 제어부(111)는, 압축 기능의 호출처에 압축 처리가 종료되었다는 취지를 통지한다(S106). S106의 통지에는, 예컨대, 압축 파일 F2의 저장처를 나타내는 정보가 포함된다. S106의 처리가 종료되면, 압축부(11)에 의한 압축 처리가 종료된다.
도 12는 신장 기능의 처리 프로세스의 예를 도시한다. 신장 기능이 호출되면, 제어부(121)는 신장 처리의 전처리를 실행한다(S501). 신장 기능의 호출은, 신장 대상인 압축 파일 F2의 지정을 포함한다. S501의 전처리에서는, 제어부(121)는, 기억 영역 A3 및 기억 영역 A4를 확보하여, 통계 테이블 T1을 압축 파일 F2로부터 로드하고, 또한 신장 사전 D3의 저장 영역을 확보한다.
S501의 처리가 종료되면, 제어부(121)는, 압축 파일 F2를 기억 영역 A3에 로드한다(S502). 이어서, 제어부(121)는 생성부(14)에 신장 사전을 생성하게 한다(S503).
도 13은 신장 사전 생성의 처리 프로세스의 예를 도시한다. 제어부(141)는, 기억 영역 A3에 로드된 압축 파일 F2의 트레일러 정보로부터 통계 테이블 T1을 취득한다(S601). 통계 테이블 T1이 취득되면, 할당부(142)는, 통계 테이블 T1 내의 각 문자 정보에 대하여 압축 부호를 할당한다(S602). S602의 처리에서는, S203과 같은 알고리즘에 의해 압축 부호가 할당된다. 소트부(144)는, 압축 부호가 할당된 문자 정보를, 압축 부호의 값에 따라서 소트한다(S603). 또한, 제어부(141)는, 압축 부호가 할당된 각 문자 정보에 대하여, 할당된 압축 부호의 부호 길이를 관련짓는다(S604).
이어서, 복제부(143)는, 문자 정보에 관련지어진 부호 길이에 따른 수로, 문자 정보 및 부호 길이의 정보를 복제한다(S605). 또한, 제어부(141)는, 복제된 정보를 기억부(15)에 확보된 신장 사전 D3의 저장 영역 내의 위치이며 압축 부호에 기초한 오프셋 위치에 저장한다(S606). S606의 결과, 신장 사전 D3이 생성되고, 프로세스는 도 12의 S504로 이행한다.
도 15는 신장 사전의 데이터 구조의 예를 도시한다. 신장 사전 D3은, 신장 코드(문자 정보)와 부호 길이를 나타내는 정보가, 대응하는 압축 부호에 기초한 오프셋 위치에 저장되는 데이터 구조를 갖고 있다. 도 15의 신장 사전 D3은, 압축 부호의 최대의 부호 길이가 12 비트인 경우를 예시하는 것이다.
신장 사전 D3은, 가변 길이의 부호화가 행해진 압축 데이터로부터 고정 길이의 데이터를 판독하여, 판독한 고정 길이의 데이터에 대응하는 신장 코드를 빼내는 처리에 이용된다. 고정 길이의 데이터를 판독함으로써, 1 비트씩 부호의 경계를 판정하는 것보다도 신장 속도의 고속화가 도모된다. 12 비트보다도 짧은 압축 부호에 관해서는 과량으로 압축 데이터로부터 데이터를 판독하여 버리기 때문에, 부호 길이에 기초하여 압축 데이터로부터의 판독 위치가 조정된다. 신장 사전 D3은 이러한 신장 처리에 이용되는 신장 사전이기 때문에, 신장 코드 및 부호 길이가 동일한 정보가 중복되어 등록된다.
예컨대, 신장 사전 D3에서의 제어 기호 [-△].에 대응하는 압축 부호 c([-△].)는, 「0001011」이라는 7 비트의 데이터인 데 대하여, 압축 데이터로부터 12 비트의 데이터로 통합하여 판독된다. 판독한 12 비트 중 전반의 7 비트가 「0001011」이라면, 후반의 5 비트가 어떠한 데이터라도 제어 기호 [-△].라고 하는 신장 코드를 취득할 수 있게 할 필요가 있다. 그 때문에, 후반의 5 비트가 취할 수 있는 전부에 관해서 신장 코드 및 부호 길이를 저장해 둠으로써, 12 비트의 고정 길이 데이터 중 후반 5 비트가 어떠한 데이터라도, 7 비트의 가변 길이 부호에 대응하는 신장 코드 등의 정보가 취득된다. 제어 기호 [-△].의 정보는, 후반 5 비트 전부(「00000」~「11111」)의 수(32)로 복제되어, 압축 부호가 「0001011」에 따른 오프셋 위치(000101100000(0x160))에 저장된다.
기호열 about△도, 제어 기호 [-△].와 마찬가지로, 압축 부호의 부호 길이에 따른 수로 복제되어, 압축 부호에 따른 오프셋 위치에 저장된다. 신장 사전 D3에 있어서, c(about△)는 「0110101001」이라는 10 비트의 데이터이다. 이 때문에, 기호열 about△에 대응하는 신장 코드 및 부호 길이의 정보는, 2의 2승(12-10=2이기 때문)으로 복제되어, 「011010100100(0x6A4)」라고 하는 오프셋 위치에 저장된다.
도 14는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다(S504). 신장 사전 D3이 생성되면, 제어부(121)는, 압축 파일 F2에 포함되는 압축 데이터에 대응하는 신장 데이터를 생성하는 처리를 시작한다. 기억 영역 A3으로부터의 판독 위치는 압축 파일 F2의 압축 데이터의 시작점에 셋트되고, 기억 영역 A4에의 기록 위치는 기억 영역 A4 내의 정해진 위치에 셋트되고, 기억 영역 A5(버퍼)는 클리어된다.
판독부(123)는 기억 영역 A3의 판독 위치로부터 압축 데이터를 판독한다(S701). 압축 데이터의 판독은, 전술한 것과 같이 고정 길이로 행해진다. 검색부(122)는, 판독한 고정 길이 데이터에 기초하여 신장 사전 D3을 참조한다(S702). S702의 참조에 의해 얻어진 신장 코드는 기억 영역 A5(버퍼)에 저장된다. 이어서, 기억 영역 A5 내의 신장 코드가, 제어 기호 및 단락 기호의 조합인지 여부를 판정한다(S703). S703의 처리는, 예컨대, 신장 코드의 선두의 문자 코드가 제어 기호인지 여부에 따라서 판단되더라도 좋다.
기억 영역 A5 내의 신장 코드가 제어 기호 및 단락 기호의 조합이 아닌 경우(S703: NO)에는, 기록부(124)는, S702에서 얻어진 신장 코드를 기억 영역 A4의 기록 위치에 기록한다(S704).
기억 영역 A5 내의 신장 코드가 제어 기호 및 단락 기호의 조합인 경우(S703: YES)에는, 제어부(121)는 기록 위치를 조정한다(S705). S705에서, 제어부(121)는, 기억 영역 A4의 기록 위치를 문자 코드 하나분만큼 되돌린다. S705에 이어서, 기록부는, 기억 영역 A5에 저장된 단락 기호를 기억 영역 A4의 기록 위치에 기록한다(S706).
S704 또는 S706의 처리가 이루어지면, 제어부(121)는, 기억 영역 A3으로부터의 판독 위치를 갱신한다(S707). 기억 영역 A3으로부터의 판독 위치는, S702의 참조에 의해 얻어진 부호 길이에 기초하여 갱신된다. 판독 위치는, 부호 길이의 정보가 나타내어지는 비트수만큼 나아가게 된다. 또한, 제어부(121)는, 기억 영역 A4에의 기록 위치를 갱신한다(S708). 기억 영역 A4에의 기록 위치는, S702에서 판독한 신장 코드의 길이(신장 코드 길이)에 기초하여 갱신된다. S707 및 S708의 처리 프로세스를 바꾸더라도 상관없다.
이어서, 제어부(121)는, 기억 영역 A3으로부터의 판독 위치가, 압축 파일 F2의 압축 데이터의 종단인지 여부를 판단한다(S709). 기억 영역 A3으로부터의 판독 위치가 압축 데이터의 종단이 아닌 경우(S709: NO)에는 순서가 S701로 되돌아가, 재차 판독부(123)가 압축 데이터를 판독한다. 기억 영역 A3으로부터의 판독 위치가 압축 데이터의 종단인 경우(S709: YES)에는, 제어부(121)는 신장 데이터 생성 처리를 종료하고, 프로세스가 S505로 이행한다.
다른 일례로서, 신장 사전 D3은, 신장 코드 및 부호 길이에 더하여, 추가로 신장 코드 길이를 나타내는 정보를 포함하여도 좋다. 그 경우는, 예컨대, 제어부(121)는, S708의 처리에서, 각각의 신장 코드에 대응시켜진 신장 코드 길이에 기초하여 기록 위치를 갱신한다.
또한, 다른 일례로서, 신장 사전 D3은 신장 사전의 일례이며, 동일한 정보가 중복되어 등록되어 있지 않은 신장 사전이 이용되더라도 좋다. 예컨대, 일반적인 허프만 부호화의 신장 사전이 이용되어도 좋다. 그 경우라도, 신장 사전으로부터 신장 코드가 취득된 경우에는, 제어부(121)는, S703의 판정을 하여, 그 판정 결과에 따라서 S704나 S705 및 S706의 어느 한 처리를 실행한다.
신장 데이터 생성 처리가 종료되면, 제어부(121)는, 기억 영역 A4에 저장된 신장 데이터에 기초하여 신장 파일 F3을 생성하고, 생성한 신장 파일 F3을 기억부(15)에 저장한다(S505). 또한, 제어부(121)는, 신장 기능의 호출처에 신장 처리가 종료되었다는 취지를 통지한다(S506). S506의 통지에는, 예컨대, 신장 파일 F3의 저장처를 나타내는 정보가 포함된다. S506의 처리가 종료되면, 신장부(12)에 의한 신장 처리가 종료된다.
[구성의 설명]
이하에, 전술한 압축 처리나 신장 처리를 실시하는 구성에 관해서 설명한다.
도 16은 컴퓨터(1)의 하드웨어 구성의 예를 도시한다. 컴퓨터(1)는, 예컨대, 프로세서(301), RAM(Random Access Memory)(302), ROM(Read Only Memory)(303), 드라이브 장치(304), 기억 매체(305), 입력 인터페이스(I/F)(306), 입력 디바이스(307), 출력 인터페이스(I/F)(308), 출력 디바이스(309), 통신 인터페이스(I/F))(310), SAN(Storage Area Network) 인터페이스(I/F)(311) 및 버스(312) 등을 포함한다. 각각의 하드웨어는 버스(312)를 통해 접속되어 있다.
RAM(302)은 기록 및 판독 가능한 메모리 장치이며, 예컨대, SRAM(Static RAM)나 DRAM(Dynamic RAM) 등의 반도체 메모리, 또는 RAM 이외에도 플래시 메모리 등이 이용되어도 좋다. ROM(303)은 PROM(Programmable ROM) 등이라도 좋다. 드라이브 장치(304)는, 기억 매체(305)에 기록된 정보의 판독이나 기록의 적어도 어느 하나를 행하는 장치이다. 기억 매체(305)는, 드라이브 장치(304)에 의해서 기록된 정보를 기억한다. 기억 매체(305)는, 예컨대, 하드 디스크, SSD(Solid State Drive) 등의 플래시 메모리, CD(Compact Disc), DVD(Digital Versatile Disc), 블루레이 디스크 등의 기억 매체이다. 또한, 예컨대, 컴퓨터(1)는, 복수 종류의 기억 매체 각각에 관해서, 드라이브 장치(304) 및 기억 매체(305)를 둔다.
입력 인터페이스(306)는 입력 디바이스(307)와 접속되어 있으며, 입력 디바이스(307)로부터 수신한 입력 신호를 프로세서(301)에 전달하는 회로이다. 출력 인터페이스(308)는 출력 디바이스(309)와 접속되어 있으며, 출력 디바이스(309)에, 프로세서(301)의 지시에 따른 출력을 실행하게 하는 회로이다. 통신 인터페이스(310)는 네트워크(3)를 통한 통신의 제어를 하는 회로이다. 통신 인터페이스(310)는, 예컨대 네트워크 인터페이스 카드(NIC) 등이다. SAN 인터페이스(311)는, 스토리지 에리어 네트워크(4)에 의해 컴퓨터(1)와 접속된 기억 장치와의 통신을 제어하는 회로이다. SAN 인터페이스(311)는 예컨대 호스트 버스 어댑터(HBA) 등이다.
입력 디바이스(307)는 조작에 따라서 입력 신호를 송신하는 장치이다. 입력 디바이스는, 예컨대, 키보드나 컴퓨터(1)의 본체에 부착된 버튼 등의 키 장치나, 마우스나 터치 패널 등의 포인팅 디바이스이다. 출력 디바이스(309)는, 컴퓨터(1)의 제어에 따라서 정보를 출력하는 장치이다. 출력 디바이스(309)는, 예컨대, 디스플레이 등의 화상 출력 장치(표시 장치)나, 스피커 등의 음성 출력 장치 등이다. 또한, 예컨대, 터치 스크린 등의 입출력 장치가 입력 디바이스(307) 및 출력 디바이스(309)로서 이용된다. 또한, 입력 디바이스(307) 및 출력 디바이스(309)는, 컴퓨터(1)와 일체로 되어 있어도 좋고, 컴퓨터(1)에 포함되지 않고, 예컨대, 컴퓨터(1)에 외부로부터 유선 또는 무선으로 접속하는 장치라도 좋다.
예컨대, 프로세서(301)는, ROM(303)이나 기억 매체(305)에 기억된 프로그램을 RAM(302)에 판독하고, 판독된 프로그램의 순서에 따라서 압축부(11), 신장부(12), 생성부(13) 및 생성부(14)의 적어도 하나의 처리를 실행한다. 그 때에 RAM(302)은 프로세서(301)의 작업 영역으로서 이용된다. 기억부(15)의 기능은, ROM(303) 및 기억 매체(305)가 프로그램 파일(후술하는 애플리케이션 프로그램(24), 미들웨어(23) 및 OS(22) 등)이나 데이터 파일(파일 F1, 압축 파일 F2 및 신장 파일 F3 등)을 기억하고, RAM(302)가 프로세서(301)의 작업 영역으로서 이용됨으로써 실현된다. 프로세서(301)가 판독하는 프로그램에 관해서는 도 17을 이용하여 설명한다.
도 17은 컴퓨터(1)에서 동작하는 프로그램 구성의 예를 도시한다. 애플리케이션 프로그램(24) 또는 미들웨어(23)는, 본 실시형태의 압축 기능 또는 신장 기능의 처리 프로세스가 정해진 프로그램이다. 혹은, 애플리케이션 프로그램(24) 또는 미들웨어(23)는, 본 실시형태의 압축 사전 생성 또는 신장 사전 생성의 처리 프로세스가 정해진 프로그램이다.
압축 기능의 처리 프로세스가 정해진 압축 프로그램과, 신장 기능의 처리 프로세스가 정해진 신장 프로그램이 일체의 프로그램이라도 좋고, 별개로 된 프로그램이라도 좋다. 또한, 압축 사전 생성의 프로세스가 정해진 압축 사전 생성 프로그램은, 압축 프로그램에 포함되어도 좋고, 압축 프로그램에 의해 호출되는 별개로 된 프로그램이라도 좋다. 또한, 신장 사전 생성의 프로세스가 정해진 신장 사전 생성 프로그램은, 신장 프로그램에 포함되어도 좋고, 신장 프로그램에 의해 판독되는 별개로 된 프로그램이라도 좋다. 혹은 OS(오퍼레이팅 시스템)(22)의 한 기능으로서, 본 실시형태의 압축 기능 및 신장 기능의 적어도 한쪽이 제공되더라도 좋다.
예컨대, 전술한 압축 기능 및 신장 기능의 적어도 하나, 압축 프로그램, 신장 프로그램, 압축 사전 생성 프로그램 및 신장 사전 생성 프로그램의 적어도 하나는 기억 매체에 기억된다. 예컨대, 그 기억 매체가 드라이브 장치(304)에 의해 판독되고, 인스톨됨으로써 기억 매체에 기억된 프로그램이 실행 가능한 상태가 된다. 인스톨된 프로그램에 정해진 처리 프로세스의 각각은, OS22에 기초하여 하드웨어군(21)(301~312)이 제어됨으로써 실행된다.
도 4에 도시하는 컴퓨터(1)에 포함되는 각 기능 블록의 기능은, 프로세서(301)가, 압축 프로그램 또는 신장 프로그램을 실행함으로써 제공된다. 도 5, 도 6, 도 7, 도 9 및 도 10에 도시되는 처리 프로세스가 프로세서(301)에 실행됨으로써 압축부(11) 및 생성부(13) 내에 포함되는 각 기능 블록의 기능이 제공된다. 또한, 도 12, 도 13 및 도 14에 도시되는 처리 프로세스가 프로세서(301)에 실행됨으로써 신장부(12) 및 생성부(14) 내에 포함되는 각 기능 블록의 기능이 제공된다.
예컨대, 압축부(11) 내의 기능 블록은 다음과 같이 하드웨어군(21)을 이용하여 실행된다. 제어부(111)의 기능은, 프로세서(301)가, RAM(302) 내에의 액세스(기억 영역의 확보, 파일의 로드 등)를 하고, 또한, 레지스터 내에서 처리 스테이터스(판독 위치나 기록 위치 등)를 관리하여, 레지스터 내에 유지된 정보와의 합치 판정을 함으로써 제공된다. 판독부(113)의 기능은, 프로세서(301)가 레지스터 내의 처리 스테이터스에 따라서 RAM(302)에 액세스함으로써 제공된다. 검색부(112)의 기능은, 프로세서(301)가 RAM(302)에 액세스하여, 액세스 결과에 기초한 대조 판정을 함으로써 제공된다. 기록부(114)의 기능은, 프로세서(301)가 레지스터 내의 처리 스테이터스에 따라서 RAM(302)에 액세스함으로써 제공된다.
예컨대, 신장부(12) 내의 기능 블록은 다음과 같이 하드웨어군(21)을 이용하여 실행된다. 제어부(121)의 기능은, 프로세서(301)가, RAM(302) 내에의 액세스(기억 영역의 확보, 파일의 로드 등)를 하고, 레지스터 내에서 처리 스테이터스(판독 위치나 기록 위치 등)를 관리하여, 레지스터 내에 유지된 정보와의 합치 판정을 함으로써 제공된다. 또한, 판독부(123)의 기능은, 프로세서(301)가 레지스터 내의 처리 스테이터스에 따라서 RAM(302)에 액세스함으로써 제공된다. 검색부(122)의 기능은, 프로세서(301)가 RAM(302)에 액세스하여, 액세스 결과에 기초한 대조 판정을 함으로써 제공된다. 기록부(124)의 기능은, 프로세서(301)가 레지스터 내의 처리 스테이터스에 따라서 RAM(302)에 액세스함으로써 제공된다.
예컨대, 생성부(13) 내의 기능 블록은 다음과 같이 하드웨어군(21)을 이용하여 실행된다. 제어부(131)의 기능은, 프로세서(301)가 RAM(302)의 영역 관리 및 RAM(302)에의 액세스를 하고, 또한 프로세서(301)가 루틴의 처리 결과에 따른 루틴의 호출을 함으로써 제공된다. 통계부(132)의 기능은, 프로세서(301)에 의한 RAM(302)에의 액세스 처리 및 액세스 처리 결과에 따른 연산 처리에 의해 제공된다. 소트부(134)의 기능은, 프로세서(301)에 의한 RAM(302)에의 액세스와 액세스 결과에 따른 연산 처리에 의해 제공된다. 할당부(133)의 기능은, 프로세서(301)가 RAM(302)에의 액세스에 기초한 연산 처리를 함으로써 제공된다.
예컨대, 생성부(14) 내의 기능 블록은 다음과 같이 하드웨어군(21)을 이용하여 실행된다. 제어부(141)의 기능은, 프로세서(301)가 RAM(302)의 영역 관리 및 RAM(302)에의 액세스를 하고, 또한 프로세서(301)가 루틴의 처리 결과에 따른 루틴의 호출을 함으로써 제공된다. 복제부(143)의 기능은, 프로세서(301)에 의한 RAM(302)에의 액세스 처리에 의해 제공된다. 소트부(144)의 기능은, 프로세서(301)에 의한 RAM(302)에의 액세스와 액세스 결과에 따른 연산 처리에 의해 제공된다. 할당부(142)의 기능은, 프로세서(301)가 RAM(302)에의 액세스에 기초한 연산 처리를 함으로써 제공된다.
본 실시형태에 따르면, 기호열과 스페이스 기호에 대하여, 하나의 압축 부호를 할당하기 때문에, 압축 부호의 수가 억제된다. 그 때문에, 압축 부호의 기록에 걸리는 메모리 액세스 횟수가 억제된다. 또한, 압축율이 향상되기 때문에, 압축 파일을 저장할 때의 I/O의 횟수도 억제된다.
도 18은 컴퓨터(1)를 이용한 시스템 구성의 예를 도시한다. 도 18에 예시하는 정보 처리 시스템은, 기지국(2), 네트워크(3), 컴퓨터(1a) 및 컴퓨터(1b)를 포함한다. 컴퓨터(1a)는, 무선 또는 유선의 적어도 한쪽에 의해, 컴퓨터(1b)와 접속된 네트워크(3)에 접속된다. 도 4에 도시하는 압축부(11), 신장부(12), 생성부(13) 및 생성부(14)가, 컴퓨터(1a)에만 포함되어도 좋고, 컴퓨터(1a) 및 컴퓨터(1b) 양쪽에 포함되어도 좋다. 컴퓨터(1a)가 압축부(11) 및 생성부(13)을 포함하고, 컴퓨터(1b)가 신장부(12) 및 생성부(14)를 포함하여도 좋고, 그와는 반대로, 컴퓨터(1b)가 압축부(11) 및 생성부(13)를 포함하고, 컴퓨터(1a)가 신장부(12) 및 생성부(14)를 포함하여도 좋다.
예컨대, 컴퓨터(1a)에서 생성된 압축 파일 F2가 네트워크(3)를 통한 통신에 의해 컴퓨터(1b)에 송신되고, 컴퓨터(1b)에 의해 압축 파일 F2가 신장되어 신장 파일 F3이 생성된다. 압축 파일 F2는 무선으로 기지국(2)에 송신되어, 기지국(2)으로부터 컴퓨터(1b)에 송신되어도 좋다.
본 실시형태의 압축 기능이나 신장 기능에 따르면 압축율이 향상되기 때문에, 통신되는 압축 데이터의 양이 삭감된다. 이에 따라 통신 처리에 대한 도 18에 예시되는 시스템의 하드웨어 리소스의 사용이 억제된다.
도 19는 컴퓨터(1)를 이용한 시스템 구성의 예를 도시한다. 도 19에 예시하는 정보 처리 시스템은, 컴퓨터(1), 네트워크(3), 클라이언트 장치(6), 스토리지 에리어 네트워크(SAN)(4) 및 스토리지 장치(5)를 포함한다. 예컨대, 컴퓨터(1)는, 클라이언트 장치(6)로부터의 요구에 따른 정보 처리를 한다. 정보 처리 대상의 데이터는, 예컨대 스토리지 장치(5)에 압축되어 기억되어 있다. 컴퓨터(1)는, 클라이언트 장치(6)로부터 요구를 받은 경우에, 압축되어 스토리지 장치(5)에 기억된 정보 처리 대상의 데이터를 취득하여 신장한다. 컴퓨터(1)는, 신장한 데이터에 대하여 클라이언트 장치(6)로부터 요구된 정보 처리를 실행하고, 또한 정보 처리 후의 데이터를 압축하여, 스토리지 장치(5)에 저장한다. 정보 처리는, 예컨대, 스토리지 장치(5)에 기억된 데이터의 갱신 처리나 스토리지 장치(5)에 기억된 데이터의 분석·해석 처리 등이다.
도 19에 예시되는 시스템에서는, 압축 처리나 신장 처리를 할 때마다 압축 사전이나 신장 사전을 생성하지 않더라도, 한 번 작성한 압축 사전이나 신장 사전을 유지해 두고서, 그 압축 사전이나 신장 사전에 기초하여 압축 처리 또는 신장 처리가 실행되어도 좋다. 그 경우, 도 5의 S103의 처리나 도 12의 S503의 처리는, 단순히 유지되어 있는 압축 사전이나 신장 사전을 로드할 뿐이라도 좋다.
도 19에 예시하는 시스템에서는, 정보 처리의 요구를 받을 때마다 데이터의 신장이 이루어진다. 신장 처리에 시간이 걸리면 요구에 대한 응답까지의 시간도 증대되어 버린다. 본 실시형태의 압축 기능에 의해 압축율이 향상되면, 압축 데이터를 스토리지 장치(5)로부터 판독하는 I/O 횟수가 삭감된다. 또한, 압축 부호의 수가 적기 때문에 신장 처리에 걸리는 메모리 액세스의 횟수가 억제된다. 또한, 압축 파일 F2의 로드에 확보되는 기억 영역도 적게 억제된다.
[변형예의 설명]
이하, 전술한 실시형태에 있어서의 변형예의 일부를 설명한다.
압축 처리의 대상은, 파일 이외에도, 시스템으로부터 출력되는 감시 메시지 등이라도 좋다. 예컨대, 버퍼에 순차 저장되는 감시 메시지를 전술한 압축 처리에 의해 압축하여, 로그 파일로서 저장하는 등의 처리가 행해진다. 또한, 예컨대, 데이터베이스 내의 페이지 단위로 압축이 이루어지더라도 좋고, 복수의 페이지를 통합한 단위로 압축이 이루어지더라도 좋다. 또한, 압축 사전은 복수의 감시 메시지에 대하여 공통의 압축 사전이 이용되어도 좋고, 복수의 페이지에 대하여 공통의 압축 사전이 이용되어도 좋다.
문서 데이터에서, 스페이스 기호가 많이 이용되지만, 그 밖의 단락 기호도 이용된다. 압축 사전 D2를 이용한 경우, 단락 기호가 붙여진 기호열, 단락 기호 및 스페이스 기호를, 기호열과 스페이스 기호의 조합에 대응하는 압축 부호와, 제어 기호 및 단락 기호에 대응하는 압축 부호와, 스페이스 기호에 대응하는 압축 부호의 세 가지의 압축 부호가 이용된다. 그러나, 스페이스 기호 이외의 단락 기호가 이용될 때는, 그 단락 기호에 후속하여 스페이스 기호가 이용되는 경우가 많다. 제어 기호, 단락 기호(스페이스 기호 이외) 및 스페이스 기호의 조합에 대하여 압축 부호를 할당한 압축 사전 D4가 압축 사전 D2 대신에 이용되어도 좋다.
도 20은 압축 사전의 데이터 구조의 예를 도시한다. 압축 사전 D4에는, 제어 기호와 단락 기호(스페이스 기호 이외)의 조합이 등록되어 있다. 한편, 도 20에 도시하는 압축 사전 D4에는, 제어 기호, 단락 기호(스페이스 기호 이외) 및 스페이스 기호의 조합이 등록되어 있다. 도 7의 S306의 제어 기호 카운트 처리에 있어서, 스페이스 기호 이외의 단락 기호에 스페이스 기호가 후속하는지를 확인하여, 스페이스 기호가 후속되는 경우에는 제어 기호, 단락 기호(스페이스 기호 이외) 및 스페이스 기호의 조합이 등록되면, 도 20의 압축 사전 D4가 생성된다.
도 21은 신장 사전의 데이터 구조의 예를 도시한다. 도 21에서도, 제어 기호, 단락 기호(스페이스 기호 이외) 및 스페이스 기호의 조합이 등록되어 있다. 도 20에서 설명한 프로세스에 따라 통계 테이블 T1이 생성되면, 그 통계 테이블에 따라서 신장 사전 D5가 생성된다. 신장 사전 D5는 신장 사전 D3 대신에 이용된다.
문서 데이터에서는, 문서 데이터를 구성하는 요소인 단어 등의 언어 단위의 경계가 스페이스 기호로 표시된다. 한편, csv(comma-separated values) 형식의 데이터에서는, 데이터열에 포함되는 콤마에 의해, csv 형식의 데이터를 구성하는 요소인 필드의 단락이 표시된다. 전술한 압축 알고리즘이 csv 형식의 파일에 이용된 경우에도, 콤마에 대응하는 압축 부호가 데이터 사이에 반복되어 이용되기 때문에, 압축율이 향상되기 어렵다.
도 22는 csv 형식의 데이터 구조의 예를 도시한다. 도 22에 예시되는 csv 형식의 데이터 E1은, 각 행에 6개의 필드를 포함하는 데이터이며, 각각의 필드의 타이틀이 헤더행(출원번호, 출원일, 발명자, 국명, 루트, 발명의 명칭)에 표시된다. 각 행의 단락은 개행(改行) 코드에 의해 표시된다. 또한, 데이터 E1 내의 발명자 필드의 데이터는, 발명자의 성 및 이름이 표시되고, 성과 이름 사이가 스페이스 기호로 단락되어져 있다.
도 23은 압축 사전의 데이터 구조의 예를 도시한다. 도 23에 도시되는 압축 사전 D6에는, 기호열 및 콤마의 조합이 등록된다. 예컨대, 「INDEX,」나 「INFORMATION,」 등과 같이 단어에 콤마가 붙여진 문자 정보가 등록된다. 문자 정보의 말미에 콤마가 포함되는 문자 정보를 등록하는 압축 사전 D6을 이용하는 한편, 데이터 E1 내에 단어 뒤에 콤마 이외의 단락 기호가 존재하기 때문에, 직전의 콤마 기호를 삭제하는 제어 기호 [-,]가 이용된다. 예컨대, 압축 사전 D6에는, 제어 기호 [-,]와 스페이스 기호 △와의 조합이 등록된다. 또한, 예컨대, 압축 사전 D6에는, 제어 기호 [-,]와 개행 코드(개행 코드는 [개행]이라고 도시됨)와의 조합이 등록된다. 압축 사전 D6에는, 등록된 문자 정보의 각각에 대응하는 압축 부호가, 문자 정보와 대응시켜져 저장된다.
도 24는 신장 사전의 데이터 구조의 예를 도시한다. 도 24에 도시되는 신장 사전 D7에, 압축 사전 D6에 등록된 각 문자 정보가, 대응하는 압축 부호에 따른 오프셋 위치에, 대응하는 압축 부호의 부호 길이에 따른 수로 복제되어 저장되어 있다. 압축 부호의 부호 길이를 나타내는 정보도 각 문자 정보에 대응시켜 신장 사전 D7에 저장되어 있다.
csv 형식의 데이터에서는, 콤마로 데이터의 각 요소가 구분되지만, 행의 경계에서는 개행 코드가 이용된다. 그 때문에, 예컨대, 제어 기호 [-,]와 개행 코드와의 조합은 출현 횟수가 많아져, 압축 부호의 부호 길이가 짧아지는 경향이 있다.
또한, 필드 내에 복수의 단어가 포함되는 경우에, 스페이스 기호가 포함되는 경우가 있다. 예컨대, 도 22에 도시하는 데이터 E1의 발명자 필드의 데이터는 「KATAOKA△MASAHIRO,」인데, 이 데이터에 대응하는 압축 부호는, c(KATAOKA,)c([-,]△)c(MASAHIRO,)가 된다.
csv 형식의 데이터를 취급하는 경우에는, 도 7의 S304의 판정에서, 단락 기호가 콤마인지 여부가 판정된다. 또한, 도 9의 S403의 판정에서, S401에서 판독한 문자 코드가 콤마인지 여부가 판정된다. 또한, 도 10의 S410의 처리에서는, 말미의 단락 기호를 콤마로 치환한 문자 정보가 생성된다.
한편, 신장 처리에서는, 제어 기호가 콤마 이외의 단락 기호 부위에 존재하도록 압축 데이터가 생성되고 있기 때문에, 도 14의 처리 프로세스에서 처리할 수 있다.
또한, 전술한 실시형태에서, 직전의 스페이스 기호의 삭제를 나타내는 제어 기호 [-△]나 직전의 콤마의 삭제를 나타내는 제어 기호 [-,]라고 설명했지만, 단순히 판독 위치를 문자 코드분만큼(1 byte) 되돌리는 것을 나타내는 제어 기호가 이용되어도 좋다. 그 경우, 기호열 압축 사전 D12와 같은 기호열에 대응하는 압축 사전이, 복수 종류의 단락 기호에 대하여 마련되어도 좋다. 예컨대, 단어 및 스페이스 기호의 조합에 대응하는 기호열 압축 사전과, 단어 및 콤마의 조합에 대응하는 기호열 압축 사전 양쪽이 이용된다.
또한, 전술한 실시형태에서, 단어 등의 기호열과, 그 직전에 존재하는 스페이스 기호 등의 단락 기호의 조합을 압축 사전에 등록하는 것으로 하여도 좋다. 그 경우에는, 예컨대, 후속되는 스페이스 기호를 삭제한다는 취지의 제어 기호가 이용된다.
전술한 변형예뿐만 아니라, 본 발명의 본지를 일탈하지 않는 범위의 설계 변경은 적절하게 이루어질 수 있다.
1: 컴퓨터, 1a: 컴퓨터, 1b: 컴퓨터, 2: 기지국, 3: 네트워크, 4: 스토리지 에리어 네트워크, 5: 스토리지 장치, 6: 클라이언트 장치, 11: 압축부, 12: 신장부, 13: 생성부, 14: 생성부, 15: 기억부.

Claims (17)

  1. 입력 데이터를 구성하는 복수의 요소 중 하나인 제1 요소와, 상기 복수의 요소 각각을 단락 짓는 단락 기호이며, 상기 입력 데이터에 있어서 상기 제1 요소에 연속되는 제1 단락 기호와의 조합에 대응하는 제1 압축 부호를, 상기 제1 요소와 대응시켜 기억하는 기억부와,
    상기 입력 데이터로부터의 연속되는 상기 제1 요소 및 상기 제1 단락 기호의 판독에 따라, 상기 기억부로부터 상기 제1 압축 부호를 취득하는 취득부와,
    상기 제1 압축 부호를, 상기 입력 데이터의 압축 데이터를 저장하는 저장 영역에 기록하는 기록부를 포함하는 것을 특징으로 하는 압축 장치.
  2. 제1항에 있어서, 상기 기억부는, 상기 제1 단락 기호를 취소한다는 지시를 나타내는 제어 기호와, 상기 제1 단락 기호와의 조합에 대응하는 제1 제어 부호를 기억하고,
    상기 취득부는, 상기 입력 데이터로부터의 상기 제1 요소의 판독에 따라, 상기 기억부로부터 상기 제1 압축 부호 및 상기 제1 제어 부호를 취득하고,
    상기 기록부는, 상기 제1 제어 부호를, 상기 저장 영역의 상기 제1 압축 부호에 연속되는 위치에 기록하는 것을 특징으로 하는 압축 장치.
  3. 제1항에 있어서, 상기 기억부는, 상기 제1 단락 기호를 취소한다는 지시를 나타내는 제어 기호와, 상기 복수의 요소 각각을 단락 짓는 단락 기호이며, 상기 제1 단락 기호와 다른 제2 단락 기호와의 조합에 대응하는 제2 제어 부호를, 상기 제2 단락 기호와 대응시켜 기억하고,
    상기 취득부는, 상기 입력 데이터로부터의 연속되는 상기 제1 요소 및 상기 제2 단락 기호의 판독에 따라, 상기 기억부로부터 상기 제1 압축 부호 및 상기 제2 제어 부호를 취득하고,
    상기 기록부는, 상기 제2 제어 부호를, 상기 저장 영역의 상기 제1 압축 부호에 연속되는 위치에 기록하는 것을 특징으로 하는 압축 장치.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 데이터는 텍스트 파일이고,
    상기 요소는 단어 단위의 데이터인 것을 특징으로 하는 압축 장치.
  5. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 데이터는, 테이블 구조에 대응하는 텍스트 파일이고,
    상기 요소는, 상기 테이블 구조에 있어서의 하나의 필드를 구성하는 것을 특징으로 하는 압축 장치.
  6. 컴퓨터에,
    입력 데이터를 구성하는 복수의 요소 중 하나인 제1 요소와, 상기 복수의 요소 각각을 단락 짓는 단락 기호이며, 상기 입력 데이터에 있어서 상기 제1 요소에 연속되는 제1 단락 기호와의 조합에 대응하는 제1 압축 부호를, 상기 제1 요소와 대응시켜 기억하는 기억 장치로부터, 상기 입력 데이터로부터의 연속되는 상기 제1 요소 및 상기 제1 단락 기호의 판독에 따라, 상기 제1 압축 부호를 취득하고,
    상기 제1 압축 부호를, 상기 입력 데이터의 압축 데이터를 저장하는 저장 영역에 기록하는 것을 실행하게 하는 것을 특징으로 하는 압축 방법.
  7. 컴퓨터에,
    입력 데이터를 구성하는 복수의 요소 중 하나인 제1 요소와, 상기 복수의 요소 각각을 단락 짓는 단락 기호이며, 상기 입력 데이터에 있어서 상기 제1 요소에 연속되는 제1 단락 기호와의 조합에 대응하는 제1 압축 부호를, 상기 제1 요소와 대응시켜 기억하는 기억 장치로부터, 상기 입력 데이터로부터의 연속되는 상기 제1 요소 및 상기 제1 단락 기호의 판독에 따라, 상기 제1 압축 부호를 취득하고,
    상기 제1 압축 부호를, 상기 입력 데이터의 압축 데이터를 저장하는 저장 영역에 기록하는 처리를 실행하게 하는 것을 특징으로 하는 압축 프로그램을 저장하는 컴퓨터 판독 가능한 기록 매체.
  8. 데이터를 구성하는 요소 중 하나인 제1 요소와, 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 제1 단락 기호와의 조합을, 하나의 압축 부호와 대응시켜 기억하는 기억부와,
    상기 데이터를 압축하여 얻어지는 압축 데이터로부터 판독된 상기 압축 부호에 대응하는 상기 조합을, 상기 기억부로부터 취득하는 취득부와,
    취득된 상기 조합에 포함되는 상기 제1 요소 및 상기 제1 단락 기호 양쪽을, 상기 압축 데이터를 신장하여 얻어지는 신장 데이터의 저장 영역에 기록하는 기록부를 포함하는 것을 특징으로 하는 신장 장치.
  9. 제8항에 있어서, 상기 기억부는 또한, 상기 제1 단락 기호를 취소한다는 지시를 나타내는 제어 기호와, 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 단락 기호이며 상기 제1 단락 기호와 종류가 다른 제2 단락 기호와의 조합을, 상기 압축 부호와 상이한 다른 압축 부호와 대응시켜 기억하고,
    상기 취득부는, 상기 압축 데이터로부터 상기 압축 부호에 후속되는 상기 다른 압축 부호를 판독한 경우에, 상기 제1 요소 및 상기 제1 단락 기호에 이어서, 또한 상기 제어 기호 및 상기 제2 단락 기호를 상기 기억부로부터 취득하고,
    상기 기록부는 또한, 상기 제어 기호 및 상기 제2 단락 기호를 취득하면, 취득된 상기 제2 단락 기호를, 상기 저장 영역 내의 상기 제1 단락 기호의 저장 위치에 기록하는 것을 특징으로 하는 신장 장치.
  10. 제9항에 있어서, 상기 다른 압축 부호에 대응시켜지는 조합에, 상기 제어 기호 및 상기 제2 단락 기호에 더하여, 상기 제1 단락 기호가 포함되는 것을 특징으로 하는 신장 장치.
  11. 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 데이터는 텍스트 파일이고,
    상기 요소는 단어 단위의 데이터인 것을 특징으로 하는 신장 장치.
  12. 제8항 내지 제10항 중 어느 한 항에 있어서, 상기 데이터는, 테이블 구조에 대응하는 텍스트 파일이고,
    상기 요소는, 상기 테이블 구조에 있어서의 하나의 필드를 구성하는 것을 특징으로 하는 신장 장치.
  13. 컴퓨터에,
    데이터를 구성하는 요소 중 하나인 제1 요소와, 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 제1 단락 기호와의 조합을, 하나의 압축 부호와 대응시켜 기억하는 기억 장치로부터, 상기 데이터를 압축하여 얻어지는 압축 데이터로부터 판독된 상기 압축 부호에 대응하는 상기 조합을 취득하고,
    취득된 상기 조합에 포함되는 상기 제1 요소 및 상기 제1 단락 기호 양쪽을, 상기 압축 데이터를 신장하여 얻어지는 신장 데이터의 저장 영역에 기록하는 것을 실행하게 하는 것을 특징으로 하는 신장 방법.
  14. 컴퓨터에,
    데이터를 구성하는 요소 중 하나인 제1 요소와, 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 제1 단락 기호와의 조합을, 하나의 압축 부호와 대응시켜 기억하는 기억 장치로부터, 상기 데이터를 압축하여 얻어지는 압축 데이터로부터 판독된 상기 압축 부호에 대응하는 상기 조합을 취득하고,
    취득된 상기 조합에 포함되는 상기 제1 요소 및 상기 제1 단락 기호 양쪽을, 상기 압축 데이터를 신장하여 얻어지는 신장 데이터의 저장 영역에 기록하는 처리를 실행하게 하는 것을 특징으로 하는 신장 프로그램을 저장하는 컴퓨터 판독 가능한 기록 매체.
  15. 기억 장치와,
    데이터를 구성하는 요소 중 하나인 제1 요소와 상기 데이터에 있어서 상기 요소 사이의 단락을 나타내는 단락 기호의 조합과, 하나의 압축 부호가 대응시켜진 변환 사전을 기억하는 기억부와,
    상기 기억 장치로부터, 데이터를 압축하여 얻어지는 압축 데이터를 받는 수신부와,
    상기 압축 데이터로부터 판독된 상기 압축 부호에 대응하는 상기 조합을, 상기 변환 사전으로부터 취득하는 제1 취득부와,
    취득된 상기 조합에 포함되는 상기 제1 요소 및 상기 단락 기호 양쪽을, 상기 압축 데이터를 신장하여 얻어지는 신장 데이터의 제1 저장 영역에 기록하는 제1 기록부와,
    상기 제1 저장 영역에 기록된 상기 신장 데이터에 대하여 정보 처리를 행하는 처리부와,
    상기 정보 처리가 행해진 상기 신장 데이터로부터 판독된 상기 제1 요소에 대응시켜 기억된 상기 압축 부호를, 상기 변환 사전으로부터 취득하는 제2 취득부와,
    취득된 상기 압축 부호를, 상기 데이터의 압축 데이터를 저장하는 제2 저장 영역에 기록하는 제1 기록부와,
    상기 제2 저장 영역에 기록된 압축 데이터를, 상기 기억부에 송신하는 송신부를 포함하는 정보 처리 장치를 포함하는 것을 특징으로 하는 정보 처리 시스템.
  16. 데이터에 있어서 데이터를 구성하는 요소 사이의 단락을 나타내는 단락 기호와, 상기 단락 기호에 의해서 단락지어지는 하나의 데이터 요소와의 조합에 대응하는 하나의 압축 부호를 상기 데이터 요소에 대응시킨 압축 처리용 정보를, 상기 데이터 요소의 종류마다 포함하는 구조를 갖는 압축 사전 데이터로서, 컴퓨터에 의한 압축 처리에 있어서, 상기 하나의 데이터 요소에 기초하여 상기 하나의 압축 부호가 참조되는 상기 압축 사전 데이터를 기억한 컴퓨터 판독 가능한 기억 매체.
  17. 데이터에 있어서 데이터를 구성하는 요소 사이의 단락을 나타내는 단락 기호와, 상기 단락 기호에 의해서 단락지어지는 하나의 데이터 요소와의 조합을, 상기 조합에 대응하는 하나의 압축 부호와 대응시킨 신장 처리용 정보를, 상기 데이터 요소의 종류마다 포함하는 구조를 갖는 신장 사전 데이터로서, 컴퓨터에 의한 신장 처리에 있어서, 상기 하나의 압축 부호에 기초하여 상기 조합이 참조되는 상기 신장 사전 데이터를 기억한 컴퓨터 판독 가능한 기억 매체.
KR1020157025611A 2013-03-22 2013-03-22 압축 장치, 압축 방법, 신장 장치, 신장 방법 및 정보 처리 시스템 KR101750646B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/001976 WO2014147671A1 (ja) 2013-03-22 2013-03-22 圧縮装置、圧縮方法、伸張装置、伸張方法および情報処理システム

Publications (2)

Publication Number Publication Date
KR20150119402A KR20150119402A (ko) 2015-10-23
KR101750646B1 true KR101750646B1 (ko) 2017-06-23

Family

ID=51579413

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157025611A KR101750646B1 (ko) 2013-03-22 2013-03-22 압축 장치, 압축 방법, 신장 장치, 신장 방법 및 정보 처리 시스템

Country Status (7)

Country Link
US (1) US9509333B2 (ko)
EP (1) EP2978135A4 (ko)
JP (1) JP6527462B2 (ko)
KR (1) KR101750646B1 (ko)
CN (1) CN105191144B (ko)
AU (1) AU2013382910B2 (ko)
WO (1) WO2014147671A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9779312B2 (en) * 2015-01-30 2017-10-03 Honda Motor Co., Ltd. Environment recognition system
TWI625715B (zh) * 2016-05-31 2018-06-01 瑞鼎科技股份有限公司 顯示驅動裝置及其運作方法
US10432217B2 (en) 2016-06-28 2019-10-01 International Business Machines Corporation Page filtering via compression dictionary filtering
CN109582653B (zh) * 2018-11-14 2020-12-08 网易(杭州)网络有限公司 文件的压缩、解压缩方法及设备
US10476518B1 (en) * 2018-12-06 2019-11-12 Nyquist Semiconductor Limited Hardware friendly data compression
CN115088192A (zh) * 2019-11-30 2022-09-20 字节跳动有限公司 视频数据的基于字典的编解码
CN113138968A (zh) * 2020-01-20 2021-07-20 普天信息技术有限公司 日志压缩方法及日志解压缩方法
US20230004533A1 (en) * 2021-07-01 2023-01-05 Microsoft Technology Licensing, Llc Hybrid intermediate stream format
CN115587076B (zh) * 2022-12-12 2023-05-16 北京象帝先计算技术有限公司 数据解压系统、图形处理系统、组件、设备及解压方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3553106B2 (ja) * 1992-08-13 2004-08-11 ゼロックス コーポレイション テキスト圧縮駆動部構築方法及び入力テキスト列圧縮方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1226369A (en) * 1983-10-19 1987-09-01 Louie D. Tague Method and apparatus for data compression
JPH04167821A (ja) * 1990-10-31 1992-06-15 Fujitsu Ltd データ符号化及び復号化方法
US5590317A (en) 1992-05-27 1996-12-31 Hitachi, Ltd. Document information compression and retrieval system and document information registration and retrieval method
JPH05324427A (ja) * 1992-05-27 1993-12-07 Hitachi Ltd 文書情報圧縮装置
US5710919A (en) * 1995-09-29 1998-01-20 Electronic Data Systems Corporation Record compression
JP3566441B2 (ja) 1996-01-30 2004-09-15 シャープ株式会社 テキスト圧縮用辞書作成装置
US5999949A (en) * 1997-03-14 1999-12-07 Crandall; Gary E. Text file compression system utilizing word terminators
JP3337633B2 (ja) 1997-12-03 2002-10-21 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮プログラム又はデータ復元プログラムを記録したコンピュータ読み取り可能な記録媒体
JPH11177438A (ja) * 1997-12-12 1999-07-02 Toyota Central Res & Dev Lab Inc 情報変換装置
JP3511901B2 (ja) 1998-07-01 2004-03-29 株式会社日立製作所 情報処理装置および情報処理システム
JP4774145B2 (ja) * 2000-11-24 2011-09-14 富士通株式会社 構造化文書圧縮装置および構造化文書復元装置並びに構造化文書処理システム
JP2004518327A (ja) * 2001-01-11 2004-06-17 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 逆進的にストリングを参照する為の識別子を用いたデータ圧縮方法
US20030123841A1 (en) * 2001-12-27 2003-07-03 Sylvie Jeannin Commercial detection in audio-visual content based on scene change distances on separator boundaries
US7624021B2 (en) * 2004-07-02 2009-11-24 Apple Inc. Universal container for audio data
JP5062131B2 (ja) 2008-10-06 2012-10-31 富士通株式会社 情報処理プログラム、情報処理装置、および情報処理方法
US8554745B2 (en) * 2009-04-27 2013-10-08 Netapp, Inc. Nearstore compression of data in a storage system
CN101807926B (zh) * 2010-01-21 2013-01-23 上海电力学院 低功耗soc测试数据压缩编码方法
CN101944362B (zh) * 2010-09-14 2012-05-30 北京大学 一种基于整形小波变换的音频无损压缩编码、解码方法
CN102480335B (zh) * 2010-11-30 2015-08-05 金蝶软件(中国)有限公司 一种业务数据的发送方法及系统
US8560508B2 (en) * 2011-07-22 2013-10-15 International Business Machines Corporation Real-time compression of tabular data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3553106B2 (ja) * 1992-08-13 2004-08-11 ゼロックス コーポレイション テキスト圧縮駆動部構築方法及び入力テキスト列圧縮方法

Also Published As

Publication number Publication date
KR20150119402A (ko) 2015-10-23
US9509333B2 (en) 2016-11-29
JPWO2014147671A1 (ja) 2017-02-16
CN105191144A (zh) 2015-12-23
AU2013382910B2 (en) 2017-01-05
US20160006454A1 (en) 2016-01-07
AU2013382910A1 (en) 2015-10-08
WO2014147671A1 (ja) 2014-09-25
JP6527462B2 (ja) 2019-06-05
EP2978135A1 (en) 2016-01-27
CN105191144B (zh) 2019-01-01
EP2978135A4 (en) 2016-06-01

Similar Documents

Publication Publication Date Title
KR101750646B1 (ko) 압축 장치, 압축 방법, 신장 장치, 신장 방법 및 정보 처리 시스템
US20200334294A1 (en) Merge tree modifications for maintenance operations
US20200349139A1 (en) Stream selection for multi-stream storage devices
US20200334295A1 (en) Merge tree garbage metrics
US10642515B2 (en) Data storage method, electronic device, and computer non-volatile storage medium
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
TW201841122A (zh) 鍵值儲存樹
WO2014147672A1 (ja) 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム
CN105846825A (zh) 压缩方法、解压缩方法、压缩装置以及解压缩装置
JP6648620B2 (ja) 符号化プログラム、符号化装置および符号化方法
EP3422205A1 (en) Database-archiving method and apparatus that generate index information, and method and apparatus for searching archived database comprising index information
JP6662169B2 (ja) 符号化プログラム、符号化方法、符号化装置、検索プログラム、検索方法および検索装置
JP6032292B2 (ja) 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置
JP6181247B1 (ja) データベース管理装置、データベース管理方法、およびデータベース管理プログラム
US9219497B2 (en) Compression device, compression method, and recording medium
JP6032291B2 (ja) 圧縮プログラム、圧縮装置、伸張プログラム、伸張装置およびシステム
JP4011662B2 (ja) 電子ファイリング方法及び装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant