KR20150119403A - 압축 장치, 압축 방법, 사전 생성 장치, 사전 생성 방법, 신장 장치, 신장 방법, 신장 프로그램 및 정보 처리 시스템 - Google Patents

압축 장치, 압축 방법, 사전 생성 장치, 사전 생성 방법, 신장 장치, 신장 방법, 신장 프로그램 및 정보 처리 시스템 Download PDF

Info

Publication number
KR20150119403A
KR20150119403A KR1020157025619A KR20157025619A KR20150119403A KR 20150119403 A KR20150119403 A KR 20150119403A KR 1020157025619 A KR1020157025619 A KR 1020157025619A KR 20157025619 A KR20157025619 A KR 20157025619A KR 20150119403 A KR20150119403 A KR 20150119403A
Authority
KR
South Korea
Prior art keywords
character information
information
compression
compression code
dictionary
Prior art date
Application number
KR1020157025619A
Other languages
English (en)
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 KR20150119403A publication Critical patent/KR20150119403A/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
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/80Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
    • G06F16/84Mapping; Conversion
    • G06F16/86Mapping to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/237Lexical tools
    • G06F40/242Dictionaries
    • 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
    • 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/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)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (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)
  • Document Processing Apparatus (AREA)

Abstract

하나의 측면에 따르면, 표기 변형의 존재에 의한 압축율의 저하를 억제하는 것을 목적으로 한다.
일 양태에 따르면, 압축 장치는, 서로 다른 복수의 문자 정보에 대하여 할당된 제1 압축 부호가 상기 복수의 문자 정보의 각각에 관련지어진 사전 정보를 기억하는 기억부와, 상기 복수의 문자 정보 중 제1 문자 정보를 취득한 경우에, 상기 제1 문자 정보와 관련지어진 상기 제1 압축 부호를 상기 사전 정보로부터 취득하는 취득부와, 취득된 상기 제1 압축 부호를, 압축 데이터를 저장하는 저장 영역에 기록하는 기록부를 포함한다.

Description

압축 장치, 압축 방법, 사전 생성 장치, 사전 생성 방법, 신장 장치, 신장 방법, 신장 프로그램 및 정보 처리 시스템{COMPRESSION DEVICE, COMPRESSION METHOD, DICTIONARY GENERATION DEVICE, DICTIONARY GENERATION METHOD, EXPANSION DEVICE, EXPANSION METHOD, EXPANSION PROGRAM, AND INFORMATION PROCESSING SYSTEM}
데이터의 압축 기술 또는 신장 기술의 적어도 한쪽에 관한 것이다.
허프만 부호화나 산술 압축 등의 가변 길이 압축 부호를 이용한 압축 알고리즘에서는, 압축 부호의 할당 대상의 문자 정보군에 대하여, 문자 정보군에 포함되는 문자 정보마다 출현 빈도 등의 통계 정보에 따른 길이의 압축 부호가 할당된다. 허프만 부호화의 압축 알고리즘에서는, 문자 정보군에 포함되는 문자 정보 사이의 출현 빈도의 대소 비교에 기초하여 압축 부호의 생성이 이루어진다. 산술 압축에서는, 문자 정보군 전체에 있어서의 각 문자 정보의 출현 비율에 기초하여 정해진 부호 길이의 압축 부호가 생성된다. 이들 압축 알고리즘에서는, 출현 빈도가 높은 문자 정보일수록 짧은 압축 부호가 할당됨으로써, 짧은 압축 부호의 사용 빈도가 높아지기 때문에, 압축 데이터 전체의 압축율이 향상된다.
허프만 부호화나 산술 압축 등의 압축 알고리즘에 있어서의 가변 길이 압축 부호의 할당 대상은 문자나 숫자 등의 기호이다. 또한, 압축 부호의 할당 대상을 확장하여, 기호의 조합인 단어나 태그 등의 문자열에 대하여 가변 길이 압축 부호를 할당하는 기술이 있다. 이 경우, 복수의 기호의 조합에 하나의 압축 부호가 할당되기 때문에, 압축율이 향상된다(예컨대, 특허문헌 1 참조).
특허문헌 1: 일본 특허공개 2010-93414호 공보 특허문헌 2: 일본 특허공개 평05-241777호 공보
문서 데이터는, 문자나 숫자 등의 기호의 조합인 단어나 태그 등의 문자열에 의해 구성된다. 문서 데이터 내의 각 문자열은, 각각 특정한 의미나 문법적인 기능 등의 개념과 대응하지만, 공통되는 개념에 대응하는 문자열끼리라도, 서로 기호의 조합(표기)이 다른, 소위 표기 변형이 존재한다. 표기 변형의 예로서, 동사나 형용사 등의 활용어의 활용이나 동의어나 유사어 등을 들 수 있다.
단어나 태그 등의 문자열에의 가변 길이 압축 부호의 할당에 있어서는, 출현 빈도가 높은 문자 정보일수록 짧은 압축 부호가 할당된다. 하나의 개념에 대하여 서로 표기가 다른 복수의 문자열(복수 종류의 문자열)이 대응하는 표기 변형이 생기면, 하나의 개념에 대하여 1 종류의 문자열이 대응하는 표기 변형이 없는 경우의 문자열의 출현 빈도보다도 복수 종류의 문자열 각각의 출현 빈도가 낮아져 버린다. 그 때문에, 복수 종류의 문자열 각각에 할당되는 압축 부호가 길어져, 압축율이 저하하는 요인이 된다.
본 발명의 하나의 측면에 따르면, 표기 변형의 존재에 의한 압축율의 저하를 억제하는 것을 목적으로 한다.
하나의 양태에 따르면, 압축 장치는, 서로 다른 복수의 문자 정보에 대하여 할당된 제1 압축 부호가, 상기 복수의 문자 정보의 각각에 관련지어진 사전 정보를 기억하는 기억부와, 상기 복수의 문자 정보 중 제1 문자 정보를 취득한 경우에, 상기 제1 문자 정보와 관련지어진 상기 제1 압축 부호를 상기 사전 정보로부터 취득하는 취득부와, 취득된 상기 제1 압축 부호를, 압축 데이터를 저장하는 저장 영역에 기록하는 기록부를 포함한다.
하나의 양태에 따르면, 신장 장치는, 서로 다른 복수의 문자 정보에 대하여 공통적으로 할당된 제1 압축 부호와, 상기 복수의 문자 정보에 대응하는 제1 문자 정보를 관련지은 사전 정보를 기억하는 기억부와, 상기 제1 압축 부호를 압축 데이터로부터 취득한 경우에, 상기 사전 정보에 있어서 상기 제1 압축 부호에 관련지어진 상기 제1 문자 정보를 상기 사전 정보로부터 취득하는 취득부와, 취득된 상기 제1 문자 정보를 상기 압축 데이터의 신장 결과를 저장하는 저장 영역에 기록하는 기록부를 포함한다.
하나의 양태에 따르면, 정보 처리 시스템은, 압축 데이터가 기억된 기억 장치와, 상기 압축 데이터에 대한 처리 요구에 따른 처리를 실행하는 처리 장치를 포함하는 정보 처리 시스템으로서, 상기 처리 장치는, 서로 다른 복수의 문자 정보에 대하여 할당된 제1 압축 부호를, 상기 복수의 문자 정보의 각각에 관련지은 사전 정보를 기억하는 기억부와, 상기 처리 요구에 따라서, 상기 기억 장치로부터 상기 압축 데이터를 판독하는 판독부와, 상기 제1 압축 부호를 상기 압축 데이터로부터 취득한 경우에, 상기 사전 정보에 있어서 상기 제1 압축 부호에 관련지어진 제1 문자 정보를 상기 사전 정보로부터 취득하는 제1 취득부와, 취득한 상기 제1 문자 정보를 상기 압축 데이터의 신장 결과를 저장하는 제1 저장 영역에 기록하는 제1 기록부와, 상기 제1 저장 영역에 저장된 신장 결과에 대하여 상기 처리 요구에 따른 처리를 실행하는 처리부와, 상기 처리 요구에 따라 처리된 데이터로부터 상기 제1 문자 정보를 취득한 경우에, 상기 사전 정보에 의해 상기 제1 문자 정보와 관련지어진 상기 제1 압축 부호를 취득하는 제2 취득부와, 취득한 상기 제1 압축 부호를 제2 저장 영역에 기록하는 제2 기록부와, 상기 제2 영역에 기록된 데이터를 상기 기억 장치에 저장하는 저장부를 포함한다.
하나의 양태에 따르면, 사전 생성 장치는, 서로 다른 복수의 문자 정보에 대응하는 1 종류의 공통 문자 정보에 대하여 압축 부호의 할당 처리를 하는 할당부와, 상기 서로 다른 복수의 문자 정보의 각각에, 상기 공통 문자 정보에 할당된 제1 압축 부호를 관련지은 사전 정보를 생성하는 생성부를 포함한다.
하나의 양태에 따르면, 사전 생성 장치는, 서로 다른 복수의 문자 정보에 대하여 공통적으로 할당된 제1 압축 부호와, 상기 복수 종류의 문자 정보에 대응하는 제1 문자 정보를 관련짓는 사전 정보를 생성하는 생성부를 포함한다.
하나의 측면에 따르면, 표기 변형의 존재에 의한 압축율의 저하를 억제할 수 있다.
도 1은 압축 처리 및 신장 처리의 개요를 도시한다.
도 2는 압축 부호로 변환하는 예를 도시한다.
도 3은 기능 블록 구성의 예를 도시한다.
도 4는 압축 기능의 처리 프로세스의 예를 도시한다.
도 5는 압축 사전 생성의 처리 프로세스의 예를 도시한다.
도 6은 빈도 집계 처리의 처리 프로세스의 예를 도시한다.
도 7은 변환 테이블 T1의 예를 도시한다.
도 8은 통계 테이블 T2의 예를 도시한다.
도 9는 압축 사전 D1의 데이터 구조의 예를 도시한다.
도 10은 압축 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 11은 신장 기능의 처리 프로세스의 예를 도시한다.
도 12는 신장 사전 생성의 처리 프로세스의 예를 도시한다.
도 13은 신장 사전 D2의 데이터 구조의 예를 도시한다.
도 14는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 15는 압축 부호로 변환하는 예를 도시한다.
도 16은 압축 사전의 데이터 구조의 예를 도시한다.
도 17은 신장 사전의 데이터 구조의 예를 도시한다.
도 18은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 19는 압축 부호 할당의 예를 도시한다.
도 20은 신장 사전의 데이터 구조의 예를 도시한다.
도 21은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 22는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 23은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 24는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 25는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 26은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 27은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다.
도 28은 컴퓨터(1)의 하드웨어 구성의 예를 도시한다.
도 29는 컴퓨터(1)에서 동작하는 프로그램 구성의 예를 도시한다.
도 30은 컴퓨터(1)를 이용한 시스템 구성의 예를 도시한다.
도 31은 컴퓨터(1)를 이용한 시스템 구성의 예를 도시한다.
[압축 처리 및 신장 처리의 흐름]
도 1은 압축 처리 및 신장 처리의 개요를 도시한다. 압축 파일 F2의 생성은, 파일 F1과 변환 테이블 T1에 기초하여 행해진다. 변환 테이블 T1은, 공통의 개념에 대응하는 복수 종류의 문자 정보의 각각과, 그 복수 종류의 문자 정보에서 공통되는 개념을 나타내는 공통 문자 정보를 대응시킨다. 예컨대, 변환 테이블 T1은, 전술한 복수 종류의 문자 정보(서로 다른 복수의 문자 정보)의 각각에 대하여, 복수 종류의 문자 정보끼리를 식별하는 식별 기호를 추가로 대응시켜도 좋다.
압축 부호를 할당하는 대상의 문자 정보군 각각에 관해서, 파일 F1에 있어서의 빈도 집계 H1이, 변환 테이블 T1에 기초하여 행해진다. 빈도 집계 H1의 처리에 있어서, 변환 테이블 T1에 공통 문자 정보와 대응시켜진 문자 정보는, 공통 문자 정보로서 카운트된다. 또한, 빈도 집계 H1의 처리에 있어서, 식별 기호와 대응시켜진 문자 정보는, 공통 문자 정보 및 식별 기호 양쪽에서 카운트되어도 좋다. 빈도 집계 H1의 처리의 집계 결과는 빈도 테이블 T2에 저장된다.
또한, 예컨대, 빈도 집계 H1의 처리는, 파일 F1 대신에, 파일 F1과 공통의 문자 정보를 많이 포함할 것이 예상되는 파일(예컨대, 판수가 다른 서적 등)에 기초하여 행해지더라도 좋다. 또한, 빈도 집계 H1은, 예컨대, 파일 F1을 포함하는 복수의 파일(어떤 파일을 분할하여 얻어지는 분할 파일군(파일 F1을 포함함) 등)에 기초하여 행해지더라도 좋다.
빈도 테이블 T2에 저장된 문자 정보군(공통 문자 정보를 포함하거나 또는 공통 문자 정보와 식별 기호 양쪽을 포함함)에 대하여, 각각의 출현 빈도에 기초하여 부호 할당 H2의 처리가 행해진다. 예컨대, 허프만 부호화의 알고리즘에 따르면, 문자 정보끼리의 출현 빈도의 비교에 의해 각 문자 정보에 대하여 압축 부호가 할당된다. 또한, 예컨대, 산술 압축에 따르면, 압축 부호를 할당하는 대상의 문자 정보군 전체에 있어서의 각 문자 정보의 출현 비율에 따라서 부호 길이가 설정되고, 설정된 부호 길이의 압축 부호가 각 문자 정보에 할당된다. 압축 사전 D1에는, 문자 정보군(공통 문자 정보를 포함하거나 또는 공통 문자 정보와 식별 기호 양쪽을 포함함) 각각에 관해서, 할당된 압축 부호와의 대응 관계가 나타내어져 있다. 압축 처리 H3에서는, 파일 F1에 포함되는 문자 정보와 대응하는 압축 부호가 압축 사전 D1로부터 순차 취득된다. 압축 파일 F2는, 순차 취득된 압축 부호에 의한 압축 부호열(압축 데이터), 변환 테이블 T1 및 빈도 테이블 T2를 포함한다.
전술한 처리에서는, 빈도 집계 H1의 처리에서, 공통의 개념에 대응하는 복수 종류의 문자 정보가 공통 문자 정보에 집약되기 때문에, 부호 할당 H2에 있어서, 압축 부호를 할당하는 대상의 문자 정보의 종류가 적어진다. 그 때문에, 표기 변형에 의한 출현 빈도 저하가 억제되고, 문자 정보에 할당되는 압축 부호의 부호 길이가 짧게 억제되기 때문에, 표기 변형을 요인으로 하는 압축율의 저하가 억제된다. 또한, 압축 부호를 할당하는 대상의 문자 정보의 종류가 적어짐으로써, 부호 할당 H2의 처리량이 저감된다. 또한, 복수 종류의 문자 정보 중 어디에 관해서나 압축 부호가 할당되기 때문에, 압축 부호가 할당되지 않음으로써 예기치 못하게 압축율이 저하하는 것도 억제된다.
또한, 빈도 테이블 T2에 저장된 공통 문자 정보의 출현 빈도의 정보는 그대로 텍스트 마이닝에 활용 가능하다. 압축 데이터를 신장하지 않더라도, 문서 데이터 내에 어떠한 개념이 어느 정도의 빈도로 표시되어 있는지 등의 정보를 빈도 테이블 T2로부터 추출할 수 있다.
신장 파일 F3의 생성은 압축 파일 F2에 기초하여 행해진다. 압축 파일 F2에는, 전술한 것과 같이, 압축 데이터, 변환 테이블 T1 및 빈도 테이블 T2이 포함된다. 압축 파일 F2로부터 빼내어진 빈도 테이블 T2에 저장된 문자 정보군(공통 문자 정보를 포함하거나 또는 공통 문자 정보와 식별 기호 양쪽을 포함함) 각각에 대하여, 빈도 테이블 T2에서 대응시켜진 출현 빈도에 기초하여, 부호 할당 H4의 처리가 행해진다. 부호 할당 H4의 처리는, 부호 할당 H2의 처리와 동일한 알고리즘에 기초하여 이루어진다. 신장 사전 D2는, 압축 부호와, 압축 부호가 할당된 문자 정보와의 대응 관계를 나타낸다. 신장 처리 H5에서는, 압축 파일 F2로부터 빼낸 압축 부호에 대응하는 문자 정보가 신장 사전 D2로부터 취득된다. 신장 처리 H5에서, 공통 문자 정보에 대응하는 압축 부호가 압축 파일 F2로부터 얻어진 경우에는, 압축 부호에 대응하는 공통 문자 정보가 신장 사전 D2로부터 취득된다. 또한, 식별 기호에 대응시켜진 압축 부호가 이용되는 경우에는, 신장 사전 D2는, 공통 문자 정보 대신에, 압축 파일 F2로부터 빼낸 변환 테이블 T1 내의 공통 문자 정보의 저장 위치(오프셋치)를 포함한다. 신장 처리 H5에서 신장 사전 D2로부터 오프셋치를 얻을 수 있었던 경우에는, 원래의 문자 정보가 오프셋치 및 식별 기호에 기초하여 취득된다. 신장 파일 F3은, 신장 처리 H5에 의해 얻어진 문자 정보에 의한 문자 정보열을 포함한다.
압축 파일 F2에 포함되는 빈도 테이블 T2에서도, 공통의 개념에 대응하는 복수 종류의 문자 정보가 공통 문자 정보에 집약되어 있기 때문에, 부호 할당 H4에 있어서, 압축 부호를 할당하는 대상의 문자 정보의 종류가 적게 억제된다.
파일 F1과 신장 파일 F3이 동일한 데이터라면, 압축 처리 H3 및 신장 처리 H5는 가역의 압축 신장 처리이다. 파일 F1과 신장 파일 F3이 동일한 데이터가 아니라면, 압축 처리 H3 및 신장 처리 H5는 비가역의 압축 신장 처리이다. 즉, 공통의 개념에 대응하는 복수 종류의 문자 정보끼리가 변환 테이블 T1에 있어서 식별 기호에 의해 식별되면, 신장시에 식별 기호에 기초하여 압축 전의 문자 정보를 변환 테이블 T1에 있어서 특정할 수 있게 되기 때문에, 가역의 압축 신장 처리가 이루어진다.
[표기 변형과 문자 정보의 출현 빈도]
표기 변형의 일례로서, 문서 데이터 내에 동의어가 존재할 수 있다. 예컨대, 영어에서는 영국 영어와 미국 영어에서 표기가 다른 단어가 존재하며(예컨대 「pavement」와 「sidewalk」 등), 애당초 여러 가지로 표기가 인정된 단어도 존재한다(예컨대 「center」와 「centre」 등). 또한, 예컨대, 일본어에서는 외국어를 일본어 표기로 치환할 때에 여러 가지의 표기가 인정되고 있다 (예컨대 「インタ―フェ―ス」와 「インタフェ―ス」 등). 또한, 각 언어에서는, 동의어와 마찬가지로 유의어가 존재할 수 있다(예컨대 「center」와 「middle」 등). 이들 동의어나 유의어는 개념이 공통되기 때문에, 공통 문자 정보에 집약됨으로써, 표기 변형에 의한 출현 빈도 저하가 억제된다. 이에 따라, 문자 정보에 할당되는 압축 부호의 부호 길이가 짧게 억제되기 때문에, 표기 변형을 요인으로 하는 압축율의 저하가 억제된다. 또한, 압축 부호의 할당 대상의 문자 정보가 공통 문자 정보에 집약되기 때문에 가변 길이 압축 부호 할당의 처리량이 저감된다. 또한, 문자열에 압축 부호가 할당되지 않음으로 인한 예기치 못한 압축율의 저하가 억제된다.
또한, 영어 등의 언어에서는, 문두의 단어의 첫 글자는 대문자 표기된다. 첫 글자가 소문자 표기인 단어만을 압축 부호의 할당 대상으로 하면, 문서 데이터 내의 문두의 단어는 압축 부호로 치환되지 않기 때문에, 압축율이 향상되지 않는 요인이 된다. 한편, 첫 글자가 대문자 표기인 단어와 소문자 표기인 단어 양쪽에 압축 부호를 개별적으로 할당하면, 압축 부호를 할당하는 대상의 문자 정보의 종류가 배가 되기 때문에, 압축 부호의 할당 처리의 처리량이 증대된다. 이 표기 변형에 대하여도, 첫 글자가 대문자 표기인 단어와 소문자 표기인 단어 양쪽에 대응하는 공통 문자 정보와, 첫 글자가 대문자인지 소문자인지를 나타내는 식별 기호를 이용함으로써, 압축율 저하의 억제 및 압축 부호 할당의 처리량 억제 효과를 얻을 수 있다.
또한, 특정 언어(예컨대, 영어, 독일어 및 일본어 등)에서는 활용어가 존재한다. 활용어란, 문법상의 제약에 따라서 단어 형태가 변화되는 단어이며, 예컨대 영어에서는 동사, 형용사 및 부사 등이다. 활용어가 존재하는 언어로 기술된 문서 데이터에서는, 문법상의 제약에 따른 어형 변화에 의해 다른 문자열로 나타내어지는 단어가 존재한다. 예컨대, 영어에서는, 1 종류의 동사에 관해서, 원형, 3인칭 단수 현재형, 과거형, 과거분사 및 현재분사의 5 종류의 활용 형태가 존재한다. 이들은, 공통의 개념에 대응하지만 표기가 다르다. 그래서, 예컨대, 활용 형태로 표현된 단어를 활용어의 개념에 대응하는 공통 문자 정보(예컨대 동사의 원형)에 집약하여 압축 처리가 이루어짐으로써, 압축율 저하의 억제 및 압축 부호 할당의 처리량 억제 효과를 얻을 수 있다. 또한, 활용 형태를 나타내는 식별 기호(예컨대 과거 형태를 나타냄)를 병용함으로써, 신장시에 원래의 활용 형태로 되돌릴 수 있다.
문자 정보의 출현 빈도는 문서 데이터에 따라서 다르다. 그 때문에, 출현 빈도는 문자 정보마다 다르다. 그러나, 동의어나 유사어, 또는 문두의 단어의 첫 글자의 표기 변형과 달리, 활용어에 관해서는, 공통되는 개념에 대응하는 복수 종류의 문자 정보는 출현 빈도의 경향이 유사하다. 활용어에서 서로 다른 활용 형태의 문자 정보끼리는 문서 내에서 병용되는 경우가 있다. 예컨대, 「search data for ···」 등을 포함하는 문장 뒤에, 「the searched data is ···」등의 문장이 계속되는 경우가 있다. 공통 문자 정보에 집약되는 문자 정보끼리 출현 빈도의 경향이 유사하기 때문에, 문자 정보 그 자체의 출현 빈도와 정합하지 않는 부호 길이의 압축 부호가 할당되는 경우가 적어진다.
또한, 예컨대, 동사에 관해서는 원형과 과거형의 출현 빈도가 높은 한편 과거분사의 출현 빈도는 낮은 등, 동사 전체에서 공통되는 경향이 존재한다. 활용 형태를 나타내는 식별 기호에 대하여도 출현 빈도에 기초하여 압축 부호가 할당됨으로써, 출현 빈도가 높은 활용 형태에는 짧은 압축 부호가 할당되고, 출현 빈도가 낮은 활용 형태에는 긴 압축 부호가 할당된다. 다른 활용 형태의 단어끼리 출현 빈도에 차가 있는 경우라도, 식별 기호에 할당된 압축 부호에 의해, 부호 길이가 조정된다.
또한, 활용 형태를 나타내는 식별 기호가 이용되지 않으면 비가역 압축으로 되는데, 비가역 압축에 의해 얻어진 압축 데이터는, 예컨대 텍스트 마이닝 등의 용도에 이용된다. 비가역 압축된 압축 데이터가 신장된 경우에는, 동사에 관해서 활용 형태의 정보를 잃게 된다. 한편, 압축 데이터에 기초하여, 「like」나 「hate」 등의 동사의 사용 빈도나, 이들 동사와 함께 나타내는 키워드의 추출 등의 분석은, 비가역 압축된 압축 데이터에 기초하여 실행할 수 있다.
[압축 부호로의 변환]
도 2는 압축 부호로 변환하는 예를 도시한다. 도 1에는 「He spent much time for talking abou this invention.」이라고 하는 영어 예문이 도시된다. 단어나 문자 등의 문자 정보에 대하여 할당된 압축 부호를 이용하여, 도 1에 도시하는 영어 예문의 일부를 변환한 경우의 예(1)~예(6)가 도 2에 도시된다. 예(1)~예(3)는 「talking」이라고 하는 문자 정보에 대응하는 압축 부호의 예이다. 또한, 예(4)~예(6)는 「spent」라고 하는 문자 정보에 대응하는 압축 부호의 예이다. 「talking」 및 「spent」는 모두 동사의 활용 형태이다.
단어에 대하여 압축 부호를 할당하는 할당 방법의 하나로서, 동사에 관해서는 원형에 대해서만 압축 부호를 할당하는 방법이 있다. 예컨대, 「talk」나 「spend」 등의 동사에 대하여, 각각 압축 부호 c(talk)나 압축 부호 c(spend)가 할당된다. 이하, 압축 부호는 「c()」라고 나타내어진다. 압축 부호를 「c()」라고 나타내는 경우에는, 둥근 괄호 안에 압축 부호에 대응하는 문자 정보가 표시된다. 그 경우는, 「talking」 중, 압축 부호는 원형인 「talk」에밖에 할당되고 있지 않기 때문에, 「ing」에 관해서는, 예컨대, 압축 부호 c(i), 압축 부호 c(n) 및 압축 부호 c(g)를 조합시켜 표현된다. 즉 예(1)에 나타내는 것과 같이, 「talking」은 압축 부호열 c(talk)c(i)c(n)c(g)로 변환된다. 또한, 「spent」는 압축 부호가 할당된 「spend」를 포함하는 문자열이 아니기 때문에, 압축 부호 c(spend)가 이용되지 않는다. 그 때문에, 예컨대, 예(4)에 나타내는 것과 같이, 「spent」는 압축 부호열 c(s)c(p)c(e)c(n)c(t)로 변환된다.
「talk」, 「talked」 및 「talking」 등의 같은 동사의 활용 형태에 관해서는, 공통되는 의미를 갖고 있지만 문법상의 제약에 의해 다른 표기로 표시되는 문자 정보군이다. 그 문자 정보군 중 하나에 압축 부호를 할당했다고 해도, 다른 문자 정보를 압축 부호로 변환하는 경우에는, 그 일부 또는 전부에 대하여 문자 단위의 압축 부호가 이루어지게 되어 버린다. 그 때문에, 단어 단위의 문자 정보를 복수의 압축 부호로 변환하게 되어, 압축율 향상의 저해 요인이 될 수 있다.
또한, 단어에 대하여 압축 부호를 할당하는 할당 방법의 하나로서, 각 동사의 각 활용 형태에 대하여 압축 부호를 할당하는 방법이 있다. 예컨대, 「talk」라고 하는 동사에 관해서는 「talk」, 「talking」 및 「talked」 등에 대하여, 압축 부호 c(talk), c(talking) 및 (talked) 등이 각각 대응시켜진다. 또한, 예컨대, 「spend」라고 하는 동사에 관해서도, 「spend」, 「spending」 및 「spent」 등에 대하여 압축 부호 c(spend), c(spending) 및 (spent) 등이 각각 대응시켜진다. 그 경우에는, 도 2에 도시하는 영어 예문 중 「talking」은, 예(2)에 나타내는 것과 같이, 압축 부호 c(talking)로 변환된다. 또한, 영어 예문 중의 「spent」도, 예(5)에 나타내는 것과 같이, 압축 부호 c(spent)로 변환된다.
예(2) 및 예(5)에 따르면, 각 동사 자체의 의미가 하나인 데 대하여, 어형 변화에 의해 예컨대 5 종류의 활용 형태(원형, 삼인칭 단수 현재형, 과거형, 과거분사 및 현재분사) 각각에 대응하는 압축 부호가 존재하게 된다. 그 때문에, 압축 부호의 종류가 증대되어 버린다. 압축 부호의 종류가 많을수록 압축 사전이나 신장 사전의 사이즈는 증대되고, 또한, 각 문자열에 대하여 할당하는 압축 부호를 생성하는 처리의 처리량이 증대한다. 그 때문에, 압축 부호의 종류가 많아짐으로써 압축 속도나 신장 속도가 늦어져 버린다. 압축 부호의 할당 처리량이나 압축 사전 데이터 구조와, 압축 부호의 종류의 수와의 관계에 관해서 추가로 후술한다.
그래서, 예컨대, 압축 부호의 할당 방법의 하나로서, 공통의 의미를 갖는 복수 종류의 문자 정보 중 어디에 관해서나, 그 복수 종류의 문자 정보에서 공통되는 의미를 나타내는 공통 문자 정보에 대하여 할당한 압축 부호로 변환하는 방법이 있다. 예컨대, 「talk」, 「talking」 및 「talked」 등에 관해서는, 공통되는 의미를 나타내는 「talk」에 할당된 압축 부호 c(talk)로 변환된다. 마찬가지로, 예컨대, 「spent」 등의 문자 정보에 관해서도 압축 부호 c(spend)로 변환된다. 공통 문자 정보에 대하여 할당된 압축 부호를 이용하여 문자 정보를 압축하면, 압축된 데이터를 신장하여 얻어지는 신장 데이터는, 전술한 복수 종류의 문자 정보에서 공통되는 의미를 나타낸다. 한편, 공통의 압축 부호가 할당되고 있기 때문에, 신장 데이터는 동일 표기가 되어 버린다. 공통 문자 정보에 대하여 할당된 압축 부호가 이용되면, 압축된 데이터를 신장한 경우에 공통의 의미만이 재현되게 되고, 전술한 방법은 비가역 압축으로서 이용된다.
또한, 전술한 비가역 압축에 더하여, 예컨대, 공통의 의미를 갖는 복수의 문자 정보끼리를 식별하는 식별 기호가 이용된다. 예컨대, 공통의 「talk」라고 하는 의미를 갖는 문자 정보 「talking」 및 「talked」등이, 각각 식별 기호 [-ing] 및 [-ed] 등으로 식별된다. 이하, 각 괄호 []에 의해 식별 기호를 기재한다. 예컨대, 식별 기호 [-ing]는 단어가 현재진행형이라고 하는 문법상의 기능을 나타낸다. 또한, 예컨대, 식별 기호 [-ed]는 단어가 과거형이라고 하는 문법상의 기능을 나타낸다.
예컨대, 예(3)에 나타내는 것과 같이, 압축 부호 c(talk) 및 압축 부호 c([-ing]) 양쪽을 이용함으로써, 문자 정보 「talking」에 대응하는 압축 데이터가 생성된다. 이 압축 데이터가 신장된 경우에, 신장 데이터에 문자 정보 「talk」의 현재진행형이 존재한다고 판단할 수 있기 때문에, 문자 정보 「talking」이 복원된다. 또한, 예컨대, 예(6)에 나타내는 것과 같이, 압축 부호 c(spend) 및 압축 부호 c([-ed]) 양쪽을 이용함으로써, 문자 정보 「spent」에 대응하는 압축 데이터가 생성된다. 이 압축 데이터가 신장된 경우에, 신장 데이터에 문자 정보 「spent」의 과거형이 존재한다고 판단할 수 있기 때문에, 문자 정보 「spent」가 복원된다. 공통 문자 정보에 대하여 할당된 압축 부호와, 식별 기호에 대하여 할당된 압축 부호가 조합되어 이용됨으로써, 문자 정보가 복원되기 때문에, 가역 압축으로서 이용된다.
예(3)나 예(6)를 이용하여 나타낸 압축 방법에 따르면, 문법상의 제약에 의해 표기가 변화된 어떤 단어에 관해서나 2개의 압축 부호로 표현된다. 그 때문에, 예(1)나 예(4)와 같이, 압축 부호가 할당된 단어와 동일한 개념에 대응함에도 불구하고 표기가 상이함으로써 압축 부호의 종류가 증대된다고 하는 사태를 피할 수 있다. 또한, 식별 기호는 복수 종류의 동사에 대하여 공통적으로 이용할 수 있다. 그 때문에, 압축 부호의 종류는, 공통의 개념에 대응하는 문자 정보의 수 정도만큼 증가한다. 예컨대, 800 종류의 동사에 대하여, 예(2)나 예(5)와 같이 압축 부호를 할당하면, 압축 부호의 종류는 800 종류의 수배로 급등하여 버린다. 한편, 문법상의 기능의 종류로서, 예컨대, 원형, 삼인칭 단수 현재형, 과거형, 과거분사 및 현재분사의 5 종류를 식별하게 하는 경우에는, 동사에 관해서는 압축 부호의 종류의 수는 5종류밖에 증가하지 않는다. 예(3)나 예(6)에 나타내는 압축 부호 할당을 함으로써, 압축 부호의 종류의 수를 거의 증대시키지 않아, 예(1)나 예(4)에 나타내는 사태를 일으키기 어렵게 된다.
[본 실시형태의 구성 및 프로세스]
도 3은 기능 블록 구성의 예를 도시한다. 컴퓨터(1)는 압축부(11), 신장부(12), 생성부(13), 생성부(14) 및 기억부(15)를 포함한다. 기억부(15)는, 예컨대, 압축 대상의 파일 F1, 압축 파일 F2, 신장 파일 F3, 압축 사전 D1이나 신장 사전 D2 등을 기억한다. 또한, 기억부(15)는, 예컨대 압축 사전 D1이나 신장 사전 D1의 생성에 이용되는 단어 리스트 L1을 기억한다. 단어 리스트 L1은, 압축 부호를 할당하는 대상의 문자 정보군의 리스트이다. 또한, 기억부(15)는 변환 테이블 T1을 기억한다. 또한, 기억부(15)는, 기억 영역 A1, A2, A3 및 A4 등의 기억 영역을 두어, 압축부(11), 신장부(12), 생성부(13) 및 생성부(14)의 처리의 작업 영역으로서 이용된다. 압축부(11)는, 기억부(15)에 기억된 파일 F1의 압축 처리를 실행하여, 압축 파일 F2를 생성한다. 신장부(12)는, 기억부(15)에 기억된 압축 파일 F2의 신장 처리를 실행하여, 신장 파일 F3을 생성한다. 생성부(13)는, 압축부(11)의 압축 처리에서 이용되는 압축 사전 D1을 생성한다. 생성부(14)는 신장부(12)의 신장 처리에서 이용되는 신장 사전 D2를 생성한다.
압축부(11)는 제어부(111), 검색부(112), 판독부(113) 및 기록부(114)를 포함한다. 제어부(111)는, 검색부(112), 판독부(113) 및 기록부(114)의 제어에 의해, 파일 F1의 압축 처리를 실행한다. 제어부(111)는, 파일 F1을 기억 영역 A1에 로드한다. 판독부(113)는, 기억 영역 A1 내의 파일 F1로부터 데이터를 판독한다. 검색부(112)는, 판독부(113)가 판독한 데이터에 관해서, 압축 사전 D1의 검색을 한다. 기록부(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)는, 기억 영역 A3 내의 압축 파일 F2로부터 압축 부호를 판독한다. 검색부(122)는, 판독부(123)가 판독한 압축 부호에 관해서, 신장 사전 D2의 검색을 한다. 검색부(122)는, 신장 사전 D2로부터 취득한 신장 코드가 문자 정보인지 변환 테이블 T1에 있어서의 오프셋치인지 판정하여, 오프셋치인 경우에는 오프셋치에 기초하여 문자 정보를 취득한다. 기록부(124)는, 검색부(122)에 의해 취득된 문자 정보를 기억 영역 A4에 기록한다. 제어부(121)는, 판독부(123)의 판독 위치나 기록부(124)의 기록 위치 등을 관리하며, 예컨대, 판독부(123)나 기록부(124)에, 압축 파일 F2에 포함되는 압축 부호에 대하여 순차 처리를 실행하게 한다. 또한, 제어부(121)는, 기억 영역 A4에 저장된 문자 정보열(신장 데이터)에 기초하여 신장 파일 F3을 생성하여, 기억부(15)에 신장 파일 F3을 저장한다.
생성부(13)는 제어부(131), 통계부(132), 할당부(133) 및 소트부(134)를 포함한다. 생성부(13)는, 압축부(11)로부터의 지시에 따라서 압축 사전 D1을 생성한다. 제어부(131)는, 통계부(132), 할당부(133) 및 소트부(134)의 제어에 의해, 파일 F1의 압축에 이용되는 압축 사전 D1을 생성한다. 통계부(132)는, 파일 F1 내에 포함되는 문자나 단어 등의 문자 정보마다 출현 횟수를 카운트하여, 각 문자 정보의 출현 빈도를 나타내는 빈도 테이블 T2를 생성한다. 소트부(134)는, 통계부(132)가 생성한 출현 빈도에 기초하여, 빈도 테이블 T2 내의 각 문자 정보를 소트한다. 할당부(133)는, 통계부(132)가 생성한 출현 빈도에 기초하여, 각 문자 정보에 대응하는 압축 부호를 생성하고, 생성한 압축 부호를 각 문자 정보에 할당한다. 소트부(134)는, 또한, 문자 정보 및 압축 부호의 조합인 각 조를, 각 문자 정보에 대응하는 문자 코드의 순서(예컨대 문자 코드의 값이 작은 순서)로 소트한다. 제어부(131)는, 통계부(132), 할당부(133) 및 소트부(134)에 의한 처리 결과에 기초하여 압축 사전 D1을 생성하고, 기억부(15)에 압축 사전 D1을 저장한다. 또한, 제어부(131)는, 통계부(132)가 생성한 빈도 테이블 T2를 기억부(15)에 저장한다.
생성부(14)는 제어부(141), 할당부(142), 복제부(143) 및 소트부(144)를 포함한다. 생성부(14)는, 신장부(12)로부터의 지시에 따라서, 신장 사전 D2를 생성한다. 제어부(141)는, 할당부(142), 복제부(143) 및 소트부(144)를 제어하여, 압축 파일 F2의 신장에 이용되는 신장 사전 D2를 생성한다. 할당부(142)는, 빈도 테이블 T2를 이용하여, 빈도 테이블 T2 내의 각 문자 정보에 대응하는 압축 부호를 생성한다. 소트부(144)는, 압축 부호가 할당된 각 문자 정보를, 압축 부호의 값에 따라서 소트한다. 복제부(143)는, 소트된 각 압축 부호의 부호 길이에 따라서, 압축 부호에 대응하는 문자나 단어를 나타내는 문자 코드를 복제한다. 제어부(141)는, 복제부(143)에 의해 복제된 문자 코드를, 할당부(142)에 의해 생성된 압축 부호에 대응한 오프셋 위치에 배치함으로써, 신장 사전 D2를 생성한다. 제어부(141)는, 또한 기억부(15)에 신장 사전 D2를 저장한다.
압축부(11) 및 생성부(13)에 의해 파일 F1의 압축이 행해진다. 압축 처리 프로세스는 도 4, 도 5, 도 6 및 도 10에 도시된다. 또한, 신장부(12) 및 생성부(14)에 의해 압축 파일 F2의 신장이 행해진다. 신장 처리 프로세스는 도 11, 도 12 및 도 14에 도시된다.
도 4는 압축 기능의 처리 프로세스의 예를 도시한다. 압축 기능이 호출되면, 제어부(111)는 압축 처리의 전처리를 실행한다(S101). 압축 기능의 호출은 압축 대상인 파일 F1의 지정을 포함한다. S101의 전처리에서는, 제어부(111)는, 기억 영역 A1 및 기억 영역 A2를 확보하고, 단어 리스트 L1 및 변환 테이블 T1을 기억부(15)로부터 로드하여, 빈도 테이블 T2 및 압축 사전 D1의 저장 영역을 확보한다.
S101의 처리가 종료되면, 제어부(111)는 기억 영역 A1에 파일 F1을 로드한다(S102). 파일 F1의 사이즈가 정해진 사이즈보다도 큰 경우에는, 제어부(111)는, 파일 F1을 블록 분할하여, 분할하여 얻어진 블록마다 이하의 압축 처리를 실행한다. 이어서, 제어부(111)는, 생성부(13)에 압축 사전 D1의 생성을 지시한다(S103).
도 5는 압축 사전 생성의 처리 프로세스의 예를 도시한다. 제어부(111)로부터 압축 사전의 생성 지시를 받으면, 제어부(131)는, 통계부(132)에 파일 F1에 포함되는 문자 정보의 빈도 집계 처리를 실행하게 한다(S201).
도 6은 빈도 집계 처리의 처리 프로세스의 예를 도시한다. 제어부(131)에 의해 빈도 집계 처리의 지시를 받으면, 통계부(132)는, 기억 영역 A1에 로드된 파일 F1에 관해서 빈도 집계 처리를 시작한다. 빈도 집계 처리를 시작할 때에, 판독 위치는 기억 영역 A1에 로드된 파일 F1의 선두를 나타낸다. 우선, 통계부(132)는, 기억부(15)로부터 로드된 단어 리스트 L1과 변환 테이블 T1에 기초하여, 각 문자 정보의 출현 빈도를 저장하기 위한 빈도 테이블 T2를 생성한다(S301). 구체적으로는, 통계부(132)는, S101의 처리에서 확보된 기억 영역 내에, 빈도 집계를 하는 대상의 문자 정보를 순차 등록한다.
도 7은 변환 테이블의 예를 도시한다. 변환 테이블 T1은, 문자 정보에 대하여, 공통 문자 정보 및 식별 기호의 조를 대응시킨다. 공통 문자 정보는, 복수 종류의 공통의 개념에 대응하는 문자 정보의 각각에 있어서 공통의 개념을 나타낸다. 식별 기호는 각각의 문자 정보를 식별한다. 예컨대, 「talk」, 「talks」, 「talked」 및 「talking」이라고 하는 문자 정보의 각각은 「talk」라고 하는 공통의 개념에 대응하는 문자 정보이다. 변환 테이블 T1에서는, 「talk」, 「talks」, 「talked」 및 「talking」이라고 하는 문자 정보의 각각에 대하여, 「talk」라고 하는 공통의 개념을 나타내는 문자 정보(공통 문자 정보)가 대응시켜진다. 또한, 변환 테이블 T1에서는, 「talk」, 「talks」, 「talked」 및 「talking」이라고 하는 문자 정보의 각각을 식별하기 위해서, 식별 기호 [c1], [c2], [c3] 및 [c4]가 추가로 대응시켜진다. 식별 기호 [c1]는 동사의 원형임을 나타내는 식별 기호이다. 또한, 식별 기호 [c2]는 동사의 삼인칭 단수형임을 나타내는 식별 기호이다. 또한, 식별 기호 [c3]는 동사의 과거형임을 나타내는 식별 기호이다. 또한, 식별 기호 [c4]는 동사의 현재분사임을 나타내는 식별 기호이다. 변환 테이블 T1의 좌측의 값은, 변환 테이블 T1에 있어서, 각 문자 정보에 관한 정보가 저장되는 오프셋 위치를 나타낸다. 식별 기호 [c1], [c2], [c3] 및 [c4]로서, 파일 F1에 사용되는 문자 코드계에 있어서의 빈 코드가 이용된다. 그 밖의 식별 기호에 관해서도 마찬가지로 빈 코드가 이용된다.
「spend」, 「spends」, 「spent」 및 「spending」이라고 하는 문자 정보에 대하여도, 공통의 개념을 나타내는 「spend」라고 하는 공통 문자 정보가 대응시켜진다. 또한, 「spend」, 「spends」, 「spent」 및 「spending」의 각각에 대하여는 「talk」, 「talks」, 「talked」 및 「talking」과 마찬가지로 식별 기호 [c1], 식별 기호 [c2], 식별 기호 [c3] 및 식별 기호 [c4]가 대응시켜진다. 또한, 예컨대, 「drunk」라고 하는 문자 정보에 관해서는, 공통 문자 정보 「drink」 및 동사의 과거분사임을 나타내는 식별 기호 [c5]가 대응시켜진다.
또한, 예컨대, 「good」, 「better」 및 「best」라고 하는 형용사에 대하여, 공통되는 개념인 「good」을 나타내는 공통 문자 정보가 대응시켜져 있다. 「good」, 「better」 및 「best」라고 하는 형용사의 각각은, 형용사의 원형임을 나타내는 식별 기호 [c6], 형용사의 비교급임을 나타내는 식별 기호 [c7] 및 형용사의 최상급임을 나타내는 식별 기호 [c8]의 각각에 대응시켜진다. 또한, 예컨대, 「I」, 「my」, 「me」, 「mine」 및 「myself」라고 하는 문자 정보는, 공통되는 개념인 「I」를 나타내는 공통 문자 정보가 대응시켜져 있다. 「I」, 「my」, 「me」, 「mine」 및 「myself」의 각각은, 인칭대명사의 주격을 나타내는 식별 기호 [c9], 인칭대명사의 소유격을 나타내는 식별 기호 [c10], 인칭대명사의 목적격을 나타내는 식별 기호 [c11], 소유대명사를 나타내는 식별 기호 [c12] 및 재귀대명사를 나타내는 식별 기호 [c13]이 대응시켜진다.
예컨대, 변환 테이블 T1은, 문자 정보와, 공통 문자 정보 및 식별 기호에 의한 조와의 대응 관계가 미리 설정되어 기억부(15)에 기억된다. 통계부(132)는, 단어 리스트 L1에 등록된 문자 정보를, 변환 테이블 T1에 등록된 문자 정보를 제외하고, 빈도 테이블 T2에 등록한다. 또한, 통계부(132)는, 변환 테이블 T1 내의 공통 문자 정보 및 식별 기호를 빈도 테이블 T2에 등록한다.
도 8은 빈도 테이블 T2의 예를 도시한다. 빈도 테이블 T2는, 문자 정보(공통 문자 정보나 식별 기호도 포함함)와 출현 빈도를 대응시키는 테이블이다. 전술한 것과 같이, 통계부(132)의 빈도 테이블 T2의 생성에 있어서, 변환 테이블 T1에 등록되어 있는 문자 정보가 제외되어 있다. 그 때문에, 「talk」, 「talks」, 「talked」 및 「talking」 등의 공통의 개념에 대응하는 복수 종류의 문자 정보의 각각은, 공통 문자 정보 「talk」와 각 식별 기호 [c1]~[c4]로 나뉘어 빈도 테이블 T2에 등록된다.
도 6에 도시하는 처리 프로세스의 설명으로 되돌아간다. 빈도 테이블 T2에 대하여 문자 정보가 등록되면, 통계부(132)는, 기억 영역 A1의 판독 위치로부터 문자 코드를 취득한다(S302). S302의 처리에서, 판독 위치는 S302에서 취득된 문자 코드분만큼 나아가게 된다.
이어서, 통계부(132)는, S302에서 취득한 문자 코드가 단락 기호인지 여부를 판정한다(S303). S303의 판정은, 단락 기호로서 처리하는 문자 코드를 미리 설정해 두고서, S302에서 취득한 문자 코드가 미리 설정한 문자 코드 중 어느 것에 해당하는지 여부에 의해 판단된다. 단락 기호는, 예컨대, 스페이스 기호(ASCII 코드계에서 0x20), 엑스클라메이션(ASCII 코드계에서 0x21), 콤마(ASCII 코드계에서 0x2C), 피리어드(ASCII 코드계에서 0x2E), 콜론(ASCII 코드계에서 0x3A), 세미콜론(ASCII 코드계에서 0x3B) 및 퀘스쳔(ASCII 코드계에서 0x3F) 등이다. 혹은, S303의 판정은, S302에서 취득한 문자 코드가, 미리 정한 수치 범위(예컨대, ASCII 코드계에서 0x20~0x3F)인지 여부에 의해 판단되더라도 좋다.
S302에서 취득한 문자 코드가 단락 기호가 아닌 경우(S303: NO)에는, 통계부(132)는 S302에서 취득한 문자 코드를 버퍼에 저장한다(S304). S304의 처리가 종료되면, S311의 프로세스로 이행한다.
S302에서 취득한 문자 코드가 단락 기호인 경우(S303: YES)에는, 통계부(132)는 버퍼에 저장되어 있는 문자 정보에 기초하여 변환 테이블 T1을 참조한다(S305). 또한, 통계부(132)는, S305의 참조 결과에 기초하여, 변환 테이블 T1에 버퍼에 저장되어 있는 문자 정보가 등록되어 있는지 여부를 판정한다(S306).
버퍼에 저장되어 있는 문자 정보가 변환 테이블 T1에 저장되어 있지 않은 경우(S306: NO)에는, 통계부(132)는, 버퍼에 저장되어 있는 문자 정보에 관해서 카운트한다(S307). S307에서, 빈도 테이블 T2에, 버퍼에 저장되어 있는 문자 정보와 동일한 문자 정보가 없는 경우에는, 통계부(132)는, 버퍼에 저장되어 있는 각각의 문자 코드에 관해서 카운트를 한다.
버퍼에 저장되어 있는 문자 정보가 변환 테이블 T1에 저장되어 있는 경우(S306: YES)에는, 통계부(132)는, 버퍼에 저장되어 있는 문자 정보와 변환 테이블 T1에 의해 대응시켜진 공통 문자 정보 및 식별 기호 양쪽에 관해서 카운트한다(S308). 예컨대, 통계부(132)는, S308에서, 공통 문자 정보와 식별 기호 양쪽에 관해서 빈도 테이블 T2에 의해 대응시켜진 카운트치를 인크리멘트한다. 예컨대, 버퍼에 저장되어 있는 문자 정보가 「spent」인 경우에는, 통계부(132)는, 공통 문자 정보인 「spend」와 식별 기호 [c3] 양쪽에 관해서 카운트치를 인크리멘트한다.
S307 또는 S308의 처리가 이루어지면, 통계부(132)는 S302에서 취득한 단락 기호를 카운트한다(S309). S309에서, 통계부(132)는, 빈도 테이블 T2에 있어서 S302에서 취득한 단락 기호에 대응하는 카운트치를 인크리멘트한다. 또한, 통계부(132)는 버퍼를 클리어한다(S310). S309와 S310의 처리는 서로 프로세스를 바꿔도 상관없다.
S304 또는 S310이 이루어지면, 통계부(132)는, 판독 위치가, 기억 영역 A1에 로드한 파일 F1의 종단인지 여부를 판정한다(S311). S311의 판정에서 종단이 아니면(S311: NO), 통계부(132)는 S302의 프로세스로 이행한다. 또한 S311의 판정에서 종단이라면(S311: YES), 통계부(132)는 빈도 집계 처리를 종료한다.
통계부(132)에 의한 빈도 집계 처리가 종료되면, 제어부(131)는, 도 5의 프로세스로 되돌아가, 소트부(134)에 소트 처리를 실행하게 한다(S202). 예컨대, 소트부(134)는, 빈도 테이블 T2에 등록된 문자 정보(문자, 기호, 단어, 공통 문자 정보 및 식별 기호 등)를, 통계부(132)에 의해 생성된 빈도 정보(각 문자 정보에 관한 출현 횟수)에 기초하여 재배열한다. 예컨대, 소트부(134)는 출현 횟수가 많은 순이나 적은 순 중 어느 하나로, 빈도 테이블 T2에 등록된 문자 정보를 재배열한다.
S202의 처리가 종료되면, 제어부(131)는, 할당부(133)에 압축 부호의 할당을 실행하게 한다(S203). 예컨대, 할당부(133)는, S202에서 빈도 순으로 재배열된 문자 정보군에 대하여, 허프만 부호화나 산술 압축 등, 높은 빈도의 문자 정보일수록 짧은 압축 부호를 할당하는 알고리즘에 기초하여 압축 부호를 할당한다.
빈도 테이블 T2에 등록된 각 문자 정보에 압축 부호가 할당되면, 제어부(131)는, 공통 문자 정보 및 식별 기호의 조합에 대응하는 압축 부호의 조를 생성한다(S204). S204에서, 제어부(131)는, 변환 테이블 T1에 등록된 공통 문자 정보와 식별 기호와의 조합에 대응하는 문자 정보와, 조합된 공통 문자 정보 및 식별 정보 각각에 대응하는 압축 부호의 조합을 대응시킨다. 예컨대, 문자 정보 「spent」는, 변환 테이블 T1에서 대응시켜진 공통 문자 정보 「spend」 및 식별 기호 [c3]에 대응하는 압축 부호 c(spend) 및 압축 부호 c([c3])의 조에 대응시켜진다. 이 때, 압축 부호 c([c3])가 앞이고 압축 부호 c(spend)가 뒤인 순서로 압축 부호가 조합된다. 또한, 제어부(131)는, 단어 리스트 L1에 등록된 문자 정보의 각각과, 각각의 문자 정보에 대응하는 압축 부호를 대응시킨 대응 정보를, 압축 사전 D1을 저장하는 영역에 저장한다. 이 대응 정보에 있어서, 변환 테이블 T1에 등록되어 있는 문자 정보에 관해서는, 대응 정보에 있어서 압축 부호의 조(공통 문자 정보에 대응하는 압축 부호와 식별 기호에 대응하는 압축 부호의 조)와 대응시켜져 있다.
이어서, 제어부(131)는, 소트부(134)에, 대응 정보에 포함되는 각 문자 정보와, 각 문자 정보에 대응시켜진 압축 부호와의 셋트를, 각 문자 정보의 문자 코드의 값에 기초하여 소트 처리하게 한다(S205). 소트부(134)는, 예컨대, 문자 정보의 문자 코드가 작은 순으로 재배열한다. 예컨대, 소트부(134)는, 문자 정보의 1번째 문자의 문자 코드의 값이 작은 순으로 배열하고, 1번째 문자의 문자 코드가 동일한 문자 정보끼리는, 2번째 문자의 문자 코드의 값이 작은 순으로 배열한다. S205의 처리에 의해 재배열된 상태가, 도 9에 도시하는 압축 사전 D1이다.
S205의 처리가 종료되면, 제어부(131)는 인덱스의 생성 처리를 한다(S206). 제어부(131)는, 문자 정보와, 그 문자 정보가 S205에서 소트된 문자 정보군 내에서 존재하는 위치를 나타내는 정보(오프셋치)를 대응시켜 인덱스를 생성한다. 도 9에 도시하는 압축 사전 D1에 대하여, 예컨대, 문자 「i」에 오프셋치 「0x0052」 등이 대응시켜진다. 압축 부호의 생성에 있어서 이 인덱스가 이용되면, 「i」부터 시작되는 단어에 대응하는 압축 부호의 검색이 「0x0052」부터 시작된다. S206의 처리가 종료되면, 생성부(13)는, 압축 사전 D1의 생성 처리를 종료한다.
도 9는 압축 사전의 데이터 구조의 예를 도시한다. 도 9에 도시되는 압축 사전 D1에는, 문자 정보와 압축 부호가 대응시켜져 저장된다. 문자 정보와 압축 부호의 셋트의 저장 위치는, 압축 사전 D1의 저장 위치를 시작점으로 하는 오프셋치로 나타내어진다. 예컨대, 문자 정보 「invention」의 정보는 오프셋치 0x0053에 저장된다. S206에서 생성되는 인덱스는, 이 오프셋치를 이용하여 검색 범위 좁히기를 실현한다. 또한, 전술한 것과 같이, 「c()」는, 괄호 안의 문자 정보에 대응하는 압축 부호임을 나타낸다. 도 9의 예에서는, 압축 사전 D1에 등록되는 문자 정보 중, 변환 테이블 T1에 등록되는 문자 정보에 관해서는, 복수의 압축 부호와 대응시켜져 있고, 변환 테이블 T2에 등록되지 않는 문자 정보에 관해서는 하나의 압축 부호와 대응시켜져 있다.
압축 사전 D1은 생성부(13)에 의해 생성되었지만, 다른 일례로서, 압축 사전 D1이 미리 기억부(15)에 기억되어 있는 것으로 하여도 좋다. 이 경우에, 압축 사전 D1은, 예컨대 복수의 파일에서 공통으로 이용된다. 예컨대, 미리 기억부(15)에 기억되는 압축 사전 D1에서는, 예컨대, 과거에 압축된 파일(과거 판의 문서파일)이나 데이터베이스 내에 존재하는 복수 파일에 있어서의 문자 정보의 빈도 정보에 기초하여 압축 부호가 할당되어도 좋다.
생성부(13)가 압축 사전 D1의 생성 처리를 종료하면, 제어부(111)는 도 4의 프로세스로 되돌아가, 압축 데이터 생성 처리를 실행한다(S104).
도 10은 압축 데이터 생성 처리의 처리 프로세스의 예를 도시한다. 압축 데이터 생성 처리의 시작 시점에서, 판독 위치는 기억 영역 A1에 로드된 파일 F1의 시작점에 셋트되고, 기록 위치는 기억 영역 A2의 정해진 위치에 셋트되고, 버퍼는 클리어된다. 판독부(113)는 판독 위치로부터 문자 코드를 취득한다(S401). 제어부(111)는, S401의 문자 코드 취득 후, 판독 위치를 갱신한다. 제어부(111)는, S401에서 취득한 문자 코드가 단락 기호인지 여부를 판정한다(S402). 단락 기호는, S303과 마찬가지로, 스페이스나 콤마 등의 미리 설정한 문자 코드이다.
S401에서 취득한 문자 코드가 단락 기호가 아닌 경우(S402: NO)에는, 제어부(111)는, 판독부(113)가 S401에서 취득한 문자 코드를 버퍼에 저장한다(S403). S403이 행해지면, S401의 프로세스로 되돌아가, 판독부(113)는 판독 위치에서 문자 코드를 취득한다.
S401에서 취득한 문자 코드가 단락 기호인 경우(S402: YES)에는, 검색부(112)는, 압축 사전 D1을 버퍼 내에 저장된 문자 코드(또는 문자 코드열)로 검색한다(S404). 제어부(111)는, 버퍼 내에 저장된 문자 코드(또는 문자 코드열)와 일치하는 일치 문자 정보가 압축 사전 D1 내에 존재하는지 여부를 판정한다(S405).
일치 문자 정보가 존재하는 경우(S405: YES)에는, 기록부(114)는, 기억 영역 A2의 기록 위치에, 압축 사전 D1 내에서 일치 문자 정보에 대응시켜진 압축 부호를 기록한다(S406). 또한, 제어부(111)는 기록 위치를 갱신한다. 압축 사전 D1에 있어서, 복수의 압축 부호가 일치 문자 정보에 대응시켜져 있는 경우에는, 기록부(114)는, 복수의 압축 부호를 기록 위치에서 기록한다. 기록이 이루어지면, 제어부(111)는, 기록한 압축 부호 길이에 기초하여, 기억 영역 A2에의 기록 위치를 갱신한다.
압축 사전 D1 내에 일치 문자 정보가 존재하지 않는 경우(S405: NO)는, 제어부(111)는 버퍼 내의 각 문자 코드에 대하여 처리를 한다(S407~S410). 제어부(111)는, 각 문자 코드에 관해서, 검색부(112)에 압축 사전 D1을 검색하게 하고(S408), 검색 결과 얻어진 압축 부호를 기록부(114)에 기록 위치에 기록하게 한다(S409). S408 및 S409의 처리가, 버퍼에 저장된 각 문자 코드에 대하여 행해지는 S407~S410의 처리가 종료된다.
S406 또는 S410 중 어느 것이 행해지면, 제어부(111)는, 버퍼에 저장된 문자 코드(또는 문자 코드열)를 삭제(클리어)한다(S411). 또한, 기록부(114)는, S401에서 취득한 단락 기호에 압축 사전 D1에서 대응시켜진 압축 부호를 기록 위치에 기록한다(S412). S411보다도 먼저 S412가 행해지더라도 상관없다. 또한, 제어부(111)는, 판독 위치가 기억 영역 A1에 로드된 파일 F1의 종단인지 여부를 판정한다(S413).
판독 위치가 파일 F1의 종단이 아닌 경우(S413: NO)에는, S401의 프로세스로 되돌아가, 판독부(113)는 판독 위치에서 문자 코드를 취득한다. 판독 위치가 파일 F1의 종단인 경우(S413: YES)에는, 제어부(111)는 압축 데이터 생성 처리를 종료한다.
전술한 압축 데이터 생성 처리가 종료되면, 도 4에 도시하는 S105로 프로세스가 되돌아간다. 제어부(111)는, 기억 영역 A2 내에 저장된 압축 데이터를 이용하여 압축 파일 F2를 생성하여, 기억부(15)에 저장한다(S105). 압축 파일 F2는, 예컨대, 헤더, 기억 영역 A2 내의 압축 데이터 및 트레일러 정보로 구성된다. 헤더에는, 예컨대, 압축 알고리즘을 식별하는 식별 정보나, 헤더, 압축 데이터 및 트레일러 정보 각각의 데이터 사이즈 등의 정보가 포함된다. 또한, 트레일러 정보에는, 예컨대, 변환 테이블 T1, 빈도 테이블 T2 등이 포함된다.
S105의 처리가 종료되면, 제어부(111)는, 압축 기능의 호출처에 압축 처리가 종료되었다는 취지를 통지한다(S106). S106의 통지에는, 예컨대, 압축 파일 F2의 저장처를 나타내는 정보가 포함된다. S106의 처리가 종료되면, 압축부(11)에 의한 압축 처리가 종료된다.
도 11은 신장 기능의 처리 프로세스의 예를 도시한다. 신장 기능이 호출되면, 제어부(121)는 신장 처리의 전처리를 실행한다(S501). 신장 기능의 호출은, 신장 대상인 압축 파일 F2의 지정을 포함한다. S501의 전처리에서는, 제어부(121)는, 기억 영역 A3 및 기억 영역 A4를 확보하고, 또한 신장 사전 D3의 저장 영역을 확보한다.
S501의 처리가 종료되면, 제어부(121)는, 압축 파일 F2를 기억 영역 A3에 로드한다(S502). 이어서, 제어부(121)는 생성부(14)에 신장 사전을 생성하게 한다(S503).
도 12는 신장 사전 생성의 처리 프로세스의 예를 도시한다. 제어부(141)는, 기억 영역 A3에 로드된 압축 파일 F2의 트레일러 정보로부터, 변환 테이블 T1 및 빈도 테이블 T2를 취득한다(S601). 이어서, 제어부(141)는, 빈도 테이블 T2에 등록된 각 문자 정보(공통 문자 정보 및 식별 기호를 포함함)에 관해서, 빈도 테이블 T2에 기초하여 압축 부호를 할당한다(S602). S602의 처리에서는, S203과 같은 식의 알고리즘에 의해 압축 부호가 할당된다. 이어서, 제어부(141)는, 압축 부호가 할당된 문자 정보 중, 공통 문자 정보는, 취득한 변환 테이블 T1 내의 오프셋치로 변경한다(S603). 이 오프셋치는, 변환 테이블 T1에 있어서, 공통 문자 정보에 대응하는 문자 정보가 저장되는 위치를 나타낸다. 예컨대, 공통 문자 정보 「talk」에 관해서는 오프셋치 「0x0182」가 저장된다. 이 오프셋치 「0x0182」에 의해, 「talk」, 「talks」, 「talked」 및 「talking」 등의 공통의 개념 「talk」에 대응하는 문자 정보가 참조 가능하게 된다.
소트부(144)는, 압축 부호가 할당된 문자 정보(S603에 의해 변경된 오프셋치를 포함함)를, 압축 부호의 값에 따라서 소트한다(S604). 또한, 제어부(141)는, 압축 부호가 할당된 각 문자 정보(S603에 의해 변경된 오프셋치를 포함함)에 대하여, 할당된 압축 부호의 부호 길이를 관련짓는다.
이어서, 복제부(143)는, 문자 정보에 관련지어진 부호 길이에 따른 수로, 문자 정보 및 부호 길이의 정보를 복제한다(S605). 예컨대, 최대의 압축 부호 길이가 12 비트로 설정되어 있는 경우에는, 복제부(143)는, 부호 길이가 n인 문자 정보(오프셋치를 포함함) 및 부호 길이의 정보를 2의 (12-n)승 개로 복제한다. 또한, 제어부(141)는, 복제된 정보를 기억부(15)에 확보된 신장 사전 D2의 저장 영역 내의 위치이며 압축 부호에 기초한 오프셋 위치에 저장한다(S606). S606의 결과, 신장 사전 D2가 생성되고, 프로세스는 도 11의 S504로 이행한다.
도 13은 신장 사전의 데이터 구조의 예를 도시한다. 신장 사전 D2는, 신장 코드(문자 정보 또는 변환 테이블 T1의 오프셋치)와 부호 길이를 나타내는 정보가, 대응하는 압축 부호에 기초한 오프셋 위치에 저장되는 데이터 구조를 갖고 있다. 도 13의 신장 사전 D2는, 압축 부호의 최대의 부호 길이가 12 비트인 경우를 예시하는 것이다.
신장 사전 D2를 이용함으로써, 가변 길이의 부호화가 행해진 압축 데이터로부터 고정 길이의 데이터를 판독하고, 판독한 고정 길이의 데이터에 대응하는 신장 코드를 빼내는 것이 가능하다. 고정 길이의 데이터를 판독함으로써, 1 비트씩 부호의 경계를 판정하는 것보다도 신장 속도의 고속화가 도모된다. 12 비트보다도 짧은 압축 부호에 관해서는 과량으로 압축 데이터로부터 데이터를 판독하여 버리기 때문에, 부호 길이에 기초하여 압축 데이터로부터의 판독 위치의 조정이 이루어진다. 신장 사전 D2는 이러한 신장 처리에 이용되는 신장 사전이기 때문에, 신장 코드 및 부호 길이가 동일한 정보가 중복되어 등록된다.
예컨대, 신장 사전 D2에 있어서의 식별 기호 [c3]에 대응하는 압축 부호 c([c3])는, 「000101」이라는 6 비트의 데이터인 데 대하여, 압축 데이터로부터 12 비트의 데이터로 통합하여 판독된다. 판독한 12 비트 중 전반의 6 비트가 「000101」이라면, 후반의 6 비트가 어떠한 데이터라도 식별 기호 [c3]이라고 하는 신장 코드가 취득 가능하게 될 필요가 있다. 그 때문에, 후반의 6 비트가 취할 수 있는 값 전부에 관해서 신장 코드 및 부호 길이를 저장해 둠으로써, 12 비트의 고정 길이 데이터 중 후반 6 비트가 어떠한 데이터라도, 6 비트의 가변 길이 부호에 대응하는 신장 코드 등의 정보가 취득된다. 식별 기호 [c3]의 정보는, 후반 6 비트 전부(「000000」~「111111」)의 수(64개)로 복제되어, 압축 부호가 「000101」에 따른 오프셋 위치(000101000000(0x140))에 저장된다. 즉, 신장 사전의 오프셋치 0x140~0x17F까지의 64개의 데이터는, 식별 기호 [c3]에 관한 정보가 저장된다.
또한, 공통 문자 정보 「talk」에 관한 정보도, 제어 기호 [c3]과 마찬가지로, 압축 부호의 부호 길이에 따른 수로 복제되어, 압축 부호에 따른 오프셋 위치에 저장된다. 다만 공통 문자 정보는, S603의 처리에서 변환 테이블 T1 내의 오프셋치(0x0182)로 변경되고 있다.
도 14는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. 신장 사전 D2가 생성되면, 제어부(121)는, 압축 파일 F2에 포함되는 압축 데이터에 대응하는 신장 데이터를 생성하는 처리를 시작한다. 기억 영역 A3으로부터의 판독 위치는 파일 F2의 압축 데이터의 시작점에 셋트되고, 기억 영역 A4에의 기록 위치는 기억 영역 A4 내의 정해진 위치에 셋트된다.
판독부(123)는 기억 영역 A3의 판독 위치로부터 압축 데이터를 판독한다(S701). 압축 데이터의 판독은, 전술한 대로 고정 길이(예컨대, 12 비트)로 행해진다. 검색부(122)는, 판독한 고정 길이 데이터에 기초하여 신장 사전 D2를 참조한다(S702). 제어부(121)는, S702의 참조에 의해 얻어진 신장 코드가 식별 기호인지 여부를 판정한다(S703).
S702의 참조에 의해 얻어진 신장 코드가 식별 기호인 경우(S703: YES)에는, 제어부(121)는 활용 플래그를 ON으로 한다(S704). 활용 플래그는, 신장 사전 D2에 있어서 압축 부호에 대응시켜진 신장 코드가 문자 정보인지 오프셋치인지의 판정에 이용된다. S704에서, 제어부(121)는, S702의 참조에 의해 얻어진 식별 기호를 버퍼에 기억한다.
S702의 참조에 의해 얻어진 신장 코드가 식별 기호가 아닌 경우(S703: NO)에는, 제어부(121)는 활용 플래그가 ON인지 여부를 판정한다(S705). 활용 플래그가 ON인 경우(S705: YES)에는, 검색부(122)는 변환 테이블 T1을 참조한다(S706). S706에서, 검색부(122)는, S702의 참조에 의해 얻어진 신장 코드를 변환 테이블 T1의 오프셋치로 하고, 오프셋치에 기초하여 변환 테이블 T1을 참조한다. 또한, 검색부(122)는, 버퍼에 저장한 식별 기호와, 오프셋치(신장 코드)에 의해 나타내어지는 공통 문자 정보와의 조합에 대응하는 문자 정보를, 변환 테이블 T1로부터 취득한다. 제어부(121)는, 활용 플래그를 OFF로 하고, 버퍼에 저장된 식별 기호를 삭제한다(S707).
S705의 판정에서 활용 플래그가 OFF(S705: NO)이거나, S707의 처리를 끝내면, 제어부(121)는, 기억 영역 A4의 기록 위치에 문자 정보를 기록한다(S708). S708에서 기록되는 문자 정보는, S702의 신장 사전 D2의 참조에 의해 얻어진 신장 코드이거나, S706의 변환 테이블 T1의 참조에 의해 얻어진 문자 정보이다. S708에서 기록된 문자 정보의 길이에 따라서, 제어부(121)는 기억 영역 A4에의 기록 위치를 갱신한다(S709).
S704 또는 S709의 처리가 이루어지면, 제어부(121)는, 기억 영역 A3으로부터의 판독 위치를 갱신한다(S710). 기억 영역 A3으로부터의 판독 위치는, S702의 참조에 의해 얻어진 부호 길이에 기초하여 갱신된다. 예컨대, 판독 위치는, 부호 길이의 정보에 나타내어지는 비트수만큼 나아가게 된다.
이어서, 제어부(121)는, 기억 영역 A3으로부터의 판독 위치가, 압축 파일 F2의 압축 데이터의 종단인지 여부를 판단한다(S711). 기억 영역 A3으로부터의 판독 위치가 압축 데이터의 종단이 아닌 경우(S711: NO)에는 프로세스가 S701로 되돌아가, 재차 판독부(123)가 압축 데이터를 판독한다. 기억 영역 A3으로부터의 판독 위치가 압축 데이터의 종단인 경우(S711: YES)에는, 제어부(121)는 신장 데이터 생성 처리를 종료하고, 프로세스가 S505로 이행한다.
다른 일례로서, 신장 사전 D2는 신장 사전의 일례이며, 동일한 정보가 중복되어 등록되어 있지 않은 신장 사전이 이용되어도 좋다. 예컨대, 일반적인 허프만 부호화의 신장 사전이 이용되어도 좋다. 그 경우라도, 신장 사전으로부터 신장 코드가 취득된 경우에는, 제어부(121)는, S703의 판정을 하고, 그 판정 결과에 따라서 S704나 S705~S709의 어느 한 처리를 실행한다.
신장 데이터 생성 처리가 종료되면, 제어부(121)는, 기억 영역 A4에 저장된 신장 데이터에 기초하여 신장 파일 F3을 생성하고, 생성한 신장 파일 F3을 기억부(15)에 저장한다(S505). 또한, 제어부(121)는, 신장 기능의 호출처에 신장 처리가 종료되었다는 취지를 통지한다(S506). S506의 통지에는, 예컨대, 신장 파일 F3의 저장처를 나타내는 정보가 포함된다. S506의 처리가 종료되면, 신장부(12)에 의한 신장 처리가 종료된다.
[압축 부호로의 변환]
도 2에 도시되는 예(3) 및 예(6)에서는, 식별 기호에 대응하는 압축 부호와, 공통 문자 정보에 대응하는 압축 부호와의 조합이 이용된다. 이 조합에서는, 식별 기호에 대응하는 압축 부호가 앞이고, 공통 문자 정보에 대응하는 압축 부호가 뒤인 순서로 조합되어 있다. 이 순서에 의해, 식별 기호가 신장 사전 D1로부터 먼저 판독되기 때문에, 그 후에 판독되는 압축 부호에 기초하여 신장 사전 D1로부터 취득되는 신장 코드가 문자 정보인지 오프셋치인지의 판정이 가능하게 된다.
도 15는 압축 부호로 변환하는 예를 도시한다. 예(3)에 나타내는 것과 같이 식별 기호에 대응하는 압축 부호를 앞으로 하여도 좋지만, 예(7)에 나타내는 것과 같이 공통 문자 정보에 대응하는 압축 부호를 앞으로 하여도 좋다. 예(8)도 예(7)와 마찬가지로, 공통 문자 정보에 대응하는 압축 부호를 앞으로 하고, 식별 기호에 대응하는 압축 부호를 뒤로 한 경우를 예시하고 있다.
도 9에 도시하는 압축 사전 D1은, 도 5의 S204의 처리에서, 식별 기호에 대응하는 압축 부호를 앞으로, 공통 문자 정보에 대응하는 압축 부호를 뒤로 하는 제어에 의해 생성된다. 도 15에 도시하는 예(7)나 예(8)의 순서로 압축 부호를 배열하려면, 도 5의 S204의 처리에서, 공통 문자 정보에 대응하는 압축 부호를 앞으로, 식별 기호에 대응하는 압축 부호를 뒤로 하는 제어가 이루어지면 된다.
도 16은 압축 사전의 데이터 구조의 예를 도시한다. 도 16에 도시되는 압축 사전 D1a는, 변환 테이블 T1에 등록되어 있는 문자 정보에 대응시켜진 압축 부호의 조합에 있어서의 순서를, 압축 사전 D1과는 역으로 한 것이다. 즉, 공통 문자 정보에 대응하는 압축 부호가 앞으로, 식별 기호에 대응하는 압축 부호가 뒤의 순서로 되어 있다.
압축 사전 D1a는, 압축 사전 D1과 마찬가지로, 문자 정보와 압축 부호를 대응시키고 있다. 도 16에서는, 압축 사전 D1a의 문자 정보 「spend」, 「spends」, 「spent」 및 「spending」에 관한 부분에 관해서만 내용이 예시되어 있다. 예컨대, 문자 정보 「spent」에 관해서는, 압축 부호 c(spend) 및 압축 부호 c([c3])가 c(spend)c([c3])의 순서로 늘어서 있다. 압축 사전 D1a를 이용하여 도 10의 압축 데이터 생성 처리가 이루어지면, 압축 사전 D1a 내의 압축 부호의 순서가 그대로 압축 데이터에 반영되기 때문에, 압축 파일 F2에서도 c(spend)c([c3])의 순서로 압축 부호가 배열된다.
도 17은 신장 사전의 데이터 구조의 예를 도시한다. 도 17에 도시되는 신장 사전 D2a는, 신장 코드(문자 정보 또는 오프셋치) 및 부호 길이에 더하여, 또한 활용 플래그가 대응시켜진다. 신장 사전 D2a에서는, 공통 문자 정보에 대응하는 압축 부호에 대해서는, 변환 테이블 T1의 오프셋치, 압축 부호의 부호 길이 및 ON 상태의 활용 플래그가 대응시켜진다. 공통 문자 정보에 대응하는 압축 부호에 기초하여 신장 사전 D2a가 참조된 경우에는, 활용 플래그가 ON임으로써, 신장 코드가 오프셋치인 것을 판단할 수 있게 된다. 공통 문자 정보가 아닌 문자 정보에 대응하는 압축 부호 에 대해서는, 문자 정보, 압축 부호의 부호 길이 및 OFF 상태의 활용 플래그가 대응시켜진다.
신장 사전 D2a를 이용하면, 신장 사전 D2a의 활용 플래그의 참조에 의해, 공통 문자 정보에 대응하는 압축 부호임이 분명하게 되기 때문에, 이 다음에 식별 기호를 얻을 수 있다는 것도 분명하게 된다. 그 때문에, 식별 기호에 대응하는 압축 부호와 문자 정보에 대응하는 압축 부호가 경합하는 것에 관해서 고려할 필요가 없어진다. 즉, 도 15에 도시하는 예(7) 및 예(8)의 경우에는, 식별 기호에 대응하는 압축 부호는, S203 등에서 적용된 부호 할당의 알고리즘에 의하지 않고서, 독자적으로 할당하여도 상관없다. 이에 따라, 부호 할당의 알고리즘에 의해 압축 부호를 할당하는 대상의 문자 정보의 종류가 적어진다. 특히, 식별 기호는, 복수의 문자 정보에 대하여 공통으로 이용되기(각 동사에 있어서 과거형은 식별 기호 [c3]로 나타내어짐) 때문에, 출현 빈도가 높은 경향이 있다. 그 때문에, 다른 문자 정보와 함께 가변 길이 압축 부호의 할당이 이루어지면, 짧은 압축 부호가 할당되기 쉽고, 다른 문자 정보에 할당되는 압축 부호는 길어지기 쉽다. 그 때문에, 식별 기호에 대하여 압축 부호를 독자적으로(문자 정보와는 별도로) 할당함으로써, 문자 정보에 할당되는 압축 부호의 부호 길이가 짧아지는 경향이 있다.
또한, 식별 기호에 대하여 독자적으로 짧은 압축 부호를 할당하는 것이 가능하다. 예컨대, 식별 기호에 의해 8 종류까지의 식별이 이루어지는 것이라면, 3 비트의 고정 길이 부호를 할당하여도 좋다. 이 고정 길이 할당에 관해서는 도 19를 이용하여 후술한다.
도 18은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. 신장 사전 D2a를 이용하는 경우에는, 신장 사전 D2를 이용한 경우와, 신장 코드가 문자 정보인지 변환 테이블 T1의 오프셋치인지를 판정하는 체계가 다르다. 신장 사전 D2a가 생성되면, 제어부(121)는, 압축 파일 F2에 포함되는 압축 데이터에 대응하는 신장 데이터를 생성하는 처리를 시작한다. 기억 영역 A3으로부터의 판독 위치는 파일 F2의 압축 데이터의 시작점에 셋트되고, 기억 영역 A4에의 기록 위치는 기억 영역 A4 내의 정해진 위치에 셋트된다.
판독부(123)는 기억 영역 A3의 판독 위치로부터 압축 데이터를 판독한다(S801). 압축 데이터의 판독은, 전술한 대로 고정 길이(예컨대, 12 비트)로 행해진다. 검색부(122)는, 판독한 고정 길이 데이터에 기초하여 신장 사전 D2a를 참조한다(S802). 제어부(121)는, 기억 영역 A3으로부터의 판독 위치를 갱신한다(S803). 기억 영역 A3으로부터의 판독 위치는, S802의 참조에 의해 얻어진 부호 길이에 기초하여 갱신된다.
이어서, S802의 참조에 의해 얻어진 활용 플래그가 ON인지 여부를 판정한다(S804). 활용 플래그가 ON인 경우(S804: YES)에는, 판독부(123)는, 기억 영역 A3의 판독 위치로부터 식별 기호에 대응하는 압축 부호를 판독한다(S805). 또한, 제어부(121)는, 판독된 압축 부호에 기초하여 식별 기호를 취득한다.
검색부(122)는, S802의 참조에 의해 얻어진 오프셋치와, S805에서 취득한 식별 기호에 기초하여 변환 테이블 T1을 참조한다(S806). S806에서, 검색부(122)는, 오프셋치(신장 코드) 및 식별 기호에 의해 나타내어지는 문자 정보를, 변환 테이블 T1로부터 취득한다. 제어부(121)는, S805에서 판독한 압축 부호의 부호 길이에 따라서 기억 영역 A3의 판독 위치를 갱신한다(S807).
S804의 판정에서 활용 플래그가 OFF(S804: NO)이거나, S807의 처리를 끝내면, 제어부(121)는, 기억 영역 A4의 기록 위치에 문자 정보를 기록한다(S808). S808에서 기록되는 문자 정보는, S802의 신장 사전 D2a의 참조에 의해 얻어진 신장 코드이거나, S806의 변환 테이블 T1의 참조에 의해 얻어진 문자 정보이다. S808에서 기록된 문자 정보의 길이에 따라서, 제어부(121)는 기억 영역 A4에의 기록 위치를 갱신한다(S809).
이어서, 제어부(121)는, 기억 영역 A3으로부터의 판독 위치가, 압축 파일 F2의 압축 데이터의 종단인지 여부를 판단한다(S810). 기억 영역 A3으로부터의 판독 위치가 압축 데이터의 종단이 아닌 경우(S810: NO)에는 프로세스가 S801로 되돌아가, 재차 판독부(123)가 압축 데이터를 판독한다. 기억 영역 A3으로부터의 판독 위치가 압축 데이터의 종단인 경우(S810: YES)에는, 제어부(121)는 신장 데이터 생성 처리를 종료하고, 프로세스가 S505로 이행한다.
도 7에 도시하는 변환 테이블 T1에 따르면, 식별 기호 [c1]~[c5]는 동사에 대하여 이용되고, 식별 기호 [c6]~[c8]은 형용사에 대하여 이용되고, 식별 기호 [c9]~[c13]은 대명사에 대하여 이용된다. 예컨대, 식별 기호 [c1]이 이용되는 문자 정보에 대해서는, 식별 기호 [c6]~[c13]은 이용되지 않는다. 그 때문에, 식별 기호에 대하여 할당하는 압축 부호가, 식별 기호 [c6]~[c13] 중 어느 것에 할당하는 압축 부호와 경합하더라도, 공통 문자 정보에 대응하는 압축 부호와 식별 기호 [c1]에 대응하는 압축 부호와의 조합에 의해서 문자 정보가 특정된다. 즉, 식별 기호 [c1]~[c5]에 대해서는, 식별 기호 [c1]~[c5]로 상호 식별 가능한 압축 부호가 할당되면 된다. 또한, 식별 기호 [c6]~[c8]에 대해서는, 식별 기호 [c6]~[c8]로 상호 식별 가능한 압축 부호가 할당되면 된다. 마찬가지로, 식별 기호 [c9]~[c13]에 대해서는, 식별 기호 [c9]~[c13]로 상호 식별 가능한 압축 부호가 할당되면 된다.
도 19는 압축 부호 할당의 예를 도시한다. 식별 기호에 대하여 고정 길이 부호를 할당하자면, 식별 기호 [c1]~[c5](또는 [c9]~[c13])의 5 종류를 식별할 수 있는 압축 부호가 할당되면 된다. 예컨대, 도 19의 예에 따르면, 각 식별 기호에 대하여, 3 비트의 고정 길이의 압축 부호가 할당된다.
도 19에는, 5 종류의 압축 부호로서, 「000」, 「001」, 「010」, 「011」 및 「100」이 예시된다. 고정 길이 압축 부호 「000」은 식별 기호 [c1], 식별 기호 [c6] 및 식별 기호 [c9]에 대하여 공통으로 할당된다. 고정 길이 압축 부호 「001」은 식별 기호 [c2], 식별 기호 [c7] 및 식별 기호 [c10]에 대하여 공통으로 할당된다. 고정 길이 압축 부호 「010」은 식별 기호 [c3], 식별 기호 [c8] 및 식별 기호 [c11]에 대하여 공통으로 할당된다. 고정 길이 압축 부호 「011」은 식별 기호 [c4] 및 식별 기호 [c12]에 대하여 공통으로 할당된다. 고정 길이 압축 부호 「100」은 식별 기호 [c5] 및 식별 기호 [c13]에 대하여 공통으로 할당된다. 공통으로 고정 길이 부호가 할당된 식별 기호끼리는, 식별 대상의 문자 정보가 경합하지 않기(품사의 종류가 다르기) 때문에, 압축 부호끼리 경합하더라도 신장 데이터 생성 처리시의 변환 테이블 T1의 참조(S706 또는 S806)로 문제없이 문자 정보를 취득할 수 있게 된다. 예컨대, 변환 테이블 T1에 있어서, 공통 문자 정보 「spend」이며 식별 정보의 압축 부호가 「010」이 되는 문자 정보를 찾으면, 문자 정보 「spent」를 취득하는 것이 가능하다. 압축 부호 「010」은 식별 기호 [c3]에도 식별 기호 [c8]에도 대응하는데, 변환 테이블 T1에 있어서, 공통 문자 정보 「spend」와 관련지어지는 것은 식별 기호 [c3]뿐이기 때문에, 식별 기호 [c3]이 특정된다.
[규칙 변화되는 단어에의 대응]
전술한 방법에 따르면, 신장 처리시에 변환 테이블 T1을 참조함으로써, 표기가 다른 문자 정보가 취득되었다. 동사나 형용사에 관해서는, 불규칙하게 단어 형태가 변화되는 단어가 존재하는 한편, 어형 변화의 패턴이 공통되는 경우가 있다. 단어 형태의 변화 패턴이 공통되는 경우에는, 단어의 기본형을 어형 변화의 룰에 따라서 어형 변화시킴으로써, 어형 변화한 단어를 특정하는 것이 가능하다. 신장시에 공통 문자 정보를 룰에 따라서 어형 변화시킴으로써 원래의 문자 정보를 복원할 수 있으면, 변환 테이블 T1의 참조가 불필요하게 된다. 그 때문에, 변환 테이블 T1 중, 규칙 변화되는 문자 정보에 관한 정보는 압축 파일 F2에 포함되지 않더라도 상관없다. 변환 테이블 T1 중, 규칙 변화되는 문자 정보에 관한 정보를 제외하고 압축 파일 F2에 포함시킴으로써, 트레일러 정보의 데이터 사이즈가 작아져, 압축 파일 F2 전체의 파일 사이즈가 작아진다. 또한, 이 경우에는, 빈도 테이블 T2에 등록된 공통 문자 정보 중, 압축 파일 F2로부터 빼내어진 변환 테이블에 등록되어 있지 않은 공통 문자 정보가 규칙 변화 플래그를 ON으로 하는 대상이 된다.
도 20은 신장 사전의 데이터 구조의 예를 도시한다. 도 20에 도시하는 신장 사전 D2b는, 신장 코드(문자 정보)와, 압축 부호의 부호 길이, 활용 플래그 및 규칙 변화 플래그가 관련지어져 있다. 규칙 변화 플래그는, 관련지어진 문자 정보가 규칙 변화되는 문자 정보인지 여부를 나타낸다. ON 상태의 규칙 변화 플래그가 관련지어진 문자 정보는 문법적으로 규칙 변화되는 문자 정보(「talk」 등의 동사 등)이다. 한편, OFF 상태의 규칙 변화 플래그가 관련지어진 문자 정보는 문법적으로 불규칙하게 변화하는 문자 정보(「spend」 등의 동사 등)이거나, 또는 변화하지 않는 문자 정보이다(일반명사 등). 예컨대, 규칙 변화 플래그는, 예컨대, 변환 테이블 T1을 확장하여, 변환 테이블 T1에 등록된 문자 정보의 각각에 대하여 설정된다. 신장 사전 D2b를 생성할 때에, 변환 테이블 T1로부터 규칙 변화 플래그가 설정된 문자 정보를 특정하고, 특정된 문자 정보에 관해서, 신장 사전 D2b 내의 규칙 변화 플래그가 ON으로 설정된다. 규칙 변화의 문자 정보에 관한 신장을, 테이블 참조가 아니라 알고리즘으로 실행하기 위해서, 도 18에 도시하는 신장 데이터 생성 처리가 일부 확장된다.
도 21은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. S804에서, 활용 플래그가 ON이라고 판정된 경우(S804: YES)에는, 판독부(123)는 식별 기호에 대응하는 압축 부호를 판독한다(S805). 또한, 제어부(121)는, S802의 신장 사전 D2b의 참조에 의해 참조되는 규칙 변화 플래그가 OFF인지 여부를 판정한다(S811).
규칙 변화 플래그가 OFF인 경우(S811: YES)에는, 변환 테이블 T1을 식별호와 오프셋치에 기초하여 참조하는 S806의 처리가 행해진다(S806). S806이 이루어지면, 이어서 S807의 처리가 행해진다.
도 22는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. 규칙 변화 플래그가 ON인 경우(S811: NO)에는, S805에서 판독된 압축 부호에 대응하는 식별 기호가 [c1]인지 여부를 판정한다(S812). S812의 판정에서 식별 기호 [c1]인 경우(S812: YES)에는, 제어부(121)는, 신장 사전 D2b로부터 S801에서 판독한 압축 데이터에 대응하는 신장 코드(문자 정보)를 취득한다(S813). S813의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다. S812의 판정에서 식별 기호 [c1]가 아닌 경우(S812: NO)에는, S805에서 판독된 압축 부호에 대응하는 식별 기호가 [c2]인지 여부를 판정한다(S814). S814의 판정에서 식별 기호 [c2]가 아닌 경우(S814: NO)에는, S805에서 판독된 압축 부호에 대응하는 식별 기호가 [c3]인지 여부를 판정한다(S815). S815의 판정에서 식별 기호 [c3]가 아닌 경우(S815: NO)에는, S805에서 판독된 압축 부호에 대응하는 식별 기호가 [c4]인지 여부를 판정한다(S816). S816의 판정에서 식별 기호 [c4]가 아닌 경우(S816: NO)에는, S805에서 판독된 압축 부호에 대응하는 식별 기호가 [c5]인지 여부를 판정한다(S817). S817의 판정에서 식별 기호 [c6]인 경우(S817: YES)에는, 제어부(121)는, 신장 사전 D2b로부터 S801에서 판독한 압축 데이터에 대응하는 신장 코드(문자 정보)를 취득한다(S818). S818의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다. S817의 판정에서 식별 기호 [c6]가 아닌 경우(S817: NO)에는, S805에서 판독된 압축 부호에 대응하는 식별 기호가 [c7]인지 여부를 판정한다(S819).
도 23은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. S814의 판정에서 식별 기호 [c2]인 경우(S814: YES)에는, 제어부(121)는, 신장 사전 D2b로부터 S801에서 판독한 압축 데이터에 대응하는 신장 코드(문자 정보)를 취득한다(S820). 이어서, 제어부(121)는, S820에서 취득한 문자 정보의 말미가 「s」, 「sh」, 「ch」, 「x」 및 「o」 중 어느 것인지 여부를 판정한다(S821). S821에서, 어느 하나에 해당한다고 판단된 경우(S821: YES)에는, 제어부(121)는, S820에서 취득된 문자 정보에 「es」를 추가한다(S822). S822의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S821에서, 어느 것에도 해당하지 않는다고 판단된 경우(S821: NO)에는, 제어부(121)는, S820에서 취득된 문자 정보의 말미가, 자음(「a」, 「e」, 「i」, 「u」 및 「o」 이외의 알파벳)에 「y」가 후속되는 단어 형태인지 여부를 판정한다(S823). S823에서, 자음에 「y」가 후속되는 단어 형태라고 판정된 경우(S823: YES)에는, 제어부(121)는, S820에서 취득된 문자 정보의 말미의 「y」를 「ies」로 변경한다(S824). S824의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S823에서, 자음에 「y」가 후속되는 단어 형태가 아니라고 판정된 경우(S823: NO)에는, 제어부(121)는, S820에서 취득된 문자 정보의 말미에 「s」를 추가한다(S825). S825의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
도 24는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. S815의 판정에서 식별 기호 [c3]인 경우(S815: YES)에는, 제어부(121)는, 신장 사전 D2b로부터 S801에서 판독한 압축 데이터에 대응하는 신장 코드(문자 정보)를 취득한다(S826). 이어서, 제어부(121)는, S826에서 취득한 문자 정보의 말미가 「e」인지 여부를 판정한다(S827). S827에서, S826에서 취득한 문자 정보의 말미가 「e」라고 판단된 경우(S827: YES)에는, 제어부(121)는, S826에서 취득된 문자 정보에 「d」를 추가한다(S828). S828의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S827에서, S826에서 취득한 문자 정보의 말미가 「e」가 아니라고 판단된 경우(S827: NO)에는, 제어부(121)는, S826에서 취득된 문자 정보의 말미가, 자음에 「y」가 후속되는 단어 형태인지 여부를 판정한다(S829). S829에서, 자음에 「y」가 후속되는 단어 형태라고 판정된 경우(S829: YES)에는, 제어부(121)는, S826에서 취득된 문자 정보의 말미의 「y」를 「ied」로 변경한다(S830). S830의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S829에서, 자음에 「y」가 후속되는 단어 형태가 아니라고 판정된 경우(S829: NO)에는, 제어부(121)는, S826에서 취득된 문자 정보의 말미에 「ed」를 추가한다(S831). S831의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
도 25는 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. S816의 판정에서 식별 기호 [c4]인 경우(S816: YES)에는, 제어부(121)는, 신장 사전 D2b로부터 S801에서 판독한 압축 데이터에 대응하는 신장 코드(문자 정보)를 취득한다(S832). 이어서, 제어부(121)는, S832에서 취득한 문자 정보의 말미가 「e」인지 여부를 판정한다(S833). S833에서, S832에서 취득한 문자 정보의 말미가 「e」라고 판단된 경우(S833: YES)에는, 제어부(121)는, S832에서 취득된 문자 정보의 말미의 「e」를 「ing」으로 변경한다(S834). S834의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S833에서, S832에서 취득한 문자 정보의 말미가 「e」가 아니라고 판단된 경우(S833: NO)에는, 제어부(121)는, S832에서 취득된 문자 정보의 말미에 「ing」을 추가한다(S835). S835의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
도 26은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. S819의 판정에서 식별 기호 [c7]인 경우(S819: YES)에는, 제어부(121)는, 신장 사전 D2b로부터 S801에서 판독한 압축 데이터에 대응하는 신장 코드(문자 정보)를 취득한다(S836). 이어서, 제어부(121)는, S836에서 취득한 문자 정보의 말미가 「e」인지 여부를 판정한다(S837). S837에서, S836에서 취득한 문자 정보의 말미가 「e」라고 판단된 경우(S837: YES)에는, 제어부(121)는, S836에서 취득된 문자 정보에 「r」을 추가한다(S838). S838의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S837에서, S836에서 취득한 문자 정보의 말미가 「e」가 아니라고 판단된 경우(S837: NO)에는, 제어부(121)는, S836에서 취득된 문자 정보의 말미가, 자음에 「y」가 후속되는 단어 형태인지 여부를 판정한다(S839). S839에서, 자음에 「y」가 후속되는 단어 형태라고 판정된 경우(S839: YES)에는, 제어부(121)는, S836에서 취득된 문자 정보의 말미의 「y」를 「ier」로 변경한다(S840). S840의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S839에서, 자음에 「y」가 후속되는 단어 형태가 아니라고 판정된 경우(S839: NO)에는, 제어부(121)는, S836에서 취득된 문자 정보의 말미에 「er」를 추가한다(S841). S841의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
도 27은 신장 데이터 생성 처리의 처리 프로세스의 예를 도시한다. 도 22의 S819의 판정에서 식별 기호 [c7]이 아닌 경우(S819: NO)에는, 제어부(121)는, 신장 사전 D2b로부터 S801에서 판독한 압축 데이터에 대응하는 신장 코드(문자 정보)를 취득한다(S842). 이어서, 제어부(121)는, S842에서 취득한 문자 정보의 말미가 「e」인지 여부를 판정한다(S843). S843에서, S842에서 취득한 문자 정보의 말미가 「e」라고 판단된 경우(S843: YES)에는, 제어부(121)는, S842에서 취득된 문자 정보에 「st」를 추가한다(S844). S844의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S843에서, S842에서 취득한 문자 정보의 말미가 「e」가 아니라고 판단된 경우(S843: NO)에는, 제어부(121)는, S842에서 취득된 문자 정보의 말미가, 자음에 「y」가 후속되는 단어 형태인지 여부를 판정한다(S845). S845에서, 자음에 「y」가 후속되는 단어 형태라고 판정된 경우(S845: YES)에는, 제어부(121)는, S842에서 취득된 문자 정보의 말미의 「y」를 「iest」로 변경한다(S846). S846의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
S845에서, 자음에 「y」가 후속되는 단어 형태가 아니라고 판정된 경우(S845: NO)에는, 제어부(121)는, S842에서 취득된 문자 정보의 말미에 「est」를 추가한다(S847). S847의 처리가 이루어지면, 그것에 이어서 S807의 처리가 행해진다.
[본 실시형태의 실현 수단]
이하에, 전술한 압축 처리나 신장 처리를 실시하는 구성에 관해서 설명한다.
도 28은 컴퓨터(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)가 판독하는 프로그램에 관해서는 도 29를 이용하여 설명한다.
도 29는 컴퓨터(1)에서 동작하는 프로그램 구성의 예를 도시한다. 애플리케이션 프로그램(24) 또는 미들웨어(23)는, 본 실시형태의 압축 기능 또는 신장 기능의 처리 프로세스가 정해진 프로그램이다. 혹은, 애플리케이션 프로그램(24) 또는 미들웨어(23)는, 본 실시형태의 압축 사전 생성 또는 신장 사전 생성의 처리 프로세스가 정해진 프로그램이다.
압축 기능의 처리 프로세스가 정해진 압축 프로그램과, 신장 기능의 처리 프로세스가 정해진 신장 프로그램이 일체의 프로그램이라도 좋고, 별개로 된 프로그램이라도 좋다. 또한, 압축 사전 생성의 프로세스가 정해진 압축 사전 생성 프로그램은, 압축 프로그램에 포함되어도 좋고, 압축 프로그램에 의해 호출되는 별개로 된 프로그램이라도 좋다. 또한, 신장 사전 생성의 프로세스가 정해진 신장 사전 생성 프로그램은, 신장 프로그램에 포함되어도 좋고, 신장 프로그램에 의해 판독되는 별개로 된 프로그램이라도 좋다. 혹은 OS(오퍼레이팅 시스템)(22)의 하나의 기능으로서, 본 실시형태의 압축 기능 및 신장 기능의 적어도 한쪽이 제공되더라도 좋다.
예컨대, 전술한 압축 기능 및 신장 기능의 적어도 하나, 압축 프로그램, 신장프로그램, 압축 사전 생성 프로그램 및 신장 사전 생성 프로그램의 적어도 하나는 기억 매체에 기억된다. 예컨대, 그 기억 매체가 드라이브 장치(304)에 의해 판독되고, 인스톨됨으로써 기억 매체에 기억된 프로그램이 실행 가능한 상태가 된다. 인스톨된 프로그램에 정해진 처리 프로세스의 각각은, OS22에 기초하여 하드웨어군(21)(301~312)이 제어됨으로써 실행된다.
도 3에 도시하는 컴퓨터(1)에 포함되는 각 기능 블록의 기능은, 프로세서(301)가, 압축 프로그램 또는 신장 프로그램을 실행함으로써 제공된다. 압축 프로그램의 각 처리 프로세스가 프로세서(301)에 실행됨으로써 압축부(11) 및 생성부(13) 내에 포함되는 각 기능 블록의 기능이 제공된다. 또한, 신장 프로그램의 처리 프로세스가 프로세서(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)에의 액세스에 기초한 연산 처리를 함으로써 제공된다.
도 30은 컴퓨터(1)를 이용한 시스템 구성의 예를 도시한다. 도 30에 예시하는 정보 처리 시스템은, 기지국(2), 네트워크(3), 컴퓨터(1a) 및 컴퓨터(1b)를 포함한다. 컴퓨터(1a)는, 무선 또는 유선의 적어도 한쪽에 의해, 컴퓨터(1b)와 접속된 네트워크(3)에 접속하고 있다. 도 3에 도시하는 압축부(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)에 송신되어도 좋다.
본 실시형태의 압축 기능이나 신장 기능에 따르면 압축율의 증대가 억제되기 때문에, 통신되는 압축 데이터의 양이 삭감된다. 이에 따라 통신 처리에 대한 도 30에 예시되는 시스템의 하드웨어 리소스의 사용이 억제된다.
도 31은 컴퓨터(1)를 이용한 시스템 구성의 예를 도시한다. 도 31에 예시하는 정보 처리 시스템은, 컴퓨터(1), 네트워크(3), 클라이언트 장치(6), 스토리지 에리어 네트워크(SAN)(4) 및 스토리지 장치(5)를 포함한다. 예컨대, 컴퓨터(1)는, 클라이언트 장치(6)로부터의 요구에 따른 정보 처리를 실행한다. 정보 처리 대상의 데이터는, 예컨대 스토리지 장치(5)에 압축되어 기억되어 있다. 컴퓨터(1)는, 클라이언트 장치(6)로부터 요구를 받은 경우에, 압축되어 스토리지 장치(5)에 기억된 정보 처리 대상의 데이터를 취득하여 신장한다. 컴퓨터(1)는, 신장한 데이터에 대하여 클라이언트 장치(6)로부터 요구된 정보 처리를 실행하고, 또한, 정보 처리 후의 데이터를 압축하여, 스토리지 장치(5)에 저장한다. 정보 처리는, 예컨대, 스토리지 장치(5)에 기억된 데이터의 갱신 처리나, 스토리지 장치(5)에 기억된 데이터의 분석·해석 처리 등이다.
도 31에 예시되는 시스템에서, 압축 처리나 신장 처리를 할 때마다 압축 사전이나 신장 사전을 생성하지 않더라도, 한 번 작성한 압축 사전이나 신장 사전을 유지해 두고서, 그 압축 사전이나 신장 사전에 기초하여 압축 처리 또는 신장 사전이 실행되어도 좋다. 그 경우, 도 4의 S103의 처리나 도 11의 S503의 처리는, 단순히 유지되어 있는 압축 사전이나 신장 사전을 로드할 뿐이라도 좋다.
도 31에 예시하는 시스템에서는, 정보 처리의 요구를 받을 때마다 데이터의 신장이 이루어진다. 신장 처리에 시간이 걸리면 요구에 대한 응답까지의 시간도 증대되어 버린다. 본 실시형태의 압축 기능에 의해 압축율이 저하하기 어렵기 때문에, 압축 데이터를 스토리지 장치(5)로부터 판독하는 I/O 횟수의 증대가 억제된다. 또한, 압축 부호의 수가 극단적으로 증대되지 않기 때문에 신장 처리에 걸리는 메모리 액세스의 횟수가 억제된다. 또한, 압축 파일 F2의 로드에 확보되는 기억 영역도 적게 억제된다.
[압축 부호의 종류]
영일사전 등에서 대학 교양 과정 정도까지 필요하다고 분류되는 단어의 수는 약 4000어가 된다. 이 4000어는, 문서 데이터에서 사용 빈도가 비교적 높은 기초 단어이다. 그 중, 명사가 2000어 정도이고, 형용사가 700어 정도, 동사가 800어 정도이다. 예컨대, 형용사의 활용 형태 각각에 대하여 압축 부호를 할당하면, 형용사에 관해서 압축 부호가 2100 종류 정도 할당되게 된다. 또한, 예컨대, 동사의 활용 형태 각각에 대하여 압축 부호를 할당하면, 동사에 관해서 압축 부호가 3200~4000 종류 정도 할당되게 된다(과거형과 과거분사가 동일한 표기인 동사가 존재하기 때문에, 각 동사에 관해서 4~5 종류의 활용 형태가 존재하기 때문).
본 실시형태에서 기재한 압축 사전이나 신장 사전의 구조가 아니라, 일반적인 허프만 부호화 알고리즘으로 생성되는 압축 사전이나 신장 사전이 본 실시형태에서 이용되어도 좋다. 허프만 부호화에 있어서, 신장 사전은, 압축 부호의 할당 대상의 문자 정보끼리의 출현 빈도의 비교에 의해 비트가 할당된다. 여기서, 출현 빈도가 비교된 문자 정보의 조에 대응하는 절(節)의 데이터가 생성된다. 또한, 생성된 절끼리 출현 빈도의 비교가 이루어져, 순차 비트가 생성된다. 전술한 프로세스가 반복되어 나무 구조의 데이터(허프만 트리)가 형성된다. 압축 부호의 할당 대상의 문자 정보(엽(葉)의 데이터)가 2의 12승 존재하면, 이들의 비교에 의해 2의 11승의 절의 데이터가 생성된다. 절끼리의 빈도 정보의 비교에 의해, 순차 절의 데이터가 생성되면, 엽의 데이터와 절의 데이터를 합쳐서 2의 13승 존재하게 된다. 절의 데이터에는, 각각 상위의 절의 데이터에의 포인터와, 하위의 포인터(비트가 1인 경우와 비트가 0인 경우 양쪽)가 포함된다. 각각의 포인터가 2 바이트라고 하면, 포인터에 의해 3×2의 14승의 허프만 트리의 데이터 구조 내의 위치가 특정된다.
그러나, 활용 형태에 대하여 압축 부호를 할당하는 것으로 하면, 4000어의 기초 단어가 8000어 정도로 되어 버린다. 그러면, 압축 부호의 할당 대상의 문자 정보가 2의 13승 존재하게 되어, 결과적으로 허프만 트리의 데이터 구조 내의 위치가 2 바이트로 특정할 수 없게 되어 버린다. 그러면, 아키텍쳐에 따라 다르지만, 예컨대, 포인터에 4 바이트 사용하게 되어 버려, 허프만 트리의 데이터 사이즈가 압축 부호의 할당 대상이 배가 됨에 따라 배로 늘어나고, 포인터의 데이터 사이즈의 상태에 따라 더욱 배로 늘어나 버린다.
[변형예의 설명]
이하, 전술한 실시형태에서의 변형예의 일부를 설명한다. 도 7에 도시하는 변환 테이블 T1에 있어서, 동의어나 유의어가 설정되어도 좋다. 예컨대, 문자 정보 「center」, 「centre」 및 「middle」이 공통 문자 정보 「center」에 대응시켜진다. 또한, 예컨대, 변환 테이블 T1에 있어서, 문자 정보 「center」는, 공통 문자 정보 「center」 및 식별 기호 [c1]의 조합과 대응시켜진다. 또한, 예컨대, 변환 테이블 T1에 있어서, 문자 정보 「centre」는, 공통 문자 정보 「center」 및 식별 기호 [c2]의 조합과 대응시켜진다. 또한, 예컨대, 변환 테이블 T1에 있어서, 문자 정보 「middle」은, 공통 문자 정보 「center」 및 식별 기호 [c3]의 조합과 대응시켜진다. 이와 같이 동의어 또는 유의어가 설정된 변환 테이블 T1을 전술한 실시형태에 적용함으로써, 동의어나 유의어 등의 표기 변형에 의한 압축율 저하를 억제할 수 있다.
도 7에 도시하는 변환 테이블 T1에 있어서, 첫 글자가 대문자인 단어와 첫 글자가 소문자인 단어 양쪽이 설정되어도 좋다. 예컨대, 변환 테이블 T1은, 문자 정보 「this」 및 「This」를 공통 문자 정보 「this」와 각각 대응시킨다. 문자 정보 「this」는, 공통 문자 정보 「this」 및 식별 기호 [c1]의 조합과 대응시켜진다. 문자 정보 「This」는, 공통 문자 정보 「this」 및 식별 기호 [c2]의 조합과 대응시켜진다. 이와 같이 단어의 첫 글자가 대문자인 경우와 소문자인 경우의 양쪽이 설정된 변환 테이블 T1을 전술한 실시형태에 적용함으로써, 문두의 단어의 표기 변형에 의한 압축율 저하를 억제할 수 있다.
또한, 압축 처리의 대상은, 파일 이외에도, 시스템으로부터 출력되는 감시 메시지 등이라도 좋다. 예컨대, 버퍼에 순차 저장되는 감시 메시지를 전술한 압축 처리에 의해 압축하여, 로그 파일로서 저장하는 등의 처리가 이루어진다. 또한, 예컨대, 데이터베이스 내의 페이지 단위로 압축이 이루어지더라도 좋고, 복수의 페이지를 통합한 단위로 압축이 이루어지더라도 좋다. 또한, 압축 사전은 복수의 감시메시지에 대하여 공통의 압축 사전이 이용되어도 좋고, 복수의 페이지에 대하여 공통의 압축 사전이 이용되어도 좋다.
1: 컴퓨터, 1a: 컴퓨터, 1b: 컴퓨터, 2: 기지국, 3: 네트워크, 4: 스토리지 에리어 네트워크, 5: 스토리지 장치, 6: 클라이언트 장치, 11: 압축부, 12: 신장부, 13: 생성부, 14: 생성부, 15: 기억부

Claims (21)

  1. 서로 다른 복수의 문자 정보에 대하여 할당된 제1 압축 부호가, 상기 복수의 문자 정보의 각각에 관련지어진 사전 정보를 기억하는 기억부와,
    상기 복수의 문자 정보 중 제1 문자 정보를 취득한 경우에, 상기 제1 문자 정보와 관련지어진 상기 제1 압축 부호를 상기 사전 정보로부터 취득하는 취득부와,
    취득된 상기 제1 압축 부호를, 압축 데이터를 저장하는 저장 영역에 기록하는 기록부를 포함하는 것을 특징으로 하는 압축 장치.
  2. 제1항에 있어서, 상기 복수의 문자 정보는, 상기 복수의 문자 정보의 각각에 의해 나타내어지는 의미 또는 문법상의 기능의 적어도 일부가 서로 공통되고,
    상기 제1 압축 부호는, 상기 복수의 문자 정보의 출현 빈도의 합계에 따라서 생성되는 것을 특징으로 하는 압축 장치.
  3. 제1항 또는 제2항에 있어서, 상기 사전 정보는, 상기 제1 문자 정보에, 추가로, 상기 복수의 문자 정보에 포함되는 상기 제1 문자 정보 이외의 문자 정보와 상기 제1 문자 정보를 식별하는 제1 식별 정보를 관련짓고,
    상기 취득부는, 상기 제1 압축 부호를 취득하고, 상기 제1 식별 정보를 취득하며,
    상기 기록부는, 상기 제1 압축 부호 및 상기 제1 식별 정보를 상기 저장 영역에 기록하는 것을 특징으로 하는 압축 장치.
  4. 제3항에 있어서, 상기 제1 식별 정보는, 상기 제1 문자 정보의 출현 빈도에 따라서 생성된 압축 부호이며,
    상기 제1 식별 정보에 이어서 상기 제1 압축 부호가 상기 저장 영역에 기록되는 것을 특징으로 하는 압축 장치.
  5. 제3항에 있어서, 상기 제1 식별 정보는, 고정 길이의 압축 부호이며, 상기 제1 압축 부호에 이어서 상기 저장 영역에 기록되는 것을 특징으로 하는 압축 장치.
  6. 컴퓨터에,
    서로 다른 복수의 문자 정보에 대하여 할당된 제1 압축 부호가 상기 복수의 문자 정보의 각각에 관련지어진 사전 정보를, 상기 복수의 문자 정보 중 제1 문자 정보를 취득한 경우에 참조하여, 상기 사전 정보에 의해 상기 제1 문자 정보와 관련지어진 상기 제1 압축 부호를 취득하고,
    취득된 상기 제1 압축 부호를, 압축 데이터를 저장하는 저장 영역에 기록하는 것을 실행하게 하는 것을 특징으로 하는 압축 방법.
  7. 컴퓨터에,
    서로 다른 복수의 문자 정보에 대하여 할당된 제1 압축 부호가 상기 복수의 문자 정보의 각각에 관련지어진 사전 정보를, 상기 복수의 문자 정보 중 제1 문자 정보를 취득한 경우에 참조하여, 상기 사전 정보에 의해 상기 제1 문자 정보와 관련지어진 상기 제1 압축 부호를 취득하고,
    취득된 상기 제1 압축 부호를, 압축 데이터를 저장하는 저장 영역에 기록하는 처리를 실행하게 하는 것을 특징으로 하는 압축 프로그램.
  8. 서로 다른 복수의 문자 정보에 대하여 공통적으로 할당된 제1 압축 부호와, 상기 복수의 문자 정보에 대응하는 제1 문자 정보를 관련지은 사전 정보를 기억하는 기억부와,
    상기 제1 압축 부호를 압축 데이터로부터 취득한 경우에, 상기 사전 정보에 있어서 상기 제1 압축 부호에 관련지어진 상기 제1 문자 정보를 상기 사전 정보로부터 취득하는 취득부와,
    취득된 상기 제1 문자 정보를 상기 압축 데이터의 신장 결과를 저장하는 저장 영역에 기록하는 기록부를 포함하는 것을 특징으로 하는 신장 장치.
  9. 제8항에 있어서, 상기 사전 정보는, 상기 제1 문자 정보와, 상기 복수의 문자 정보에 포함되는 제2 문자 정보를 상기 복수의 문자 정보에 포함되는 상기 제2 문자 정보 이외의 문자 정보와 식별하는 식별 정보와의 조합의 저장처를 나타내는 저장처 정보를, 상기 제1 압축 부호에 관련지음으로써, 상기 제1 압축 부호와 상기 제1 문자 정보를 관련짓는 것을 특징으로 하는 신장 장치.
  10. 제9항에 있어서, 상기 제1 압축 부호는, 상기 복수의 문자 정보의 출현 빈도의 합계에 따라서 생성되고,
    상기 사전 정보는, 상기 제1 압축 부호에, 추가로, 상기 제1 압축 부호가 상기 복수의 문자 정보의 출현 빈도의 합계에 기초하여 생성되었다는 취지를 나타내는 플래그 정보를 대응시키고,
    상기 취득부는, 상기 사전 정보에 있어서 상기 제1 압축 부호에 상기 플래그정보가 대응시켜져 있는 경우에, 상기 저장처 정보에 기초한 상기 저장처에의 액세스에 의해 상기 제1 문자 정보를 취득하는 것을 특징으로 하는 신장 장치.
  11. 컴퓨터에,
    서로 다른 복수의 문자 정보에 대하여 공통으로 할당된 제1 압축 부호와, 상기 복수의 문자 정보에 대응하는 제1 문자 정보를 관련지은 사전 정보를 생성하고,
    상기 제1 압축 부호를 압축 데이터로부터 취득한 경우에, 상기 사전 정보에 있어서 상기 제1 압축 부호에 관련지어진 상기 제1 문자 정보를 상기 사전 정보로부터 취득하고,
    취득된 상기 제1 문자 정보를 상기 압축 데이터의 신장 결과를 저장하는 저장 영역에 기록하는 것을 실행하게 하는 것을 특징으로 하는 신장 방법.
  12. 컴퓨터에,
    복수의 문자 정보에 대하여 공통으로 할당된 제1 압축 부호와, 상기 복수의 문자 정보에 대응하는 제1 문자 정보를 관련지은 사전 정보를 생성하고,
    상기 제1 압축 부호를 압축 데이터로부터 취득한 경우에, 상기 사전 정보에 있어서 상기 제1 압축 부호에 관련지어진 상기 제1 문자 정보를 상기 사전 정보로부터 취득하고,
    취득된 상기 제1 문자 정보를 상기 압축 데이터의 신장 결과를 저장하는 저장 영역에 기록하는 처리를 실행하게 하는 것을 특징으로 하는 신장 프로그램.
  13. 압축 데이터가 기억된 기억 장치와,
    상기 압축 데이터에 대한 처리 요구에 따른 처리를 실행하는 처리 장치를 포함하는 정보 처리 시스템으로서,
    상기 처리 장치는,
    서로 다른 복수의 문자 정보에 대하여 할당된 제1 압축 부호를 상기 복수의 문자 정보의 각각에 관련지은 사전 정보를 기억하는 기억부와,
    상기 처리 요구에 따라서, 상기 기억 장치로부터 상기 압축 데이터를 판독하는 판독부와,
    상기 제1 압축 부호를 상기 압축 데이터로부터 취득한 경우에, 상기 사전 정보에 있어서 상기 제1 압축 부호에 관련지어진 제1 문자 정보를 상기 사전 정보로부터 취득하는 제1 취득부와,
    취득된 상기 제1 문자 정보를 상기 압축 데이터의 신장 결과를 저장하는 제1 저장 영역에 기록하는 제1 기록부와,
    상기 제1 저장 영역에 저장된 신장 결과에 대하여 상기 처리 요구에 따른 처리를 실행하는 처리부와,
    상기 처리 요구에 따라 처리된 데이터로부터 상기 제1 문자 정보를 취득한 경우에, 상기 사전 정보에 의해 상기 제1 문자 정보와 관련지어진 상기 제1 압축 부호를 취득하는 제2 취득부와,
    취득된 상기 제1 압축 부호를 제2 저장 영역에 기록하는 제2 기록부와,
    상기 제2 영역에 기록된 데이터를 상기 기억 장치에 저장하는 저장부를 포함하는 것을 특징으로 하는 정보 처리 시스템.
  14. 서로 다른 복수의 문자 정보에 대응하는 1 종류의 공통 문자 정보에 대하여 압축 부호의 할당 처리를 행하는 할당부와,
    상기 복수의 문자 정보의 각각에, 상기 공통 문자 정보에 할당된 제1 압축 부호를 관련지은 사전 정보를 생성하는 생성부를 포함하는 것을 특징으로 하는 사전 생성 장치.
  15. 제14항에 있어서, 상기 복수의 문자 정보는, 상기 복수의 문자 정보의 각각에 의해서 나타내어지는 의미 또는 문법상의 기능의 적어도 일부가 서로 공통되고,
    상기 압축 부호는, 상기 복수의 문자 정보의 출현 빈도의 합계에 따라서 생성되는 것을 특징으로 하는 사전 생성 장치.
  16. 제14항 또는 제15항에 있어서, 상기 사전 정보는, 상기 복수의 문자 정보 중 제1 문자 정보에, 상기 복수의 문자 정보에 포함되는 상기 제1 문자 정보 이외의 문자 정보와 상기 제1 문자 정보를 식별하는 제1 식별 정보를 추가로 관련짓는 것을 특징으로 하는 사전 생성 장치.
  17. 컴퓨터에,
    서로 다른 복수의 문자 정보에 대응하는 1 종류의 공통 문자 정보에 대하여 압축 부호의 할당 처리를 행하고,
    상기 복수의 문자 정보의 각각에, 상기 공통 문자 정보에 할당된 제1 압축 부호를 관련지은 사전 정보를 생성하는 것을 실행하게 하는 것을 사전 생성 방법.
  18. 컴퓨터에,
    서로 다른 복수의 문자 정보에 대응하는 1 종류의 공통 문자 정보에 대하여 압축 부호의 할당 처리를 행하고,
    상기 복수의 문자 정보의 각각에, 상기 공통 문자 정보에 할당된 제1 압축 부호를 관련지은 사전 정보를 생성하는 처리를 실행하게 하는 것을 특징으로 하는 사전 생성 프로그램.
  19. 서로 다른 복수의 문자 정보에 대하여 공통적으로 할당된 제1 압축 부호와, 상기 복수의 문자 정보에 대응하는 제1 문자 정보를 관련짓는 사전 정보를 생성하는 생성부를 포함하는 것을 특징으로 하는 사전 생성 장치.
  20. 컴퓨터에,
    서로 다른 복수의 문자 정보에 대하여 공통적으로 할당된 제1 압축 부호와, 상기 복수의 문자 정보에 대응하는 제1 문자 정보를 관련짓는 사전 정보를 생성하는 것을 실행하게 하는 것을 특징으로 하는 사전 생성 방법.
  21. 컴퓨터에,
    서로 다른 복수의 문자 정보에 대하여 공통적으로 할당된 제1 압축 부호와, 상기 복수의 문자 정보에 대응하는 제1 문자 정보를 관련짓는 사전 정보를 생성하는 처리를 실행하게 하는 것을 특징으로 하는 사전 생성 프로그램.
KR1020157025619A 2013-03-22 2013-03-22 압축 장치, 압축 방법, 사전 생성 장치, 사전 생성 방법, 신장 장치, 신장 방법, 신장 프로그램 및 정보 처리 시스템 KR20150119403A (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/001977 WO2014147672A1 (ja) 2013-03-22 2013-03-22 圧縮装置、圧縮方法、辞書生成装置、辞書生成方法、伸長装置、伸長方法、伸長プログラムおよび情報処理システム

Publications (1)

Publication Number Publication Date
KR20150119403A true KR20150119403A (ko) 2015-10-23

Family

ID=51579414

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157025619A KR20150119403A (ko) 2013-03-22 2013-03-22 압축 장치, 압축 방법, 사전 생성 장치, 사전 생성 방법, 신장 장치, 신장 방법, 신장 프로그램 및 정보 처리 시스템

Country Status (7)

Country Link
US (1) US20160006456A1 (ko)
EP (1) EP2978134A4 (ko)
JP (1) JPWO2014147672A1 (ko)
KR (1) KR20150119403A (ko)
CN (1) CN105052041A (ko)
AU (1) AU2013382911A1 (ko)
WO (1) WO2014147672A1 (ko)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6107513B2 (ja) * 2013-07-29 2017-04-05 富士通株式会社 情報処理システム、情報処理方法、および情報処理プログラム
CN105530011A (zh) * 2014-09-30 2016-04-27 华东师范大学 一种基于三角形统计的图数据压缩方法和查询方法
JP6686639B2 (ja) * 2016-03-31 2020-04-22 富士通株式会社 符号化プログラム、符号化装置、符号化方法、復号化プログラム、復号化装置および復号化方法
KR20180035642A (ko) 2016-09-29 2018-04-06 삼성전자주식회사 무선 셀룰라 통신 시스템에서 상향링크 제어신호 전송 방법 및 장치
JP6737117B2 (ja) 2016-10-07 2020-08-05 富士通株式会社 符号化データ検索プログラム、符号化データ検索方法および符号化データ検索装置
JP6784636B2 (ja) * 2017-04-13 2020-11-11 日立オートモティブシステムズ株式会社 制御装置、プログラム更新システム、プログラム更新方法
JP6931442B2 (ja) * 2017-05-16 2021-09-08 富士通株式会社 符号化プログラム、インデックス生成プログラム、検索プログラム、符号化装置、インデックス生成装置、検索装置、符号化方法、インデックス生成方法および検索方法
CN108268583B (zh) * 2017-08-21 2022-06-14 阿里巴巴(中国)有限公司 表情符号含义展示的方法及设备
GB2575435B (en) * 2018-06-29 2022-02-09 Imagination Tech Ltd Guaranteed data compression
GB2575434B (en) 2018-06-29 2020-07-22 Imagination Tech Ltd Guaranteed data compression
US11177824B2 (en) 2018-07-23 2021-11-16 International Business Machines Corporation Dictionary embedded expansion procedure
CN109412604A (zh) * 2018-12-05 2019-03-01 云孚科技(北京)有限公司 一种基于语言模型的数据压缩方法
US11301474B2 (en) * 2019-05-03 2022-04-12 Microsoft Technology Licensing, Llc Parallelized parsing of data in cloud storage
JP7173351B2 (ja) * 2019-08-01 2022-11-16 富士通株式会社 制御方法、制御プログラムおよび情報処理装置
US11122095B2 (en) * 2019-09-23 2021-09-14 Netapp, Inc. Methods for dictionary-based compression and devices thereof
EP4087139A4 (en) * 2019-12-31 2023-01-18 MGI Tech Co., Ltd. METHOD AND DEVICE FOR CREATING A GENE MUTATION DICTIONARY AND USING THE DICTIONARY TO COMPRESS GENOMIC DATA
CN113138968A (zh) * 2020-01-20 2021-07-20 普天信息技术有限公司 日志压缩方法及日志解压缩方法
US11321292B2 (en) * 2020-08-31 2022-05-03 Chicago Mercantile Exchange Inc. Accumulation-based data object processing
CN112437060B (zh) * 2020-11-11 2022-11-18 平安普惠企业管理有限公司 一种数据传输方法、装置、计算机设备及存储介质
CN117171399B (zh) * 2023-11-02 2024-02-20 云图数据科技(郑州)有限公司 基于云平台的新能源数据优化存储方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4747053A (en) * 1985-05-20 1988-05-24 Brother Kogyo Kabushiki Kaisha Electronic dictionary
JP3241788B2 (ja) 1992-02-28 2001-12-25 富士通株式会社 データ圧縮方式
US5590317A (en) * 1992-05-27 1996-12-31 Hitachi, Ltd. Document information compression and retrieval system and document information registration and retrieval method
JPH05324730A (ja) * 1992-05-27 1993-12-07 Hitachi Ltd 文書情報検索装置
JPH07160684A (ja) * 1993-12-03 1995-06-23 Matsushita Electric Ind Co Ltd 文書圧縮装置および文書圧縮方法
JP2005242416A (ja) * 2004-02-24 2005-09-08 Shogakukan Inc 自然言語文の検索方法および検索装置
EP1821414B1 (en) * 2004-12-07 2016-06-22 Nippon Telegraph And Telephone Corporation Information compression-coding device, method thereof, program thereof and recording medium storing the program
JP4456554B2 (ja) * 2005-10-31 2010-04-28 富士通株式会社 データ圧縮方法及び圧縮データ送信方法
US8635194B2 (en) * 2006-10-19 2014-01-21 Oracle International Corporation System and method for data compression
CN101350624B (zh) * 2008-09-11 2011-05-04 中国科学院计算技术研究所 一种支持ansi编码的中文文本的压缩方法
JP5062131B2 (ja) 2008-10-06 2012-10-31 富士通株式会社 情報処理プログラム、情報処理装置、および情報処理方法
CN101499094B (zh) * 2009-03-10 2010-09-29 焦点科技股份有限公司 一种数据压缩存储并检索的方法及***

Also Published As

Publication number Publication date
WO2014147672A1 (ja) 2014-09-25
US20160006456A1 (en) 2016-01-07
EP2978134A4 (en) 2016-06-15
EP2978134A1 (en) 2016-01-27
AU2013382911A1 (en) 2015-10-15
CN105052041A (zh) 2015-11-11
JPWO2014147672A1 (ja) 2017-02-16

Similar Documents

Publication Publication Date Title
KR20150119403A (ko) 압축 장치, 압축 방법, 사전 생성 장치, 사전 생성 방법, 신장 장치, 신장 방법, 신장 프로그램 및 정보 처리 시스템
KR101750646B1 (ko) 압축 장치, 압축 방법, 신장 장치, 신장 방법 및 정보 처리 시스템
US8321485B2 (en) Device and method for constructing inverted indexes
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
US20200233887A1 (en) Semantic structure search device and semantic structure search method
JP2015026350A (ja) 情報処理システム、情報処理方法、および情報処理プログラム
EP3422205A1 (en) Database-archiving method and apparatus that generate index information, and method and apparatus for searching archived database comprising index information
JP6680126B2 (ja) 符号化プログラム、符号化装置、符号化方法、及び検索方法
KR101842420B1 (ko) 정보 처리 장치 및 데이터 관리 방법
JP6252489B2 (ja) 圧縮装置、圧縮方法、圧縮プログラム、伸張装置、伸張方法、伸張プログラム、および圧縮伸張システム
JPWO2014097359A1 (ja) 圧縮プログラム、圧縮装置、伸張プログラムおよび伸張装置
US9219497B2 (en) Compression device, compression method, and recording medium
CN113742332A (zh) 数据存储方法、装置、设备及存储介质
EP3385860A1 (en) Compression of text using multiple dynamic dictionaries
JP6032291B2 (ja) 圧縮プログラム、圧縮装置、伸張プログラム、伸張装置およびシステム
US10318483B2 (en) Control method and control device
JPWO2014030180A1 (ja) 符号化情報生成プログラム、符号化情報生成方法、符号化情報生成装置、復号化情報生成プログラム、復号化情報生成方法及び復号化情報生成装置
US10915559B2 (en) Data generation method, information processing device, and recording medium
JP5601116B2 (ja) Nグラム検索のための転置インデックスの生成方法および生成装置、当該転置インデックスを用いた検索方法および検索装置、ならびに、コンピュータプログラム
JP2012093943A (ja) テキスト分割装置、テキスト分割学習装置、テキスト分割方法、テキスト分割学習方法、プログラム
JP2018180890A (ja) インデックス生成プログラム、データ検索プログラム、インデックス生成装置、データ検索装置、インデックス生成方法、及びデータ検索方法
JPWO2014061305A1 (ja) エントリ挿入装置、方法、及びプログラム
JP4061283B2 (ja) 字句をデータに変換する装置、方法及びプログラム
KR20190045716A (ko) 연산 가속화가 적용된 신경망 모델의 생성 및 활용을 위한 장치 및 방법

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application