KR101748982B1 - 매체에 저장된 프로그램 - Google Patents

매체에 저장된 프로그램 Download PDF

Info

Publication number
KR101748982B1
KR101748982B1 KR1020160004816A KR20160004816A KR101748982B1 KR 101748982 B1 KR101748982 B1 KR 101748982B1 KR 1020160004816 A KR1020160004816 A KR 1020160004816A KR 20160004816 A KR20160004816 A KR 20160004816A KR 101748982 B1 KR101748982 B1 KR 101748982B1
Authority
KR
South Korea
Prior art keywords
character
character code
string
compression
data
Prior art date
Application number
KR1020160004816A
Other languages
English (en)
Other versions
KR20160089279A (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 KR20160089279A publication Critical patent/KR20160089279A/ko
Application granted granted Critical
Publication of KR101748982B1 publication Critical patent/KR101748982B1/ko

Links

Images

Classifications

    • 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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • G06F17/2264
    • G06F17/271
    • G06F17/2735
    • 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/126Character encoding
    • G06F40/129Handling non-Latin characters, e.g. kana-to-kanji conversion
    • 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/151Transformation
    • G06F40/154Tree transformation for tree-structured or markup documents, e.g. XSLT, XSL-FO or stylesheets
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M5/00Conversion of the form of the representation of individual digits
    • H03M5/02Conversion to or from representation by pulses
    • H03M5/04Conversion to or from representation by pulses the pulses having two levels
    • H03M5/14Code representation, e.g. transition, for a given bit cell depending on the information in one or more adjacent bit cells, e.g. delay modulation code, double density code
    • H03M5/145Conversion to or from block codes or representations thereof
    • 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
    • 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/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

[과제] 신장 처리에 이용되는 기억 영역의 낭비를 없애는 것.
[해결수단] 정보 처리 장치(100)는, 제1 문자 코드에 의한 문자 데이터열이, 하나 이상의 문자를 포함하는 문자열의 단위로 압축 부호화된 압축 파일을 입력한다. 정보 처리 장치(100)는, 압축 파일에 포함되며, 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각을, 상기 압축 부호화 단위의 제1 문자 코드 표기에 대응하는 정보에서 상기 압축 부호화 단위의 제2 문자 코드 표기에 대응하는 정보로 각각 변환한다. 정보 처리 장치(100)는, 압축 부호화된 문자 데이터열의 압축 부호화의 단위 각각 및 변환된 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각으로부터 신장 파일을 생성한다.

Description

매체에 저장된 프로그램{PROGRAM STORED IN MEDIUM}
본 발명은 프로그램에 관한 것이다.
압축 데이터에 대하여, 문자 코드 변환이 필요한 경우, 일반적으로 신장 처리와 문자 코드 변환 처리의 순으로 2 패스로 실시된다(예컨대, 특허문헌 1 참조). 따라서, 신장 처리의 결과를 기억하는 기억 영역이 준비될 필요가 있다.
압축 신장 알고리즘으로서는, LZ77을 이용한 ZIP가 주류이다. ZIP에서는, 압축 대상의 문자열에 대하여, 슬라이드창을 이용하여 최장 일치의 문자열을 판정하고, 압축 데이터를 생성한다. 한편, 신장 대상의 압축 데이터에 대하여, 슬라이드창을 이용하여 최장 일치의 문자열을 판정하고, 신장 데이터를 생성한다. 슬라이드창을 이용한 최장 일치 문자열의 판정은 바이트 단위로 이루어진다.
또한, 정적 사전을 이용하여, 압축 대상의 문자열을 정적 사전의 일본어 단어나 CJK 문자에 할당된 압축 부호로 변환하여, 압축 데이터를 생성하는 기술이 있다.
특허문헌 1: 일본 특허공개 2003-30030호 공보
그러나, 압축 데이터를 신장한 데이터에 대하여 문자 코드 변환을 하는 경우, 압축 데이터의 신장 처리에 의해 출력되는 데이터의 단위와, 문자 코드 변환 처리가 행해지는 데이터의 단위가 다르기 때문에, 일단, 압축 데이터를 신장 처리에 의해 전부 전개한 후, 별개의 처리로서, 전개한 데이터에 대하여 문자 코드 변환 처리를 할 필요가 있다. 이 때문에, 일례로서, 기억 영역에 낭비가 생긴다고 하는 문제가 있다. 또한, 다른 예로서, 처리 시간이 길어진다고 하는 문제가 있다.
예컨대, 종래 기술에서 이용하는 정적 사전에는, 특정 문자 코드계의 일본어 단어나, 중국어, 한국어, 일본어의 문자인 CJK 문자가 등록되어 있기 때문에, 등록되어 있는 일본어 단어나 CJK 문자에 할당된 압축 부호로 변환되어 압축 처리가 이루어진다. 이러한 경우에는, 도 1에 도시하는 것과 같이, 신장 처리에서는, 정적 사전에 대응하는 신장용의 트리를 이용하여, 압축 데이터를 전부 신장하고, 전부 신장한 신장 데이터를 기억 영역에 기억한다. 그리고, 문자 코드 변환 처리는, 기억 영역에 기억된 모든 신장 데이터의 문자 코드를 변환하여, 변환 데이터를 생성한다. 이 결과, 신장 처리는, 압축 데이터 전체의 신장 결과를 기억 영역에 기억할 필요가 있어, 기억 영역에 낭비가 생긴다. 또한, 신장 처리 및 문자 코드 변환 처리의 처리 시간이 길어진다.
하나의 측면에서는, 신장 처리와 문자 코드 변환 처리에 이용되는 기억 영역의 낭비를 없애는 것을 목적으로 한다. 하나의 측면에서는, 신장 처리 및 문자 코드 변환 처리의 처리 시간을 단축하는 것을 목적으로 한다.
제1 안에서는, 컴퓨터에 하기의 처리를 실행시킨다. 컴퓨터에, 제1 문자 코드에 의한 문자 데이터열이, 하나 이상의 문자를 포함하는 문자열의 단위로 압축 부호화된 압축 파일을 입력하는 처리를 실행시킨다. 컴퓨터에, 상기 압축 파일에 포함되고, 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각을, 상기 압축 부호화 단위의 상기 제1 문자 코드 표기에 대응하는 정보에서, 그 압축 부호화 단위의 제2 문자 코드 표기에 대응하는 정보로 각각 변환하는 처리를 실행시킨다. 컴퓨터에, 상기 압축 부호화된 상기 문자 데이터열의 압축 부호화의 단위 각각, 및 상기 변환된 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각으로부터 변환 압축 파일을 생성하는 처리를 실행시킨다.
하나의 양태에 따르면, 일괄 신장 후에 변환하는 경우와 비교하여 신장 처리와 문자 코드 변환 처리에 이용되는 기억 영역의 낭비를 없앨 수 있다. 또한, 일괄 신장 후에 변환하는 경우와 비교하여 신장 처리 및 문자 코드 변환 처리의 처리 시간을 단축할 수 있다.
도 1은 신장 처리의 일례를 도시하는 도면이다.
도 2는 본 실시예에 따른 정보 처리 장치의 압축 처리의 흐름의 일례를 도시하는 도면이다.
도 3은 동적사전부의 일례를 도시하는 도면이다.
도 4는 압축 파일 F2의 블록 구성예를 도시하는 도면이다.
도 5a는 본 실시예에 따른 정보 처리 장치의 신장 처리의 흐름의 일례를 도시하는 도면(1)이다.
도 5b는 본 실시예에 따른 정보 처리 장치의 신장 처리의 흐름의 일례를 도시하는 도면(2)이다.
도 6은 본 실시예에 따른 정보 처리 장치의 구성을 도시하는 기능 블록도이다.
도 7은 본 실시예에 따른 문자 코드 테이블의 데이터 구조의 일례를 도시하는 도면이다.
도 8a는 압축용 트리의 데이터 구조의 일례를 도시하는 도면(1)이다.
도 8b는 압축용 트리의 데이터 구조의 일례를 도시하는 도면(2)이다.
도 9는 신장용 트리의 데이터 구조의 일례를 도시하는 도면이다.
도 10은 본 실시예에 따른 압축부의 구성의 일례를 도시하는 기능 블록도이다.
도 11은 본 실시예에 따른 신장부의 구성의 일례를 도시하는 기능 블록도이다.
도 12는 본 실시예에 따른 압축부의 처리 순서를 도시하는 흐름도이다.
도 13은 본 실시예에 따른 신장부의 처리 순서를 도시하는 흐름도이다.
도 14는 컴퓨터의 하드웨어 구성예를 도시하는 도면이다.
도 15는 컴퓨터에서 동작하는 프로그램의 구성예를 도시하는 도면이다.
도 16은 실시형태의 시스템에 있어서의 장치의 구성예를 도시하는 도면이다.
이하에, 본원이 개시하는 프로그램의 실시예를 도면에 기초하여 상세하게 설명한다. 프로그램은, 예컨대 압축 프로그램이나 신장 프로그램을 포함한다. 한편, 이 실시예에 의해 본 발명이 한정되는 것은 아니다.
[실시예]
도 2는 본 실시예에 따른 정보 처리 장치의 압축 처리의 흐름의 일례를 도시하는 도면이다. 정보 처리 장치는, 압축 처리의 작업 영역(work area)으로서, 메모리에 기억 영역 A1, 기억 영역 A2, 기억 영역 A3, 기억 영역 A4를 둔다. 이하의 설명에서는 적절하게 기억 영역 A1, 기억 영역 A2, 기억 영역 A3을 각각 부호화부, 참조부, 동적사전부라고 부른다.
정보 처리 장치는, 압축 대상의 파일 F1을 독출하고, 파일 F1의 텍스트에 대하여, 영문자의 경우, 선두 문자에서부터 종단 기호를 단락으로 하는 문자열을 영문자의 단어로서 추출한다. 또한, 정보 처리 장치는, 압축 대상의 파일 F1의 텍스트에 대하여, CJK 문자 또는 일본어 단어의 경우, 선두 문자에서부터 문자 단위로 CJK 문자 또는 일본어 단어로서 추출한다. 예컨대, 파일 F1에는, 특정의 문자 코드계인 「···동··금일··Kataoka△···」라고 하는 데이터가 포함된다. 「동」, 「금일」이나 「Kataoka△」 등의 단어가 존재한다. 「동」은 CJK 문자의 일례이고, 「금일」은 일본어 단어의 일례이며, 문자 코드계에 따라서 다른 문자 코드열로 나타내어진다. 「Kataoka」는 인명의 영문자의 일례이며, 문자 코드계에 따라서 변하지 않는 문자 코드열로 나타내어진다. 종단 기호는, 공백(스페이스), 콤마(,)나 피리어드(.)의 기호이다. 본 실시예에서는 일례로서, 종단 기호를 「△(삼각)」으로 나타낸다. 또한, 본 실시예에서는 일례로서, 파일 F1의 텍스트의 문자 코드계를 UTF-8로 하여 설명한다.
정보 처리 장치는, 비트 필터 C1과 문자 코드열을 비교하여, 문자 코드열이 비트 필터 C1에 히트하는지 여부를 판정한다. 비트 필터는, 정적 사전을 이용하여 압축하는 단어의 문자 코드열을 특정하는 필터이다. 정보 처리 장치는, 문자 코드열이 비트 필터 C1에 히트한 경우에는, 정적 사전에 기초하여 단어의 문자 코드열에 대응하는 압축 부호로 변환하여, 압축 데이터를 출력한다. 이에 대하여, 정보 처리 장치는, 문자 코드열이 비트 필터 C1의 정적 사전에 히트하지 않는 경우에는, 동적 사전에 등록된 단어의 문자 코드열에 대응하는 압축 부호로 변환하여, 압축 데이터를 출력한다.
여기서, 정적 사전이란, 일반적인 영어사전, 국어사전이나 교과서 등에 기초하여 문서 중에 출현하는 단어나 문자의 출현 빈도를 특정하여, 출현 빈도가 보다 높은 단어나 문자에 대하여, 보다 짧은 압축 부호를 할당한 사전이다. 또한, 정적 사전에는, 일본어 단어 단위 혹은 CJK 문자 단위로 압축 부호가 할당된다.
동적 사전은, 비트 필터 C1에 히트하지 않는 문자 코드열은 슬라이드창의 부호화부에 저장되고, 축적된 참조부의 문자 코드열과 대조된다. 일치한 문자 코드열은, 동적 사전에 등록되고, 그 등록 번호가 압축 부호에 할당된다. 동적 사전에 관한 자세한 설명은 후술한다.
정보 처리 장치가 압축 대상의 파일 F1의 CJK 문자「동」의 압축 데이터를 생성하는 경우의 처리에 관해서 설명한다. 또한, CJK 문자의 문자 코드열은 비트 필터 C1에 히트하는 것으로 한다.
정보 처리 장치는, CJK 문자「동」과 비트 필터 C1을 비교하여, CJK 문자「동」이 비트 필터 C1에 히트하는지 여부를 판정한다. 정보 처리 장치는, CJK 문자「동」이 비트 필터 C1에 히트하기 때문에, CJK 문자「동」을 정적 사전에 등록되어 있는 압축 부호로 부호화한다. 정보 처리 장치는, 식별자「0」과 CJK 문자「동」의 압축 부호를 포함하는 압축 데이터 d1을 생성한다. 식별자「0」은, 문자 코드열이 정적 사전에 기초하여 부호화되었음을 나타내는 정보이다. 정보 처리 장치는, 압축 데이터 d1을 기억 영역 A4에 기록한다.
이어서, 정보 처리 장치가 압축 대상의 파일 F1의 일본어 단어「금일」의 압축 데이터를 생성하는 경우의 처리에 관해서 설명한다. 또한, 일본어 단어의 문자 코드열은, 비트 필터 C1에 히트하는 것으로 한다.
정보 처리 장치는, 일본어 단어「금일」과 비트 필터 C1을 비교하여, 일본어 단어「금일」이 비트 필터 C1에 히트하는지 여부를 판정한다. 정보 처리 장치는, 일본어 단어「금일」이 비트 필터 C1에 히트하기 때문에, 일본어 단어「금일」을 정적 사전에 등록되어 있는 압축 부호로 부호화한다. 정보 처리 장치는, 식별자「0」과 일본어 단어「금일」의 압축 부호를 포함하는 압축 데이터 d3을 생성한다. 식별자「0」은, 문자 코드열이 정적 사전에 기초하여 부호화되었음을 나타내는 정보이다. 정보 처리 장치는, 압축 데이터 d3을 기억 영역 A4에 기록한다.
이어서, 정보 처리 장치가 압축 대상의 파일 F1의 영문자의 문자열「Kataoka△」의 압축 데이터를 생성하는 경우의 처리에 관해서 설명한다. 또한, 문자열「Kataoka△」은 비트 필터 C1에 히트하지 않는 것으로 한다.
정보 처리 장치는, 문자열「Kataoka△」과 비트 필터 C1을 비교하여, 문자열「Kataoka△」이 비트 필터 C1에 히트하는지 여부를 판정한다. 정보 처리 장치는, 문자열「Kataoka△」이 비트 필터 C1에 히트하지 않기 때문에, 하기의 처리를 실행한다.
정보 처리 장치는, 문자열「Kataoka△」을 기억 영역 A1에 저장하고, 기억 영역 A2에 저장된 문자열과 기억 영역 A1의 문자열을 비교하여, 최장 일치 문자열을 검색한다. 최장 일치 문자열은, 기억 영역 A1에 저장된 문자열과 기억 영역 A2에 저장된 문자열 중, 가장 길게 일치하는 문자열이다. 예컨대, 기억 영역 A2에 문자열「···Kataoka△···」이 이미 저장되어 있는 경우에는, 최장 일치 문자열은 「Kataoka△」가 된다. 정보 처리 장치는, 기억 영역 A2에 대하여 「K」의 탐색을 하고, 탐색에 의해 얻어진 기억 영역 A2 내의 「K」 위치에서부터 「a」, 「t」, 「a」, 「o」, 「k」, 「a」, 「△」로 연속되어 있는지 여부를 순차 대조한다.
정보 처리 장치는, 최장 일치 문자열이 소정의 길이 Lmin 이상인 경우에, 최장 일치 문자열「Kataoka△」을 동적사전부의 기억 영역 A3에 등록한다. 정보 처리 장치는, 동적사전부의 등록 내용에 기초하여 압축 부호를 생성한다. 즉, 정보 처리 장치는, 동적사전부에 등록한 최장 일치 문자열의 등록 번호를, 문자열「Kataoka△」의 압축 부호로서 특정한다. 정보 처리 장치는, 식별자「1」과 문자열「Kataoka△」의 압축 부호를 포함하는 압축 데이터 d2를 생성한다. 식별자「1」은, 문자열이 동적사전에 기초하여 부호화되었음을 나타내는 정보이다. 정보 처리 장치는, 압축 데이터 d2를 기억 영역 A4에 기록한다. 또한, 정보 처리 장치는, 기억 영역 A1에 저장된 문자열을 기억 영역 A2에 추기함으로써, 기억 영역 A2를 갱신한다.
기억 영역 A2는, 각각의 데이터 사이즈가 정해진 데이터 영역이다. 예컨대, 기억 영역 A2는, 예컨대 64 킬로바이트의 고정 길이의 기억 영역이다. 정보 처리 장치는, 기억 영역 A2에 정해진 데이터 사이즈 이상의 데이터를 저장하는 경우에는, 기억 영역 A2의 선두에 저장된 오래된 데이터 상에서 새로운 데이터를 저장한다. 기억 영역 A2 내에 저장되는 데이터는, 데이터의 저장에 따라서 갱신되는 기록 위치에서부터의 상대적인 어드레스에 의해 선두 위치가 표시된다.
기억 영역 A3은, 입력 파일의 크기에 따라서 데이터 사이즈가 정해진 기억 영역이다. 예컨대, 기억 영역 A3은, 예컨대 64 킬로바이트의 고정 길이의 기억 영역이다. 예컨대, 정보 처리 장치는, 기억 영역 A3에 정해진 데이터 사이즈 이상의 데이터를 저장하는 경우에는, 새로운 데이터의 저장을 억제한다.
도 3은 동적사전부의 일례를 도시하는 도면이다. 도 3에 도시되는 동적사전부는, 기억 영역 A3과 참조 테이블 T1을 포함한다. 참조 테이블 T1은, 등록 번호와, 저장 위치와, 데이터 길이를 대응시켜 유지한다. 도 3에 도시하는 예에서는, 등록 번호, 저장 위치, 데이터 길이를 2진수로 나타낸다. 등록 번호는, 기억 영역 A3에 등록된 최장 일치의 문자 코드열이 몇 번째에 등록된 데이터인지를 나타내는 정보이다. 한편, 본 실시예에서는, 1번째로 등록된 데이터의 등록 번호를 「00000000」이라고 하자. 저장 위치는, 최장 일치 문자열의 선두 문자가 저장된 기억 영역 A3 내의 위치(바이트)를 나타내는 정보이다. 데이터 길이는, 최장 일치 문자열의 길이를 나타내는 정보이다.
예컨대, 최장 일치 문자열「Kataoka△」이 기억 영역 A3에 7번째로 등록된 최장 일치 문자열인 경우에는, 정보 처리 장치는, 최장 일치 문자열「Kataoka△」에 대응하는 등록 번호로서, 참조 테이블 T1의 등록 번호에 「00000111」을 등록한다. 또한, 정보 처리 장치는, 최장 일치 문자열「Kataoka△」의 선두 문자「K」가 기억 영역 A3의 「30」에 저장되어 있기 때문에, 저장 위치에 「000000001110」을 등록한다. 정보 처리 장치는, 최장 일치 문자열「Kataoka△」의 데이터 길이가 「8」이기 때문에, 데이터 길이에 「1000」을 등록한다.
도 3에 도시하는 것과 같이, 최장 일치 문자열「Kataoka△」이 동적사전부에 등록된 것으로 하면, 최장 일치 문자열「Kataoka△」의 등록 번호는 「00000111」이 된다. 이 경우에는, 정보 처리 장치는, 문자열「Kataoka△」의 압축 부호를 「00000111」로 한다. 이 때문에, 정보 처리 장치는, 문자열「Kataoka△」의 압축 데이터 d2로서, 식별자「1」, 등록 번호「00000111」을 포함하는 압축 데이터 d2를 생성한다.
도 4는 압축 파일 F2의 블록 구성예를 도시하는 도면이다. 도 4에 도시하는 것과 같이, 압축 파일 F2는 헤더부와 압축 데이터와 트레일러부를 갖는다. 헤더부는, 예컨대, 압축 파일 F2의 생성에 이용된 압축 알고리즘을 식별하는 정보나, 압축에 이용된 파라메터 등의 정보를 갖는다. 압축 데이터는 정보 처리 장치가 생성한 각 압축 데이터에 대응한다. 트레일러부는 압축 처리가 완료된 후의 동적사전부의 정보를 갖는다. 동적사전부의 정보는 도 3에 도시한 동적사전부의 정보에 대응한다.
도 5a 및 도 5b는 본 실시예에 따른 정보 처리 장치의 신장 처리의 흐름의 일례를 도시하는 도면이다. 도 5a에서는, CJK 문자를 압축한 압축 데이터의 신장 처리와, 영문자의 문자열을 압축한 압축 데이터의 신장 처리의 흐름을 도시한다. 도 5b에서는, 일본어 단어를 압축한 압축 데이터의 신장 처리의 흐름을 도시한다. 정보 처리 장치는, 신장 처리의 작업 영역으로서, 메모리에 기억 영역 B1, 기억 영역 B2 및 기억 영역 B3을 둔다. 정보 처리 장치는, 압축 파일 F2를 기억 영역 B1에 로드하여, 순차 압축 데이터를 독출한다. 정보 처리 장치는, 독출한 압축 데이터에 기초하여, 신장 데이터를 생성한다. 한편, 본 실시예에 따른 신장 처리는, 압축 데이터의 신장 결과를 문자 코드 변환이 이루어진 상태의 신장 결과로 한다. 도 5a 및 도 5b에서는, UTF-8에서 UTF-16으로 문자 코드 변환이 이루어진 상태의 신장 데이터로 하는 것으로 한다.
정보 처리 장치는 압축 데이터에 포함되는 식별자에 따른 신장 처리를 한다. 정보 처리 장치는, 생성된 신장 데이터를 기억 영역 B3에 저장하고, 기억 영역 B3에 저장된 신장 데이터에 기초하여 신장 파일 F3이 생성된다. 또한, 정보 처리 장치는, 기억 영역 B2에, 도 4의 트레일러부에 저장된 동적사전부의 정보를 로드한다. 이하의 설명에서는 적절하게 기억 영역 B1을 부호화부라고 부르고, 기억 영역 B2를 동적사전부라고 부른다. 한편, 신장 파일 F3은 변환 압축 파일의 일례이다.
도 5a에서는, 도 2에 도시한 압축 데이터 d1, d2에 대한 신장 처리를 설명한다.
정보 처리 장치는, 압축 데이터 d1을 독출하여, 압축 데이터 d1의 식별자를 판정한다. 정보 처리 장치는, 압축 데이터 d1의 식별자가 「0」인 경우에는, 압축 데이터 d1이 정적 사전에 의해서 부호화되었다고 판정한다. 정보 처리 장치는, 압축 데이터 d1과 신장용 트리를 비교하여, 신장용 트리에 표시되는 신장 데이터에의 포인터를 특정한다. 그리고, 정보 처리 장치는, 특정 신장 데이터에의 포인터를 기초로, 문자 코드 변환이 이루어진 신장 데이터를 특정한다. 즉, 정보 처리 장치는, UTF-8에서 UTF-16으로 문자 코드 변환이 이루어진 신장 데이터를 특정한다.
예컨대, 정보 처리 장치는, 신장 데이터에의 포인터에 대응하는 UTF-8의 문자 코드 테이블을 UTF-16의 문자 코드 테이블로 치환한다. 여기서, 문자 코드 테이블이란, CJK 문자에 대한 문자 코드열을 나타내는 테이블이며, 문자 코드계마다 존재한다. 문자 코드계마다의 각 문자 코드 테이블에는, 미리 정해진 CJK 문자의 순으로 문자 코드열이 설정된다. 정보 처리 장치는, 치환된 UTF-16의 문자 코드 테이블과 신장 데이터에의 포인터에 기초하여, UTF-16에 있어서의 신장 데이터를 특정한다. 일례로서, 신장용 트리의 신장 데이터에의 포인터가, UTF-8의 문자 코드 테이블의 「E69DB1」을 가리키고 있다고 하자. 「E69DB1」은, CJK 문자「동」의 UTF-8의 문자 코드열이다. 그러면, 신장용 트리의 신장 데이터에의 포인터가, 문자 코드 테이블의 치환 후, UTF-16의 문자 코드 테이블의 「6771」을 가리키기 때문에, 신장 데이터에의 포인터에 대한 UTF-16의 신장 데이터가 특정된다. 즉, UTF-8에서 UTF-16으로 변환된 문자 코드열「6771」이 특정된다.
그리고, 정보 처리 장치는, 문자 코드 변환이 이루어진 신장 데이터를 기억 영역 B3에 기록한다.
정보 처리 장치는, 압축 데이터 d2를 독출하여, 압축 데이터 d2의 식별자를 판정한다. 정보 처리 장치는, 압축 데이터 d2의 식별자가 「1」인 경우에는, 압축 데이터 d2가 동적 사전에 의해서 부호화되었다고 판정한다. 정보 처리 장치는, 압축 데이터 d2 내의 압축 부호에 기초하여, 동적사전부를 참조하여, 신장 데이터를 생성한다. 그리고, 정보 처리 장치는, 문자 코드 변환이 이루어진 신장 데이터를 특정한다. 한편, 영문자는, ASCII(American standard code for information interchange) 등 모든 문자 코드계에서 동일한 문자 코드열로 되기 때문에, 생성된 신장 데이터를, UTF-8에서 UTF-16으로 문자 코드 변환하더라도 동일한 문자 코드열로 된다.
예컨대, 정보 처리 장치는, 압축 데이터 d2에 포함되는 등록 번호와, 동적사전부의 참조 테이블 T1을 비교하여, 기억 영역 B2 내의 저장 위치 및 데이터 길이를 특정한다. 정보 처리 장치는, 저장 위치 및 데이터 길이에 대응하는 데이터를, 기억 영역 B2로부터 독출하고, 독출한 데이터를 신장 데이터로 한다. 예컨대, 압축 데이터 d2 내의 등록 번호는, 동적사전부 내의 「Kataoka△」를 나타내기 때문에, 신장 데이터로서 「Kataoka△」가 생성된다.
그리고, 정보 처리 장치는, 문자 코드 변환이 이루어진 신장 데이터를 기억 영역 B3에 기록한다.
도 5b에서는, 도 2에 도시한 압축 데이터 d3에 대한 신장 처리를 설명한다.
정보 처리 장치는, 압축 데이터 d3을 독출하여, 압축 데이터 d3의 식별자를 판정한다. 정보 처리 장치는, 압축 데이터 d3의 식별자가 「0」인 경우에는, 압축 데이터 d3이 정적 사전에 의해서 부호화되었다고 판정한다. 정보 처리 장치는, 압축 데이터 d3과 신장용 트리를 비교하여, 신장용 트리에 표시되는 신장 데이터에의 포인터를 특정한다. 그리고, 정보 처리 장치는, 특정한 신장 데이터에의 포인터를 기초로, 문자 코드 변환이 이루어진 신장 데이터를 특정한다. 즉, 정보 처리 장치는, UTF-8에서 UTF-16으로 문자 코드 변환이 이루어진 신장 데이터를 특정한다.
예컨대, 정보 처리 장치는, 신장 데이터에의 포인터에 대응하는 UTF-8의 문자 코드 테이블을 UTF-16의 문자 코드 테이블로 치환한다. 여기서, 문자 코드 테이블이란, 일본어 단어에 대한 문자 코드열을 나타내는 테이블이며, 문자 코드계마다 존재한다. 문자 코드계마다의 각 문자 코드 테이블에는, 미리 정해진 일본어 단어의 순으로 문자 코드열이 설정된다. 정보 처리 장치는, 치환된 UTF-16의 문자 코드 테이블과 신장 데이터에의 포인터에 기초하여, UTF-16에 있어서의 신장 데이터를 특정한다. 일례로서, 신장용 트리의 신장 데이터에의 포인터가, UTF-8의 문자 코드 테이블의 「e4bb8ae2bd87」을 가리키고 있다고 하자. 「e4bb8ae2bd87」은 일본어 단어「금일」의 UTF-8의 문자 코드열이다. 그러면, 신장용 트리의 신장 데이터에의 포인터가, 문자 코드 테이블의 치환 후, UTF-16의 문자 코드 테이블의 「4eca65e5」를 가리키기 때문에, 신장 데이터에의 포인터에 대한 UTF-16의 신장 데이터가 특정된다. 즉, UTF-8에서 UTF-16으로 변환된 문자 코드열「4eca65e5」가 특정된다.
그리고, 정보 처리 장치는, 문자 코드 변환이 이루어진 신장 데이터를, 기억 영역 B3에 기록한다. 한편, 문자 코드 테이블의 상세한 것은 후술하는 것으로 한다.
도 6은 본 실시예에 따른 정보 처리 장치의 구성을 도시하는 기능 블록도이다. 도 6에 도시하는 것과 같이, 이 정보 처리 장치(100)는, 압축부(100a)와, 신장부(100b)와, 기억부(100c)를 갖는다.
압축부(100a)는 도 2에 도시한 압축 처리를 실행하는 처리부이다. 신장부(100b)는 도 5a 및 도 5b에 도시한 신장 처리를 실행하는 처리부이다. 기억부(100c)는 문자 코드 테이블(200)을 기억한다. 문자 코드 테이블(200)은, 압축 데이터의 식별자가 「0」인 경우에 압축 데이터가 신장될 때에 이용되는 테이블이며, 문자 코드계마다 존재한다. 또한, 문자 코드 테이블(200)에는, CJK 문자에 대한 신장 문자 코드열과, 일본어 단어에 대한 신장 문자 코드열이 포함된다.
여기서, 문자 코드 테이블(200)의 데이터 구조를 도 7을 참조하여 설명한다. 도 7은 본 실시예에 따른 문자 코드 테이블의 데이터 구조의 일례를 도시하는 도면이다. 도 7에서는, 문자 코드계가 UTF-8과 UTF-16인 경우의 문자 코드 테이블(200)에 관해서 설명한다. 도 7에 도시하는 것과 같이, 문자 코드 테이블(200)은, 신장 문자 코드열(200a)을 길이(200b)와 함께 기억한다. 신장 문자 코드열(200a)은, 신장 후의 문자 코드열이며, CJK 문자 또는 일본어 단어를 문자 코드계로 나타낸 문자 코드열에 대응한다. 길이(200b)는, 신장 문자 코드열(200a)의 길이를 나타낸다. 신장 문자 코드열(200a)은, 다른 문자 코드계끼리 사이에서, 동일한 CJK 문자 또는 동일한 일본어 단어라면 동일한 위치가 되게 기억된다. 즉, 압축 데이터의 식별자가 「0」인 경우에, 정보 처리 장치는, 압축 데이터 d1과 신장용 트리를 비교하여, 신장용 트리에 표시되는 신장 데이터에의 포인터를 특정하는데, 이 신장 데이터에의 포인터가 문자 코드계마다 동일한 위치를 가리키게 된다.
일례로서, 도 7의 좌측 도면에는, 문자 코드계가 UTF-8인 경우의 문자 코드 테이블(200)이 도시되어 있다. 도 7의 우측 도면에는, 문자 코드계가 UTF-16인 경우의 문자 코드 테이블(200)이 도시되어 있다. 문자 코드계가 UTF-8인 경우, 신장 문자 코드열(200a)로서 「E69DB1」, 길이(200b)로서 「3」으로 기억하고 있다. 「E69DB1」은, UTF-8에 있어서의 CJK 문자「동」의 문자 코드열이다. 문자 코드계가 UTF-16인 경우, 신장 문자 코드열(200a)로서 「6771」, 길이(200b)로서 「2」로 기억하고 있다. 「6771」은, UTF-16에 있어서의 CJK 문자「동」의 문자 코드열이다. CJK 문자「동」의 신장 문자 코드열(200a)이, UTF-8 및 UTF-16에서 같은 위치에 기억되어 있다. CJK 문자「신」도 마찬가지로, 신장 문자 코드열(200a)이, UTF-8 및 UTF-16에서 같은 위치에 기억되어 있다.
도 6으로 되돌아가면, 정보 처리 장치(100)는, 도 2, 도 5a 및 도 5b 등에 도시한 기억 영역 A1, A2, A3, A4, B1, B2, B3을 기억부(100c)에 설정한다. 또한, 기억부(100c)는 압축용의 트리 및 신장용의 트리를 기억한다.
도 8a 및 도 8b는 압축용 트리의 데이터 구조의 일례를 도시하는 도면이다. 도 8a에서는, CJK 문자에 대응하는 압축용 트리의 데이터 구조를 도시한다. 도 8b에서는, 일본어 단어에 대응하는 압축용 트리의 데이터 구조를 도시한다. 한편, 압축용의 트리는 문자 코드계마다 존재한다.
도 8a에는, 일례로서, 문자 코드계가 UTF-8인 경우의 압축용 트리를 도시하고 있다. 도 8a에 도시하는 것과 같이, 압축용의 트리(50)에는, 2 그램, 비트맵, 포인터, CJK 문자, 문자 코드열 길이, 출현 빈도, 압축 부호 및 공통 문자 코드열이 포함된다. 이 중, 2 그램, 비트맵, 포인터, CJK 문자, 문자 코드열 길이는, 비트 필터 C1에 대응한다. 또한, CJK 문자, 문자 코드열 길이, 출현 빈도, 압축 부호 및 공통 문자 코드열은, 정적 사전 C2에 대응한다.
2 그램은 2 문자의 문자 코드열을 나타내는 정보이다. 비트맵은, 2 그램의 문자 코드열에 대응하는 비트맵을 나타낸다. 예컨대, 「00h00h」에 대응하는 비트맵은 「0_0_0_0_0」이 된다. 포인터는, 비트맵에 대응하는 CJK 문자의 위치를 나타내는 포인터이다.
CJK 문자는, 정적 사전 C2에 등록된 CJK 문자이며, 문자 코드열로 나타내어진다. 여기서는, 문자 코드열을 괄호 내에 기재한다. 문자 코드열 길이는 CJK 문자에 대응하는 문자 코드열의 길이이다. 출현 빈도는 CJK 문자의 출현 빈도이다. 압축 부호는 CJK 문자에 할당된 압축 부호이다. 공통 문자 코드열은 CJK 문자에 할당된 내부적인 문자 코드열이며, 문자 코드계가 다르더라도 공통되는 문자 코드열이다.
도 8b에는, 일례로서, 문자 코드계가 UTF-8인 경우의 압축용의 트리를 도시하고 있다. 도 8b에 도시하는 것과 같이, 압축용의 트리(50)에는, 2 그램, 비트맵, 포인터, 단어, 문자 코드열 길이, 출현 빈도 및 압축 부호가 포함된다. 이 중, 2 그램, 비트맵, 포인터, 단어, 문자 코드열 길이는 비트 필터 C1에 대응한다. 또한, 단어, 문자 코드열 길이, 출현 빈도 및 압축 부호는 정적 사전 C2에 대응한다.
2 그램은 2 문자의 문자 코드열을 나타내는 정보이다. 비트맵은, 2 그램의 문자 코드열에 대응하는 비트맵을 나타낸다. 예컨대, 「00h00h」에 대응하는 비트맵은 「0_0_0_0_0」이 된다. 포인터는 비트맵에 대응하는 단어의 위치를 나타내는 포인터이다.
단어는 정적 사전 C2에 등록된 일본어 단어이며, 문자 코드열로 나타내어진다. 여기서는, 문자 코드열을 괄호 내에 기재한다. 문자 코드열 길이는 단어에 대응하는 문자 코드열의 길이이다. 출현 빈도는 단어의 출현 빈도이다. 압축 부호는 단어에 할당된 압축 부호이다.
도 9는 신장용 트리의 데이터 구조의 일례를 도시하는 도면이다. 도 9에 도시하는 것과 같이, 신장용의 트리(60)는, 복수의 가지(60-1~60-n)와, 잎(61-1~61-m)을 갖는다. 각 가지(60-1~60-n)에는 소정의 비트열이 할당된다. 정보 처리 장치(100)는, 압축 데이터의 비트열과, 가지(60-1~60-n)에 할당된 비트열을 비교하여, 압축 데이터의 비트열에 히트하는 가지에 접속되는 잎을 특정한다. 잎에는 압축 데이터에 대응하는 문자 등의 정보가 저장된다.
예컨대, 잎의 데이터 구조는 61에 나타내는 것으로 된다. 예컨대, 잎에는, 잎 식별 정보와, 압축 부호 길이와, CJK 문자 또는 단어에의 포인터가 저장된다. 잎 식별 정보는 잎을 일의적으로 식별하는 정보이다. 압축 부호 길이는, 각 가지(60-1~60-n)와 비교한 압축 데이터의 비트열 중, 유효한 길이를 나타내는 정보이다. CJK 문자 또는 단어에의 포인터는, 압축 부호를 신장한 경우의 신장 데이터를 일의적으로 나타내는 정보이며, 신장 데이터에의 포인터에 대응한다.
예컨대, 비트열「010111110111101」이 가지(60-4)에 할당되고, 가지(60-4)에 접속되는 잎(61-4)의 압축 부호 길이가 「11」이며, CJK 문자 또는 단어에의 포인터로 나타내어지는 CJK 문자가 「동」이라고 하자. 이 경우에는, 비트열의 선두에서부터 11비트째까지의 비트열「01011111011」이, CJK 문자「동」에 대응하는 압축 부호가 된다.
도 10은 본 실시예에 따른 압축부의 구성의 일례를 도시하는 기능 블록도이다. 도 10에 도시하는 것과 같이, 이 압축부(100a)는 파일 리드부(101), 판정부(102), 제1 부호화부(103), 제2 부호화부(104), 갱신부(105) 및 파일 라이트부(106)를 갖는다.
파일 리드부(101)는, 파일 F1 내의 콘텐츠 부분의 데이터를 독출하는 처리부이다. 파일 리드부(101)는, 독출한 데이터에 포함되는 문자 코드열을 선두에서 추출하고, 추출한 문자 코드열을 판정부(102)에 순차 출력한다. 예컨대, 파일 리드부(101)는, 영문자의 경우, 선두 문자에서부터 종단 기호를 단락으로 하는 문자 코드열을 영문자의 단어로서 추출한다. 파일 리드부(101)는, CJK 문자 또는 일본어 단어의 경우, 선두 문자에서부터 문자 단위의 문자 코드열을 CJK 문자 또는 일본어 단어로서 추출한다.
판정부(102)는, 문자 코드열과 비트 필터 C1을 비교하여, 문자 코드열이 비트 필터 C1에 히트하는지 여부를 판정하는 처리부이다. 판정부(102)는, 문자 코드열이 비트 필터 C1에 히트한 경우에는, 문자 코드열을 제1 부호화부(103)에 출력한다. 문자 코드열이 CJK 문자 및 일본어 단어의 문자 코드열인 경우이다. 판정부(102)는, 문자 코드열이 비트 필터 C1에 히트하지 않는 경우에는, 문자 코드열을 제2 부호화부(104)에 출력한다. 문자 코드열이 영문자 단어의 문자 코드열인 경우이다.
판정 대상의 문자 코드열이 CJK 문자의 문자 코드열인 경우의 판정부(102)의 처리를 도 8a를 이용하여 설명한다. 판정 대상의 문자 코드열을 CJK 문자「동」의 문자 코드열「E69DB1」이라고 하자. 판정부(102)는, 판정 대상의 문자 코드열을 선두에서부터 2 그램씩 비트 필터 C1의 2 그램과 비교하여, 비트맵을 특정한다. 예컨대, 판정부(102)는, 문자 코드열이 「E69DB1」인 경우에는, 「E69D」, 「9DB1」에 대응하는 비트맵을 각각 조합한다. 판정부(102)는, 일례로서, 비트맵의 각 자릿수에 있어서, 조합한 비트맵의 해당하는 자릿수를 「1」로 하고, 그 이외에는 「0」으로 설정함으로써 비트맵을 조합시킨다.
예컨대, 「E69D」의 비트맵이 「1_0_0_0_0」, 「9DB1」의 비트맵이 「0_1_1_0_0」이라고 하자. 이 경우에는, 각 비트맵을 조합시킨 비트맵은 「1_1_1_0_0」이 된다.
판정부(102)는, 조합한 비트맵과, 비트 필터 C1의 포인터를 비교하여, 비트맵에 대응하는 포인터가 나타내는 위치의 CJK 문자를 특정한다. 판정부(102)는, 특정한 CJK 문자부터 순차, 판정 대상의 문자 코드열에 대응하는 CJK 문자를 검색한다. 여기서는, 정적 사전에는, 일본어 단어 단위 혹은 CJK 문자 단위가 존재한다고 하자. 그러면, 판정부(102)는, 판정 대상의 문자 코드열에 대응하는 CJK 문자가 존재하기 때문에, 판정 대상의 문자 코드열이 비트 필터 C1에 히트했다고 판정한다. 한편, 판정 대상의 문자 코드열이 일본어 단어의 문자 코드열인 경우의 판정부(102)의 처리는, 판정 대상의 문자 코드열이 CJK 문자의 문자 코드열인 경우의 판정부(102)의 처리와 마찬가지이기 때문에 그 설명을 생략한다.
제1 부호화부(103)는, 판정부(102)로부터 취득한 문자 코드열을 정적 사전 C2에 기초하여 부호화하는 처리부이다. 제1 부호화부(103)는, 정적 사전 C2를 참조하여, 문자 코드열에 대응하는 CJK 문자 또는 일본어 단어를, 정적 사전 C2로부터 특정하고, 특정한 CJK 문자 또는 일본어 단어에 대응하는 압축 부호를 특정한다. 그리고, 제1 부호화부(103)는, 식별자 「0」과, 정적 사전 C2에 등록되어 있는 CJK 문자 또는 일본어 단어의 압축 부호를 포함하는 압축 데이터를 생성하여, 압축 데이터를 파일 라이트부(106)에 출력한다.
제2 부호화부(104)는, 판정부(102)로부터 취득한 문자 코드열을 동적 사전에 기초하여 부호화하는 처리부이다. 제2 부호화부(104)는, 문자 코드열을 부호화부가 되는 기억 영역 A1에 저장한다. 제2 부호화부(104)는, 기억 영역 A1과, 참조부가 되는 기억 영역 A2에 저장된 데이터를 비교하여, 최장 일치 문자열을 검색한다.
제2 부호화부(104)는, 최장 일치 문자열이 소정의 길이 Lmin 이상인 경우에, 최장 일치 문자열을 동적사전부의 기억 영역 A3에 등록한다. 제2 부호화부(104)는, 동적사전부의 등록 내용에 기초하여 압축 부호를 생성한다. 즉, 제2 부호화부(104)는, 동적사전부에 등록한 최장 일치 문자열의 등록 번호를, 문자열의 압축 부호로서 특정한다. 제2 부호화부(104)는, 식별자「1」과, 동적 사전의 등록 번호를 포함하는 압축 데이터를 생성하여, 압축 데이터를 파일 라이트부(106)에 출력한다.
예컨대, 제2 부호화부(104)는, 문자열「Kataoka△」이 기억 영역 A3에 2번째로 등록된 최장 일치 문자열인 경우에는, 최장 일치 문자열「Kataoka△」에 대응하는 등록 번호로서, 참조 테이블 T1의 등록 번호에 「00000111」을 등록한다. 또한, 제2 부호화부(104)는, 최장 일치 문자열「Kataoka△」의 선두 문자「K」가 기억 영역 A3의 「30」에 저장되어 있기 때문에, 저장 위치에 「000000011110」을 등록한다. 제2 부호화부(104)는, 최장 일치 문자열「Kataoka△」의 데이터 길이가 「8」이기 때문에, 데이터 길이에 「10000」을 등록한다.
제2 부호화부(104)는, 도 3에 도시하는 것과 같이, 최장 일치 문자열「Kataoka△」이 동적사전부에 등록된 것으로 하면, 최장 일치 문자열「Kataoka△」의 등록 번호는 「00000111」이 된다. 이 경우에는, 제2 부호화부(104)는, 문자열「Kataoka△」의 압축 부호를 「00000111」로 한다. 이 때문에, 제2 부호화부(104)는, 문자열「Kataoka△」의 압축 데이터로서, 식별자「1」, 등록 번호「00000111」을 포함하는 압축 데이터를 생성하여, 파일 라이트부(106)에 출력한다.
그런데, 제2 부호화부(104)는, 부호화 대상의 문자열과 동일한 문자열이 기억 영역 A3에 이미 등록되어 있는 경우에는, 이미 등록되어 있는 문자열의 등록 번호를, 문자열의 압축 부호로서 특정한다. 예컨대, 제2 부호화부(104)는, 부호화 대상이 되는 문자열과, 기억 영역 A3의 각 문자열을 비교하여, 부호화 대상의 문자열과 동일한 문자열이 기억 영역 A3에 등록되어 있지 않은 경우에, 상기 최장 일치 문자열 검색을 한다.
갱신부(105)는, 제2 부호화부(104)에 의해서, 최장 일치 문자열의 검색이 완료된 후에, 기억 영역 A1에 저장된 문자열을, 기억 영역 A2에 저장함으로써, 기억 영역 A2를 갱신하는 처리부이다. 갱신부(105)는, 제2 부호화부(104)에 의한 최장 일치 문자열의 검색이 완료될 때마다 기억 영역 A2를 갱신한다.
파일 라이트부(106)는, 제1 부호화부(103) 및 제2 부호화부(104)로부터 압축 데이터를 취득하고, 취득한 압축 데이터를 기억 영역 A4에 기록하는 처리부이다.
도 11은 본 실시예에 따른 신장부의 구성의 일례를 도시하는 기능 블록도이다. 도 11에 도시하는 것과 같이, 이 신장부(100b)는, 파일 리드부(110), 식별자 판정부(111), 제1 신장 변환부(112), 제2 신장 변환부(113), 갱신부(114) 및 파일 라이트부(115)를 갖는다.
파일 리드부(110)는, 압축 파일 F2 내의 압축 데이터를 기억 영역 B1에 독출하는 처리부이다. 파일 리드부(110)는, 기억 영역 B1에 저장된 압축 데이터에 대한 처리가 종료된 경우에, 새로운 압축 데이터를 압축 파일 F2로부터 독출하여, 기억 영역 B1에 저장된 압축 데이터를 갱신한다.
또한, 파일 리드부(110)는, 압축 파일 F2의 트레일러부에 저장된 동적사전부의 정보를 독출하여, 기억 영역 B2에 저장한다.
식별자 판정부(111)는, 기억 영역 B1에 저장된 압축 데이터의 식별자를 독출하여, 식별자가 「0」인지 「1」인지를 판정하는 처리부이다. 식별자는, 압축 데이터의 선두 비트에 대응한다. 식별자가 「0」인 경우에는, 압축 데이터가 정적 사전에 의해서 부호화되었음을 나타낸다. 식별자가 「1」인 경우에는, 압축 데이터가 동적 사전에 의해서 부호화되었음을 나타낸다.
식별자 판정부(111)는, 압축 데이터의 식별자가 「0」인 경우에는, 압축 데이터를 제1 신장 변환부(112)에 출력한다. 식별자 판정부(111)는, 압축 데이터의 식별자가 「1」인 경우에는, 압축 데이터를 제2 신장 변환부(113)에 출력한다.
제1 신장 변환부(112)는, 신장용의 트리(60)를 이용하여 압축 데이터를 문자 코드 변환이 이루어진 상태로 신장하는 처리부이다. 신장용의 트리(60)의 데이터 구조는 도 9에 도시한 것에 대응한다. 제1 신장 변환부(112)는, 트리(60)의 각 가지에 할당된 비트열과, 식별자를 제외한 압축 데이터를 비교하여, 압축 데이터와 동일한 비트열이 되는 가지에 대응된 잎을 특정한다. 제1 신장 변환부(112)는, 특정한 잎을 참조하여, CJK 문자 또는 일본어 단어에의 포인터를 특정한다. 제1 신장 변환부(112)는, 압축되었을 때의 문자 코드계의 문자 코드 테이블(200)을 문자 코드 변환 대상의 문자 코드계의 문자 코드 테이블(200)로 치환하고, 치환한 문자 코드 테이블(200) 및 특정한 포인터를 기초로, 압축 데이터의 신장 데이터를 문자 코드 변환이 이루어진 신장 데이터로 변환한다. 제1 신장 변환부(112)는, 변환한 신장 데이터를 파일 라이트부(115)에 출력한다.
도 9에서, 예컨대, 비트열「010111110111101」이, 트리(60)의 가지(60-4)에 히트하고, 가지(60-4)에 접속되는 잎(61-4)의 압축 부호 길이가 「11」이며, CJK 문자 또는 단어에의 포인터로 나타내어지는 CJK 문자가 「동」이라고 하자. 이 경우에는, 제1 신장 변환부(112)는, 압축 데이터의 비트열 중, 선두에서부터 11비트째까지의 비트열「01011111011」에 대응하는 신장 데이터로서, UTF-8에서 UTF-16으로 치환된 문자 코드 테이블(200) 내의 신장 문자 코드열「6771」을 특정한다.
제2 신장 변환부(113)는, 기억 영역 B2에 저장된 동적사전부의 정보를 이용하여 압축 데이터를 문자 코드 변환이 이루어진 상태로 신장하는 처리부이다. 제2 신장 변환부(113)는, 압축 데이터로부터 식별자를 제거함으로써, 동적사전부의 등록 번호를 취득한다. 제2 신장 변환부(113)는, 취득한 등록 번호와, 참조 테이블 T1을 비교하여, 기억 영역 B2에 저장된 신장 데이터의 저장 위치 및 데이터 길이를 특정한다. 제2 신장 변환부(113)는, 저장 위치 및 데이터 길이에 대응하는 문자 코드열을 기억 영역 B2로부터 취득하고, 취득한 문자 코드열을 신장 데이터로서 생성한다. 그리고, 제2 신장 변환부(113)는, 생성된 신장 데이터를 문자 코드 변환하여, 문자 코드 변환이 이루어진 신장 데이터로 변환한다. 제2 신장 변환부(113)는, 변환한 신장 데이터를 파일 라이트부(115)에 출력한다.
예컨대, 압축 데이터로부터 취득한 등록 번호를 「00000111」로 하여, 제2 신장 변환부(113)의 처리를 설명한다. 제2 신장 변환부(113)는, 등록 번호「00000111」과 참조 테이블 T1을 비교하여, 저장 위치「000000011110」과 데이터 길이「1000」을 취득한다. 제2 신장 변환부(113)는, 기억 영역 B2를 참조하여, 저장 위치「000000011110」을 선두로 하고, 데이터 길이「1000」이 되는 문자열「Kataoka△」의 문자 코드열을 취득한다. 제2 신장 변환부(113)는, 취득한 문자열「Kataoka△」의 문자 코드열을 UTF-8에서 UTF-16으로 문자 코드 변환하여, 문자 코드 변환이 이루어진 신장 데이터로 변환한다. 한편, 영문자는, ASCII(American standard code for information interchange) 등 모든 문자 코드계에서 동일한 문자 코드열로 되기 때문에, 생성된 신장 데이터를, UTF-8에서 UTF-16으로 문자 코드 변환하더라도 같은 문자 코드열로 된다.
갱신부(114)는, 압축 데이터가 저장된 기억 영역 B1을 갱신하는 처리부이다. 갱신부(114)는, 압축 데이터의 식별자가 「0」인 경우에는, 제1 신장 변환부(112)에 독출된 압축 데이터를 기억 영역 B1로부터 삭제한다. 갱신부(114)는, 압축 데이터의 식별자가 「1」인 경우에는, 제2 신장 변환부(113)에 독출된 압축 데이터를 기억 영역 B1로부터 삭제한다.
파일 라이트부(115)는, 제1 신장 변환부(112) 및 제2 신장 변환부(113)로부터 신장 데이터를 취득하고, 취득한 신장 데이터를 기억 영역 B3에 기록하는 처리부이다.
이어서, 도 10 및 도 11에 도시한 압축부(100a) 및 신장부(100b)의 처리 순서에 관해서 설명한다.
도 12는 본 실시예에 따른 압축부의 처리 순서를 도시하는 흐름도이다. 도 12에 도시하는 것과 같이, 압축부(100a)는 전처리를 실행한다(단계 S101). 단계 S101의 전처리에 있어서, 압축부(100a)는, 기억 영역 A1, 기억 영역 A2, 기억 영역 A3을 기억부(100c)에 확보한다.
압축부(100a)는, 압축 대상의 파일 F1을 독출하여(단계 S102), 문자 코드열을 추출한다(단계 S103). 압축부(100a)는, 문자 코드열과 비트 필터 C1을 비교하여, 비트 필터 C1에 히트하는지 여부를 판정한다(단계 S104).
압축부(100a)는, 문자 코드열이 비트 필터 C1에 히트하지 않는 경우에는(단계 S104, No), 동적 사전을 참조한다(단계 S105). 그리고, 압축부(100a)는, 문자열이 동적 사전에 이미 존재하고 있는지 여부를 판정한다(단계 S106). 압축부(100a)는, 문자열이 동적 사전에 존재하고 있는 경우에는(단계 S106, Yes), 단계 S109로 이행한다.
한편, 압축부(100a)는, 문자열이 동적 사전에 존재하지 않는 경우에는(단계 S106, No), 최장 일치의 문자 코드열을 검색한다(단계 S107). 압축부(100a)는, 동적 사전을 갱신하고(단계 S108), 단계 S109로 이행한다.
단계 S109에서, 압축부(100a)는, 식별자「1」과 동적 사전의 등록 번호를 포함하는 압축 데이터를 출력한다(단계 S109). 압축부(100a)는, 압축 데이터의 기록을 하고(단계 S110), 파일 F1의 종점인지 여부를 판정한다(단계 S111). 압축부(100a)는, 파일 F1의 종점이 아닌 경우에는(단계 S111, No), 단계 S103으로 이행한다. 압축부(100a)는, 파일 F1의 종점인 경우에는(단계 S111, Yes), 처리를 종료한다.
그런데, 압축부(100a)는, 단계 S104에서, 문자 코드열이 비트 필터 C1에 히트한 경우에는(단계 S104, Yes), 정적 사전 C2에 등록되어 있는 압축 부호를 특정한다(단계 S112). 압축부(100a)는, 식별자「0」과 압축 부호를 포함하는 압축 데이터를 출력하고(단계 S113), 단계 S110으로 이행한다.
도 13은 본 실시예에 따른 신장부의 처리 순서를 도시하는 흐름도이다. 도 13에 도시하는 것과 같이, 신장부(100b)는 전처리를 실행한다(단계 S201). 단계 S201의 전처리에 있어서, 신장부(100b)는, 기억 영역 B1, 기억 영역 B2, 기억 영역 B3을 기억부(100c)에 확보한다.
신장부(100b)는, 압축 파일 F2를 독출하고(단계 S202), 신장용의 트리(60) 및 동적 사전을 독출한다(단계 S203). 예컨대, 신장부(100b)는, 트레일러부에 저장된 정적 사전에 관한 정보를 기억 영역 B2에 저장한다.
신장부(100b)는, 압축 데이터의 식별자가 「1」인지 여부를 판정한다(단계 S204). 신장부(100b)는, 식별자가 「0」인 경우에는(단계 S204, No), 신장용의 트리(60)와 압축 데이터를 비교하여, 신장 데이터에의 포인터를 특정한다(단계 S206A).
신장부(100b)는, 특정한 포인터를 기초로, 압축 데이터의 신장 데이터를 문자 코드 변환이 이루어진 신장 데이터로 변환한다(단계 S207). 예컨대, 신장부(100b)는, 압축되었을 때의 문자 코드계의 문자 코드 테이블(200)을 문자 코드 변환 대상의 문자 코드계의 문자 코드 테이블(200)로 치환한다. 그리고, 신장부(100b)는, 치환한 문자 코드 테이블(200) 및 특정한 포인터를 기초로, 압축 데이터의 신장 데이터를 문자 코드 변환이 이루어진 신장 데이터로 변환한다. 그리고, 신장부(100b)는 단계 S208로 이행한다.
신장부(100b)는, 압축 데이터의 식별자가 「1」인 경우에는(단계 S204, Yes), 동적 사전의 등록 번호를 기초로 신장 데이터를 특정한다(단계 S205). 그리고, 신장부(100b)는, 특정한 신장 데이터를 문자 코드 변환이 이루어진 신장 데이터로 변환한다(단계 S206B). 그리고, 신장부(100b)는 단계 S208로 이행한다. 한편, 영문자의 경우는, ASCII(American standard code for information interchange) 등 모든 문자 코드계에서 동일한 문자 코드열로 되기 때문에, 특정한 신장 데이터를, 예컨대 UTF-8에서 UTF-16으로 문자 코드 변환하더라도 동일한 문자 코드열로 된다.
단계 S208에서는, 신장부(100b)는 기억 영역 B3에 신장 데이터의 기록을 한다(단계 S208).
신장부(100b)는, 압축 파일 F2의 종점인지 여부를 판정한다(단계 S209). 신장부(100b)는, 압축 파일 F2의 종점이 아닌 경우에는(단계 S209, No), 단계 S204로 이행한다. 한편, 신장부(100b)는, 압축 파일 F2의 종점인 경우에는(단계 S209, Yes), 압축 파일 F2를 클로즈하고(단계 S210), 신장 처리를 종료한다.
이어서, 본 실시예에 따른 정보 처리 장치(100)의 효과에 관해서 설명한다. 본 실시예에 따른 정보 처리 장치(100)에 의하면, 제1 문자 코드에 의한 문자 데이터열이, 하나 이상의 문자를 포함하는 문자열의 단위로 압축 부호화된 압축 파일 F2를 입력한다. 정보 처리 장치(100)는, 압축 파일 F2에 포함되며, 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 부호 각각을, 상기 압축 부호화 단위의 제1 문자 코드 표기에 대응하는 정보에서 상기 압축 부호화 단위의 제2 문자 코드 표기에 대응하는 정보로 각각 변환한다. 정보 처리 장치(100)는, 압축 부호화된 문자 데이터열의 압축 부호화의 단위 각각, 및 변환된 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각으로부터 신장 파일 F3을 생성한다. 이러한 구성에 의하면, 정보 처리 장치(100)는, 압축 부호화된 데이터(압축 부호)를 신장하여 문자 코드 변환 처리를 하는 것이 아니라, 압축 부호화에 관한 변환 정보의 부분에 대해서만 문자 코드 변환 처리를 함으로써, 신장했을 때에 문자 코드 변환된 문자 데이터열이 출력되는 신장 파일 F3을 생성할 수 있다. 따라서, 정보 처리 장치(100)는, 일괄 신장 후에 변환하는 경우와 비교하여 신장 처리와 문자 코드 변환 처리에 이용되는 기억 영역의 낭비를 없앨 수 있다. 또한, 정보 처리 장치(100)는, 일괄 신장 후에 변환하는 경우와 비교하여 신장 처리 및 문자 코드 변환 처리의 처리 시간을 단축할 수 있다.
또한, 본 실시예에 따른 정보 처리 장치(100)에 의하면, 제1 문자 코드계의 문자의 데이터열을 압축한 압축 부호의 식별자가 제1 식별자인지 제2 식별자인지를 판정한다. 정보 처리 장치(100)는, 압축 부호의 식별자가 제1 식별자인 경우에는, 압축 부호로부터 얻어지는 신장 문자에의 위치를 특정하고, 제1 문자 코드계의 문자의 데이터열을 기억하는 문자 코드 테이블(200)을 제2 문자 코드계의 문자의 데이터열을 기억하는 문자 코드 테이블(200)로 치환한 문자 코드 테이블(200)과 신장 문자에의 포인터에 기초하여, 압축 부호를 신장한다. 이러한 구성에 따르면, 정보 처리 장치(100)는, 일괄 신장 후에 변환하는 경우와 비교하여 신장 처리와 문자 코드 변환 처리에 이용되는 기억 영역의 낭비를 없앨 수 있다. 또한, 정보 처리 장치(100)는, 일괄 신장 후에 변환하는 경우와 비교하여 신장 처리 및 문자 코드 변환 처리의 처리 시간을 단축할 수 있다.
또한, 본 실시예에 따른 정보 처리 장치(100)에 의하면, 문자의 데이터열 및 그 문자의 데이터열에 대응하는 압축 부호를 대응시킨 정적 사전 C2와, 압축 대상 문자의 데이터열에 기초하여, 압축 대상 문자의 데이터열이 정적 사전 C2에 등록되어 있는지 여부를 판정한다. 정보 처리 장치(100)는, 압축 대상 문자의 데이터열이 정적 사전 C2에 등록되어 있는 경우에는, 정적 사전 C2에 등록된 압축 대상 문자의 데이터열에 대응하는 압축 부호에, 압축 대상 문자의 데이터열을 압축한다. 정보 처리 장치(100)는, 압축 대상 문자의 데이터열이 정적 사전 C2에 등록되어 있지 않은 경우에는, 압축 대상 문자의 데이터열을 동적 사전에 등록하고, 등록 위치에 기초한 정보에, 압축 대상 문자의 데이터열을 압축한다. 이러한 구성에 따르면, 정보 처리 장치(100)는, 압축 대상 문자의 데이터열을 문자 단위로 압축하기 때문에, 신장시 신장과 문자 코드 변환을 1 패스로 행할 수 있다.
하기에, 본 실시형태에 이용되는 하드웨어 및 소프트웨어에 관해서 설명한다. 도 14는 컴퓨터(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)는, 스토리지 영역 네트워크에 의해 컴퓨터(1)와 접속된 기억 장치와의 통신의 제어를 하는 회로이다. SAN 인터페이스(311)는, 예컨대 호스트 버스 어댑터(HBA) 등이다.
입력 디바이스(307)는 조작에 따라서 입력 신호를 송신하는 장치이다. 입력 신호는, 예컨대, 키보드나 컴퓨터(1)의 본체에 부착된 버튼 등의 키 장치나, 마우스나 터치 패널 등의 포인팅 디바이스이다. 출력 디바이스(309)는 컴퓨터(1)의 제어에 따라서 정보를 출력하는 장치이다. 출력 디바이스(309)는, 예컨대, 디스플레이 등의 화상 출력 장치(표시 장치)나 스피커 등의 음성 출력 장치 등이다. 또한, 예컨대, 터치 스크린 등의 입출력 장치가 입력 디바이스(307) 및 출력 디바이스(309)로서 이용된다. 또한, 입력 디바이스(307) 및 출력 디바이스(309)는, 컴퓨터(1)와 일체로 되어 있어도 좋고, 컴퓨터(1)에 포함되지 않고, 예컨대, 컴퓨터(1)에 외부에서 접속하는 장치라도 좋다.
예컨대, 프로세서(301)는, ROM(303)이나 기억 매체(305)에 기억된 프로그램을 RAM(302)에 독출하고, 독출된 프로그램의 순서에 따라서 압축부(100a)의 처리 또는 신장부(100b)의 처리를 한다. 그 때에 RAM(302)은 프로세서(301)의 작업 영역으로서 이용된다. 기억부(100c)의 기능은, ROM(303) 및 기억 매체(305)가 프로그램 파일(후술하는 애플리케이션 프로그램(24), 미들웨어(23) 및 OS(22) 등)이나 데이터 파일(압축 대상의 파일 F1, 압축된 파일 F2 등)을 기억하고, RAM(302)이 프로세서(301)의 작업 영역으로서 이용됨으로써 실현된다. 프로세서(301)가 독출하는 프로그램에 관해서는 도 15를 이용하여 설명한다.
도 15는 컴퓨터(1)에서 동작하는 프로그램의 구성예를 도시하는 도면이다. 컴퓨터(1)에서, 도 14에 도시하는 하드웨어군(21)(301~312)의 제어를 하는 OS(operating system)(22)가 동작한다. OS(22)에 따른 순서로 프로세서(301)가 동작하여, 하드웨어군(21)의 제어·관리가 이루어짐으로써, 애플리케이션 프로그램(24)이나 미들웨어(23)에 따른 처리가 하드웨어군(21)에서 실행된다. 또한, 컴퓨터(1)에 있어서, 미들웨어(23) 또는 애플리케이션 프로그램(24)이, RAM(302)에 독출되어 프로세서(301)에 의해 실행된다.
프로세서(301)가, 압축 기능이 호출된 경우에, 미들웨어(23) 또는 애플리케이션 프로그램(24)의 적어도 일부에 기초한 처리를 함으로써, (이들 처리를 OS(22)에 기초하여 하드웨어군(21)을 제어하여) 압축부(100a)의 기능이 실현된다. 또한, 프로세서(301)가, 신장 기능이 호출된 경우에, 미들웨어(23) 또는 애플리케이션 프로그램(24)의 적어도 일부에 기초한 처리를 함으로써, (이들 처리를 OS(22)에 기초하여 하드웨어군(21)을 제어하여) 신장부(100b)의 기능이 실현된다. 압축 기능 및 신장 기능은, 각각 애플리케이션 프로그램(24) 자체에 포함되어도 좋고, 애플리케이션 프로그램(24)에 따라서 호출됨으로써 실행되는 미들웨어(23)의 일부라도 좋다.
애플리케이션 프로그램(24)(또는 미들웨어(23))의 압축 기능에 의해 얻어지는 압축 파일 F2는, 압축 파일 F2 내의 압축 사전 D1에 기초하여 부분적으로 신장할 수 있다. 압축 파일 F2 도중을 신장하는 경우에는, 신장 대상 부분까지의 압축 데이터의 신장 처리가 억제되기 때문에, 프로세서(301)의 부하가 억제된다. 또한, 신장 대상의 압축 데이터를 부분적으로 RAM(302) 상에 전개하기 때문에, 작업 영역도 삭감된다.
도 16은 실시형태의 시스템에 있어서의 장치의 구성예를 도시한다. 도 16의 시스템은, 컴퓨터(1a), 컴퓨터(1b), 기지국(2) 및 네트워크(3)를 포함한다. 컴퓨터(1a)는, 무선 또는 유선의 적어도 한쪽에 의해, 컴퓨터(1b)와 접속된 네트워크(3)에 접속하고 있다.
도 6에 도시하는 압축부(100a)와 신장부(100b)는, 도 16에 도시하는 컴퓨터(1a)와 컴퓨터(1b)의 어느 것에 포함되어도 좋다. 컴퓨터(1b)가 압축부(100a)를 포함하고, 컴퓨터(1a)가 신장부(100b)를 포함하여도 좋고, 컴퓨터(1b)가 압축부(100a)를 포함하고, 컴퓨터(1a)가 신장부(100b)를 포함하여도 좋다. 또한, 컴퓨터(1a)와 컴퓨터(1b) 쌍방이 압축부(100a) 및 신장부(100b)를 구비하여도 좋다.
이하, 상술한 실시형태에 있어서의 변형예의 일부를 설명한다. 하기의 변형예뿐만 아니라, 본 발명의 본지를 일탈하지 않는 범위의 설계 변경은 적절하게 이루어질 수 있다. 압축 처리의 대상은, 파일 내의 데이터 이외에도, 시스템으로부터 출력되는 감시 메시지 등이라도 좋다. 예컨대, 버퍼에 순차 저장되는 감시 메시지를 상술한 압축 처리에 의해 압축하여, 로그 파일로서 저장하는 등의 처리가 이루어진다. 또한, 예컨대, 데이터베이스 내의 페이지 단위로 압축이 이루어지더라도 좋고, 복수의 페이지를 묶은 단위로 압축이 이루어지더라도 좋다.
또한, 상술한 압축 처리의 대상이 되는 데이터는, 상술한 것과 같이, CJK 문자에만 한정되는 것은 아니다. CJK 문자와 영숫자가 섞인 데이터라도 좋고, 화상·음성 등의 데이터에 대하여 상술한 압축 처리를 이용하여도 좋다.
이상의 각 실시예를 포함하는 실시형태에 관해서 이하의 부기를 추가로 개시한다.
(부기 1) 컴퓨터에,
제1 문자 코드에 의한 문자 데이터열이, 하나 이상의 문자를 포함하는 문자열의 단위로 압축 부호화된 압축 파일을 입력하고,
상기 압축 파일에 포함되며, 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각을, 상기 압축 부호화 단위의 상기 제1 문자 코드 표기에 대응하는 정보에서, 상기 압축 부호화 단위의 제2 문자 코드 표기에 대응하는 정보로 각각 변환하고,
상기 압축 부호화된 상기 문자 데이터열의 압축 부호화의 단위 각각, 및 상기 변환된 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각으로부터 변환 압축 파일을 생성하는,
처리를 하게 하는 것을 특징으로 하는 프로그램.
(부기 2) 상기 변환하는 처리는,
상기 제1 문자 코드에 의한 문자 데이터열의 압축 부호화 단위에 관련지어진 압축 정보의 식별자가 제1 식별자인지 제2 식별자인지를 판정하고,
상기 압축 정보의 식별자가 제1 식별자인 경우에는, 상기 압축 정보로부터 얻어지는 상기 제1 문자 코드 표기에 대응하는 문자 데이터열에의 위치를 특정하고, 상기 제1 문자 코드 표기의 문자 데이터열을 기억하는 제1 문자 코드표를 상기 제2 문자 코드 표기의 문자 데이터열을 기억하는 제2 문자 코드표로 치환한 문자 코드표와 상기 특정한 위치에 기초하여, 상기 압축 정보를 상기 제1 문자 코드 표기에 대응하는 정보에서 상기 제2 문자 코드 표기에 대응하는 정보로 변환하는
처리를 실행시키는 것을 특징으로 하는 부기 1에 기재한 프로그램.
(부기 3) 상기 압축 정보의 식별자가 제2 식별자인 경우에는, 상기 압축 정보에 포함되는 등록 위치에 기초한 정보에 표시되는 위치의 정보에 기초하여, 상기 압축 정보를 상기 제1 문자 코드 표기에 대응하는 정보에서 상기 제2 문자 코드 표기에 대응하는 정보로 변환하는 것을 특징으로 하는 부기 2에 기재한 프로그램.
(부기 4) 제1 문자 코드에 의한 문자 데이터열이, 하나 이상의 문자를 포함하는 문자열의 단위로 압축 부호화된 압축 파일을 입력하는 입력부와,
상기 압축 파일에 포함되며, 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각을, 상기 압축 부호화 단위의 상기 제1 문자 코드 표기에 대응하는 정보에서, 상기 압축 부호화 단위의 제2 문자 코드 표기에 대응하는 정보로 각각 변환하는 변환부와,
상기 압축 부호화된 상기 문자 데이터열의 압축 부호화의 단위 각각 및 상기 변환된 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각으로부터 변환 압축 파일을 생성하는 생성부
를 갖는 것을 특징으로 하는 장치.
(부기 5) 상기 변환부는,
상기 제1 문자 코드에 의한 문자 데이터열의 압축 부호화의 단위에 관련지어진 압축 정보의 식별자가 제1 식별자인지 제2 식별자인지를 판정하는 판정부를 포함하고,
상기 판정부에 의해서 상기 압축 정보의 식별자가 제1 식별자라고 판정된 경우에는, 상기 압축 정보로부터 얻어지는 상기 제1 문자 코드 표기에 대응하는 문자 데이터열에의 위치를 특정하고, 상기 제1 문자 코드 표기의 문자 데이터열을 기억하는 제1 문자 코드표를 상기 제2 문자 코드 표기의 문자 데이터열을 기억하는 제2 문자 코드표로 치환한 문자 코드표와 상기 특정한 위치에 기초하여, 상기 압축 정보를 상기 제1 문자 코드 표기에 대응하는 정보에서 상기 제2 문자 코드 표기에 대응하는 정보로 변환하는
것을 특징으로 하는 부기 4에 기재한 장치.
(부기 6) 컴퓨터가,
제1 문자 코드에 의한 문자 데이터열이, 하나 이상의 문자를 포함하는 문자열의 단위로 압축 부호화된 압축 파일을 입력하고,
상기 압축 파일에 포함되며, 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각을, 상기 압축 부호화 단위의 상기 제1 문자 코드 표기에 대응하는 정보에서 상기 압축 부호화의 단위의 제2 문자 코드 표기에 대응하는 정보로 각각 변환하고,
상기 압축 부호화된 상기 문자 데이터열의 압축 부호화의 단위 각각 및 상기 변환된 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각으로부터 변환 압축 파일을 생성하는
처리를 실행하는 것을 특징으로 하는 변환 방법.
(부기 7) 상기 변환하는 처리는,
상기 제1 문자 코드에 의한 문자 데이터열의 압축 부호화의 단위에 관련지어진 압축 정보의 식별자가 제1 식별자인지 제2 식별자인지를 판정하고,
상기 압축 정보의 식별자가 제1 식별자인 경우에는, 상기 압축 정보로부터 얻어지는 상기 제1 문자 코드 표기에 대응하는 문자 데이터열에의 위치를 특정하고, 상기 제1 문자 코드 표기의 문자 데이터열을 기억하는 제1 문자 코드표를 상기 제2 문자 코드 표기의 문자 데이터열을 기억하는 제2 문자 코드표로 치환한 문자 코드표와 상기 특정한 위치에 기초하여, 상기 압축 정보를 상기 제1 문자 코드 표기에 대응하는 정보에서 상기 제2 문자 코드 표기에 대응하는 정보로 변환하는
처리를 실행하는 것을 특징으로 하는 부기 6에 기재한 변환 방법.
(부기 8) 컴퓨터에,
문자의 데이터열 및 이 문자의 데이터열에 대응하는 압축 부호를 대응시킨 제1 사전과, 압축 대상 문자의 데이터열에 기초하여, 압축 대상 문자의 데이터열이 상기 제1 사전에 등록되어 있는지 여부를 판정하고,
상기 압축 대상 문자의 데이터열이 상기 제1 사전에 등록되어 있는 경우에는, 상기 제1 사전에 등록된 상기 압축 대상 문자의 데이터열에 대응하는 압축 부호에, 상기 압축 대상 문자의 데이터열을 압축하고,
상기 압축 대상 문자의 데이터열이 상기 제1 사전에 등록되어 있지 않은 경우에는, 상기 압축 대상 문자의 데이터열을 제2 사전에 등록하고, 등록 위치에 기초한 정보에, 상기 압축 대상 문자의 데이터열을 압축하는
처리를 실행시키는 것을 특징으로 하는 압축 프로그램.
(부기 9) 문자의 데이터열 및 이 문자의 데이터열에 대응하는 압축 부호를 대응시킨 제1 사전과, 압축 대상 문자의 데이터열에 기초하여, 압축 대상 문자의 데이터열이 상기 제1 사전에 등록되어 있는지 여부를 판정하는 판정부와,
상기 압축 대상 문자의 데이터열이 상기 제1 사전에 등록되어 있는 경우에는, 상기 제1 사전에 등록된 상기 압축 대상 문자의 데이터열에 대응하는 압축 부호에, 상기 압축 대상 문자의 데이터열을 압축하는 제1 압축부와,
상기 압축 대상 문자의 데이터열이 상기 제1 사전에 등록되어 있지 않은 경우에는, 상기 압축 대상 문자의 데이터열을 제2 사전에 등록하고, 등록 위치에 기초한 정보에, 상기 압축 대상 문자의 데이터열을 압축하는 제2 압축부
를 갖는 것을 특징으로 하는 압축 장치.
100: 정보 처리 장치, 100a: 압축부, 100b: 신장부, 100c: 기억부, 200: 문자 코드 테이블.

Claims (3)

  1. 컴퓨터 판독 가능한 기록 매체에 저장된 프로그램에 있어서,
    컴퓨터로 하여금,
    하나 이상의 문자를 포함하는 문자열의 단위로 압축 부호화된 제1 문자 코드에 따른 문자 데이터열의 압축 파일을 입력하고,
    상기 압축 파일에 포함되며, 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각을, 상기 압축 부호화 단위의 상기 제1 문자 코드 표기에 대응하는 정보에서, 상기 압축 부호화 단위의 제2 문자 코드 표기에 대응하는 정보로 각각 변환하고,
    상기 압축 부호화된 상기 문자 데이터열의 압축 부호화의 단위 각각 및 상기 변환된 상기 문자 데이터열의 압축 부호화의 단위 각각에 관련지어진 압축 정보 각각으로부터 변환 압축 파일을 생성하는
    처리를 하게 하는 것을 특징으로 하는 컴퓨터 판독 가능한 기록 매체에 저장된 프로그램.
  2. 제1항에 있어서,
    상기 변환하는 처리는,
    상기 제1 문자 코드에 의한 문자 데이터열의 압축 부호화의 단위에 관련지어진 압축 정보의 식별자가 제1 식별자인지 제2 식별자인지를 판정하고,
    상기 압축 정보의 식별자가 제1 식별자인 경우에는, 상기 압축 정보로부터 얻어진 상기 제1 문자 코드 표기에 대응하는 문자 데이터열에 대한 위치를 특정하고, 상기 제1 문자 코드 표기의 문자 데이터열을 기억하는 제1 문자 코드표를 상기 제2 문자 코드 표기의 문자 데이터열을 기억하는 제2 문자 코드표로 치환한 문자 코드표와 상기 특정된 위치에 기초하여, 상기 압축 정보를 상기 제1 문자 코드 표기에 대응하는 정보로부터 상기 제2 문자 코드 표기에 대응하는 정보로 변환하는
    처리를 실행시키는 것을 특징으로 하는 컴퓨터 판독 가능한 기록 매체에 저장된 프로그램.
  3. 제2항에 있어서,
    상기 압축 정보의 식별자가 제2 식별자인 경우에는, 상기 압축 정보에 포함된 상기 문자 데이터열의 압축 부호화의 단위를 이루는 문자열의 등록 번호에 기초한 정보에 표시되는 위치 정보에 기초하여, 상기 압축 정보를 상기 제1 문자 코드 표기에 대응하는 정보에서 상기 제2 문자 코드 표기에 대응하는 정보로 변환하는 것을 특징으로 하는 컴퓨터 판독 가능한 기록 매체에 저장된 프로그램.
KR1020160004816A 2015-01-19 2016-01-14 매체에 저장된 프로그램 KR101748982B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JPJP-P-2015-008076 2015-01-19
JP2015008076A JP6531398B2 (ja) 2015-01-19 2015-01-19 プログラム

Publications (2)

Publication Number Publication Date
KR20160089279A KR20160089279A (ko) 2016-07-27
KR101748982B1 true KR101748982B1 (ko) 2017-06-19

Family

ID=56408599

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160004816A KR101748982B1 (ko) 2015-01-19 2016-01-14 매체에 저장된 프로그램

Country Status (4)

Country Link
US (1) US9425821B2 (ko)
JP (1) JP6531398B2 (ko)
KR (1) KR101748982B1 (ko)
CN (1) CN105808513B (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6753401B2 (ja) * 2015-07-24 2020-09-09 富士通株式会社 符号化プログラム、符号化装置、及び符号化方法
JP2017135613A (ja) * 2016-01-28 2017-08-03 ブラザー工業株式会社 画像処理装置およびコンピュータプログラム
JP6686639B2 (ja) * 2016-03-31 2020-04-22 富士通株式会社 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
CN106850141A (zh) * 2017-01-20 2017-06-13 济南浪潮高新科技投资发展有限公司 一种使用deflate算法的物理信息系统数据无损压缩传输方法
CN106897259A (zh) * 2017-02-28 2017-06-27 郑州云海信息技术有限公司 一种基于windows平台的ascii码和字符串的转换方法
JP7210130B2 (ja) * 2017-04-07 2023-01-23 富士通株式会社 符号化プログラム、符号化方法および符号化装置
CN110110299B (zh) * 2019-04-28 2023-04-07 腾讯科技(上海)有限公司 文本变换方法、装置以及服务器
US11502705B2 (en) * 2019-06-21 2022-11-15 Sap Se Advanced database decompression
CN113138968A (zh) * 2020-01-20 2021-07-20 普天信息技术有限公司 日志压缩方法及日志解压缩方法
US20210105466A1 (en) * 2020-12-18 2021-04-08 Intel Corporation Offloading video coding processes to hardware for better density-quality tradeoffs
CN113162628B (zh) * 2021-04-26 2022-03-18 深圳希施玛数据科技有限公司 一种数据编码方法、数据解码方法、终端和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000269822A (ja) 1999-03-12 2000-09-29 Fujitsu Ltd データ圧縮装置、及びデータ復元装置
KR100271861B1 (ko) 1996-01-31 2000-11-15 가나이 쓰도무 데이타압축, 신장방법 및 장치와 이것을 사용한 데이타처리장치 및 네트워크시스템
WO2009022531A1 (ja) 2007-08-13 2009-02-19 Nec Corporation データ圧縮伸張方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63127328A (ja) 1986-11-18 1988-05-31 Mitsubishi Electric Corp コ−ド変換装置
JP2612343B2 (ja) * 1989-08-09 1997-05-21 富士通株式会社 データ圧縮方式
JPH03157021A (ja) * 1989-11-15 1991-07-05 Hitachi Ltd データ圧縮制御方式
US5442350A (en) * 1992-10-29 1995-08-15 International Business Machines Corporation Method and means providing static dictionary structures for compressing character data and expanding compressed data
WO1997010556A1 (en) * 1995-09-13 1997-03-20 Apple Computer, Inc. Unicode converter
JP3566441B2 (ja) 1996-01-30 2004-09-15 シャープ株式会社 テキスト圧縮用辞書作成装置
JPH10326273A (ja) * 1997-03-26 1998-12-08 Fujitsu Ltd データ圧縮装置及びデータ復元装置及びデータ圧縮方法及びデータ復元方法及びプログラム記録媒体
US6606040B2 (en) * 2001-02-13 2003-08-12 Mosaid Technologies, Inc. Method and apparatus for adaptive data compression
JP3832807B2 (ja) 2001-06-28 2006-10-11 インターナショナル・ビジネス・マシーンズ・コーポレーション データ処理方法及びその手法を用いたエンコーダ、デコーダ並びにxmlパーサ
JP4446102B2 (ja) * 2006-04-12 2010-04-07 株式会社エクサ データ圧縮/復元システム、データ圧縮装置、データ復元装置、及びプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100271861B1 (ko) 1996-01-31 2000-11-15 가나이 쓰도무 데이타압축, 신장방법 및 장치와 이것을 사용한 데이타처리장치 및 네트워크시스템
JP2000269822A (ja) 1999-03-12 2000-09-29 Fujitsu Ltd データ圧縮装置、及びデータ復元装置
WO2009022531A1 (ja) 2007-08-13 2009-02-19 Nec Corporation データ圧縮伸張方法

Also Published As

Publication number Publication date
CN105808513A (zh) 2016-07-27
JP6531398B2 (ja) 2019-06-19
US9425821B2 (en) 2016-08-23
US20160211863A1 (en) 2016-07-21
KR20160089279A (ko) 2016-07-27
JP2016134751A (ja) 2016-07-25
CN105808513B (zh) 2019-01-01

Similar Documents

Publication Publication Date Title
KR101748982B1 (ko) 매체에 저장된 프로그램
KR101772312B1 (ko) 기억 매체, 압축 방법, 신장 방법, 압축 장치 및 신장 장치
US20160321282A1 (en) Extracting method, information processing method, computer product, extracting apparatus, and information processing apparatus
JP6641857B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6686639B2 (ja) 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
JP6540308B2 (ja) 符号化プログラム、符号化方法、符号化装置、復号化プログラム、復号化方法および復号化装置
JP6609404B2 (ja) 圧縮プログラム、圧縮方法および圧縮装置
JP6834327B2 (ja) 符号化プログラム、符号化装置および符号化方法
US11055328B2 (en) Non-transitory computer readable medium, encode device, and encode method
US9479195B2 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
US20170300542A1 (en) Encoding processing device, encoding processing method, decoding processing device, decoding processing method, and recording medium
JP2005501445A (ja) 文字テーブルによって実施されるデータ圧縮の方法および装置
US11323132B2 (en) Encoding method and encoding apparatus
WO2014030180A1 (ja) 格納プログラム、格納方法、格納装置、伸張プログラム、伸張方法及び伸張装置
US10318483B2 (en) Control method and control device
JP2016019113A (ja) 伸長方法、伸長プログラムおよび伸長装置
JP2016134754A (ja) 変換処理プログラム、情報処理装置および変換処理方法

Legal Events

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