JP4345438B2 - 辞書データ圧縮装置、電子辞書装置及びプログラム - Google Patents

辞書データ圧縮装置、電子辞書装置及びプログラム Download PDF

Info

Publication number
JP4345438B2
JP4345438B2 JP2003369281A JP2003369281A JP4345438B2 JP 4345438 B2 JP4345438 B2 JP 4345438B2 JP 2003369281 A JP2003369281 A JP 2003369281A JP 2003369281 A JP2003369281 A JP 2003369281A JP 4345438 B2 JP4345438 B2 JP 4345438B2
Authority
JP
Japan
Prior art keywords
dictionary
data
character string
bit
encoding
Prior art date
Legal status (The legal status 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 status listed.)
Expired - Fee Related
Application number
JP2003369281A
Other languages
English (en)
Other versions
JP2005136622A (ja
Inventor
紳一 松井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
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 Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2003369281A priority Critical patent/JP4345438B2/ja
Publication of JP2005136622A publication Critical patent/JP2005136622A/ja
Application granted granted Critical
Publication of JP4345438B2 publication Critical patent/JP4345438B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Description

本発明は、辞書データを圧縮する辞書データ圧縮装置、圧縮された辞書データを伸張して利用する電子辞書装置及びプログラムに関する。
データの圧縮アルゴリズムには種々のものが知られているが、電子辞書装置等で利用される辞書データの圧縮は、一般文章データの圧縮と比較して、「見出語毎のランダムアクセス(復号・伸張)が必要」、「符号化(圧縮ともいう。)は製品開発時に1度行うのみであるため十分時間をかけても問題がない」という2点において大きく異なっている。
「見出語毎のランダムアクセス」とは、辞書データを見出語単位で復号・伸張することをいう。辞書データは紙の辞書と同等の内容を有している。符号化前の辞書データは、紙の辞書に印字されている文字を文字コードとしたものであって、一連のテキストのデータとなっているのが一般的である。すなわち、先頭の見出語から順番に、紙の辞書に印字されている文字(テキスト)が連続したテキストのデータである。この辞書データを全体として単純に圧縮すると、任意の見出語の情報(当該見出語に関する説明文)を復号することができない。このため、連続したテキストデータを見出語毎(見出語単位)で区切り、圧縮する必要がある。
「符号化は製品開発時に1度行うのみ」とは、文字通りメーカ側が十分な時間をかけて辞書データを符号化できることを意味する。すなわち、電子辞書装置では圧縮された辞書データを伸張するのみであり、圧縮(符号化)することはない。従って、高速な計算機によるあらゆる可能性を試した後に最も効率のよい圧縮方法を採用できるという利点がある。
この様な特徴の中で、例えば、特許文献1、特許文献2及び特許文献3のような辞書データの圧縮方法が提案されている。
例えば、辞書データ全体を1割程度の部分(以下適宜「参照部」という。)と残りの部分(以下適宜「主データ部」という。)とに区分する。そして、主データ部中の文字列が参照部中に含まれているか否かを判定し、含まれている場合には含まれている参照部中の位置及び長さに基づいて符号化することにより主データ部の圧縮を行う方法が知られている。
具体的には、主データ部中の符号化対象の文字列が、参照部中のどの位置の文字列に相当するのかを判定して符号化する。このような文字列が含まれる参照部を参照して符号化する方法は、辞書型符号化方法として知られているものである。辞書型符号化方法にはLZ77法やLZ78法等があるが、辞書データに辞書型符号化方法を適用する特徴としては、「見出語毎のランダムアクセス」を可能とするため、参照部を固定とすることが挙げられる。
また、参照部中に一致する文字列が存在しない場合には、その符号化対象の文字列をハフマン符号等で直接可変長で符号化することにより圧縮する。このように、符号化には、文字列が含まれる参照部の位置を参照して符号化する辞書型符号化方法と、直接ハフマン符号等の可変長符号により符号化する方法の2つを利用する。
特開平6−251070号公報 特開平8−314960号公報 特開平11−96186号広報
圧縮される対象は主データ部のみならず、参照部も圧縮の対象である。しかし、より効率の良い圧縮方法に基づいて参照部を圧縮すると、参照部に含まれる文字列単位の符号(コード)の始まりがバイトアライメントの位置になるとは限らない。
従って、圧縮した参照部を参照する辞書型符号化方法により主データ部を符号化する場合においては、参照する参照部中の文字列の始まりの位置を、バイト位置ではなく、辞書データの先頭からカウントしたビット位置で指定する方法が考えられる。ところが、ビット位置で指定する場合には、ビット位置を表す情報量(符号)が大きくなるため、符号化した主データ部の情報量が大きくなり、辞書データ全体としての圧縮効率が悪くなってしまう。
また、参照部において、文字列単位の符号の開始位置がバイトアライメントの位置になるように付加ビットを用いて参照部の圧縮を調整する方法が考えられる。しかし、この方法ではバイトアライメントの位置に揃えるために無駄な付加ビットを利用するため、参照部の圧縮効率が低下してしまう。
本発明は以上の課題に鑑みてなされたものであり、参照部を圧縮した為に、参照部に含まれる文字列単位の符号の始まりがバイトアライメントの位置とならない場合であっても、辞書型符号化方法を用いた、主データ部の圧縮・伸張を問題なく実現することである。
以上の課題を解決するため、請求項1に記載の本発明の辞書データ圧縮装置は、文字列のコードが見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段と、前記参照部を構成する文字列を可変長コードで圧縮し、可変長圧縮データとする圧縮手段と、この圧縮手段により圧縮された可変長圧縮データを記憶する圧縮データ記憶手段と、前記主データ部の符号化対象文字列が前記参照部に含まれている場合に、当該文字列が含まれている前記圧縮データ記憶手段に記憶された可変長圧縮データ中のバイト位置およびビット位置を検出する位置検出手段と、伸張位置を前記検出されたバイト位置で指定されるデータの先頭ビットからビット単位で順次ずらすことにより前記参照部の伸張を8回試行し、伸張可能な数を算出する算出手段と、この算出手段により算出された数が1個の場合に、前記位置検出手段により検出されたバイト位置を用いた前記参照部を参照元とする辞書型符号化方法により、前記主データ部中の前記符号化対象文字列を符号化する符号化手段と、前記算出手段により伸張可能な数が複数算出された場合に、前記位置検出手段により検出されたバイト位置及びビット位置を用いた前記辞書型符号化方法により、前記主データ部中の前記符号化対象文字列を符号化する複数伸張可能時符号化手段と、を備えることを特徴とする。
また、請求項2に記載の電子辞書装置は、参照部と主データ部とに区分され、文字列のコードが見出語単位で一連に記述されている辞書データであって、請求項1に記載された辞書データ圧縮装置により前記参照部が圧縮され、前記主データ部が符号化された辞書データを記憶する記憶手段と、前記辞書データに含まれている複数の見出語の中から見出語を選択する見出語選択手段と、この見出語選択手段により選択された見出語が前記主データ部に含まれている場合に、当該見出語に対応する見出語単位の文字列の符号に基づき、当該符号の参照元である前記圧縮された参照部中のバイト位置からビット単位で伸張位置をずらしていき、伸張可能な位置から伸張することで可変長圧縮データとされていた文字列を取得する取得手段と、前記選択された見出語に対応する見出語単位の文字列の符号が、バイト位置及びビット位置を参照元情報とする符号であった場合には、当該符号の参照元である前記参照部中のバイト位置から前記ビット位置分ずれた位置から前記圧縮された参照部を伸張する直接位置伸張手段と、を備えたことを特徴とする。
本発明によれば、主データ部が、参照部に含まれている文字列を参照する際に、参照部において圧縮された文字列の開始位置がバイト位置から始まっていない場合であっても、わざわざ先頭からのビット位置を指定しなくとも、伸張可能に辞書データを圧縮することが可能となる。
以下、図を参照して本発明を辞書データ圧縮装置の一種であるコンピュータ及び電子辞書に適用した場合の実施形態について図面を参照して詳細に説明する。但し、本発明が適用可能なものはこれに限定されるものではない。
〔第1実施形態〕
[1.全体構成]
図1は、本発明を適用したコンピュータ1及び電子辞書装置100の概観図である。コンピュータ1は、通常、電子辞書装置100の製造メーカ等に設置されており、辞書データの圧縮の用に供される。コンピュータ1で圧縮された辞書データは、EEPROM107に記憶されて、EEPROM107が実装された電子辞書装置100が製造される。そして、電子辞書装置100においては、圧縮された辞書データが伸張され、辞書データの内容(見出語や説明情報等)が表示される。
辞書データとは、見出語と、当該見出語を説明するための説明情報とからなるデータであり、例えば国語辞典や英和辞典、和英辞典、英英辞典、カタカナ語辞典などの電子辞書データがある。但し、簡明のために、本実施形態においては、コンピュータ1により圧縮され、電子辞書装置100に記憶される辞書データは、英和辞典の辞書データのみとして説明する。また、圧縮(符号化)前の辞書データを圧縮後の辞書データと区別するために、以下では、圧縮前の辞書データを「元辞書データ」という。また、圧縮後の辞書データを「圧縮後辞書データ」という。
図1に示すように、コンピュータ1は、CRT(Cathode Ray Tube)等のディスプレイ3と、キーボード5と、RAMやハードディスク等のメモリ7とを備えた汎用のサーバ・コンピュータ等のハードウェアで構成される。電子辞書装置100は、LCD(Liquid Crystal Display)等のディスプレイ103と、文字入力キーや辞書種別の選択キー等の各種キー群105と、EEPROM107とを備えて構成される。
電子辞書装置100の基本的な機能は、次の通りである。すなわち、ユーザによって辞書が選択され、検索語となる文字が入力される(以下、入力された文字を「入力文字」という。)と、電子辞書装置100は、入力文字に適合する見出語を辞書データの中から検索し、見出語候補として一覧表示する。そして、検索した見出語に対応する説明情報を表示する。
[1.2 辞書データ圧縮装置]
[1.2.1 構成]
まず、辞書データをコンピュータ1において圧縮する場合の処理について説明する。図2は、コンピュータ1を示すブロック図である。同図に示すように、コンピュータ1は、CPU(Central Processing Unit)10と、ハードディスク20と、RAM(Random Access Memory)30と、ROM(Read Only Memory)40と、入力部50と、表示部60とを備えている。
ハードディスク20は、オペレーティングシステム、必要なプログラム又はデータファイル等を格納する。また、ハードディスク20には、元英和辞典データ202と、ハフマン符号テーブル204と、辞書圧縮プログラム210と、第1破綻符号化プログラム212とが記憶されている。ここで、辞書データは、所定の割合で分割(区分)されており、辞書データ全体の1割の部分と残り9割の部分とに分割されている。また、辞書データ全体の1割の部分を参照部、残りの9割の部分を主データ部という。なお、参照部の割合は辞書データ全体の1割に限定される訳ではなく、例えば、5%でも良いし、2割でも良い。
元英和辞典データ202は、「英和辞典」のコンテンツの圧縮前のデータが入っている辞書データである。図3(a)に元英和辞典データ202の概要を図示した。図3(a)において、「○○○○」で示した部分は見出語を表し、「・・・・・」で示した部分は当該見出語の説明文(見出語を説明する文章を構成する文字)を表している。図3(a)に示すように、元英和辞典データ202は、紙の辞書に印字されている文字を文字コードとした一連のテキストのデータとなっている。
また、図3(b)は、説明の便宜上、元英和辞典データ202を見出語単位に区切って図式化した概念図である。図3(b)によれば、例えば、見出語「applet」及び「applet」の説明情報(以下、1つの見出語とその見出語の説明情報とを合わせて「見出語単位データ」という。)は、元英和辞典データ202の先頭を「1」バイト目とした「100」バイト目から記述されている。見出語「ASCII」の見出語単位データは、元英和辞典データ202の「1750」バイト目から記述されている。また、図3(b)に示したように、元英和辞典データ202は、ここでは、データ全体の1割の部分を参照部、残る9割の部分を主データ部として区分されている。以下、元英和辞典データ202の参照部を元英和参照部202a、主データ部を元英和主データ部202bという。
ハフマン符号テーブル204は、文字列と、文字列をハフマン符号化した場合のハフマン符号とを初期値として記憶しているテーブルである。元英和参照部202aに含まれている文字列について、最小の情報量となるようにそれぞれの文字列に対し、一意に符号を割り当てている。
図4(a)はハフマン符号テーブル204のデータ構成の一例を示した図である。ハフマン符号テーブル204は、文字列(例えば、「[名詞]」)と、ハフマン符号(例えば、「101100…」)とを対応づけて保存している。
RAM30は、CPU10が実行する各種プログラムや、これらのプログラムの実行にかかるデータ等を一時的に保持するメモリ領域を備える。本実施形態では、圧縮後英和辞典データ300と、見出語テーブル306とを備えている。なお、RAM30は、図1におけるメモリ7に相当する。
圧縮後英和辞典データ300は、CPU10が、辞書圧縮プログラム210に基づいて辞書圧縮処理を実行することにより、元英和辞典データ202を圧縮した辞書データである。詳細は後述するが、元英和参照部202aが符号化されることにより圧縮され、圧縮後英和参照部302となり、元英和主データ部202bが符号化されることにより圧縮され、圧縮後英和主データ部304となる。
見出語テーブル306は、圧縮後英和辞典データ300に含まれている各見出語の圧縮後英和辞典データ300の開始位置(開始バイト)を記録したテーブルである。CPU10は、見出語テーブル306を参照することにより、見出語単位データを読み出す。
図4(b)は、見出語テーブル306のデータ構造の一例を示した図である。見出語テーブル306は、圧縮後英和辞典データ300に含まれている符号化後の見出語単位データの開始バイト位置(例えば、「49」)を順番に記憶している。
ROM40は、各種初期設定、ハードウェアの検査、あるいは必要なプログラムのロードを行う為の初期プログラム(例えば、BIOS(Basic Input/Output System)等)を格納する。CPU10は、コンピュータ1の電源投入時においてこの初期プログラムを実行することにより、コンピュータ1の動作環境を設定する。
CPU10は、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送を行う。具体的には、CPU10は、入力部50から入力される操作信号に応じてハードディスク20に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、表示制御信号を適宜表示部60に出力して、処理結果を表示させる。
また、CPU10は、本実施形態において、ハードディスク20の辞書圧縮プログラム210に従った、辞書圧縮処理(図5参照)を実行すると共に、この辞書圧縮処理において、第1破綻符号化プログラム212に従った第1破綻符号化処理をサブルーチンとして実行する。
具体的には、CPU10は、辞書圧縮処理において、まず、元英和参照部202aを圧縮して圧縮後英和参照部302を生成する。その後、元英和主データ部202b中の文字列を選択する。そして、選択した文字列が、圧縮後英和参照部302に含まれているか否かを判定し、圧縮後英和参照部302に含まれている場合には第1破綻符号化処理を実行し、圧縮後英和参照部302に含まれていない場合には、単純符号化する処理を実行する。
また、CPU10は、第1破綻符号化処理において、圧縮後英和参照部302に含まれていると判定された符号化対象文字列の圧縮後英和参照部302中の位置を検出する。このとき、位置の検出は、当該文字列が含まれているバイトの位置、すなわちバイトアライメント(ここで、アライメントとは、位置決めのために用いられる一般的な技術的用語であり、バイトアライメントとは、データをバイト単位で区切った場合の各バイトを決定するための位置(ビット)であって、当該バイト内の「0」ビット目(例えば、図7の(a)の一点鎖線)のことである。)で区切った圧縮後英和参照部302中の、何れのバイトに含まれているのか(以下、このバイトの位置を「バイト位置」という。)、を検出するものである。そして、CPU10は、復号開始位置を、検出したバイト位置を始めとして1ビット単位でずらしつつ、圧縮後英和参照部302を復号可能かどうか判定する。復号開始位置を検出したバイト長までずらした場合に、復号可能な復号開始位置がいくつであったかをCPU10は判定する。この結果、1つであった場合には、元英和主データ部202bの当該文字列を、検出したバイト位置を用いて符号化し、複数であった場合には、検出したバイト位置及びビット位置を用いて符号化する。
圧縮後英和参照部302中の所定位置をバイト位置で表す場合と、ビット位置で表す場合とでは、前者の方がその表した文字(符号)の文字長(符号長)が短くなる。第1破綻符号化処理は、この原理を利用して辞書データの主データ部の圧縮効率を一層高めるものである。
入力部50は、仮名やアルファベット等の文字入力や機能選択等に必要なキー群を備えた入力装置であり、押下されたキーの信号をCPU10に出力する。この入力部50におけるキー入力により、処理の実行などを指示する制御命令の入力手段を実現する。なお、この入力部50は、図1に示すキーボード5に相当するが、キーボードに限られる物ではなく、例えばマウス等であっても良い。
表示部60は、CPU10から出力される表示信号に基づいて各種画面を表示するものであり、CRT(Cathode Ray Tube)等により構成される。なお、この表示部60は、図1に示すディスプレイ3に相当する。
[1.2.2 動作]
図5は、辞書圧縮処理に係るコンピュータ1の動作を説明するためのフローチャートである。この辞書圧縮処理は、CPU10がハードディスク20に記憶された辞書圧縮プログラム210を実行することによって実現される処理である。
まず、CPU10は元英和辞典データ202の元英和参照部202aをハフマン符号化法によって符号化し、圧縮する処理を行う(ステップA10)。具体的には、ハフマン符号テーブル204から、該当する文字列に対応するハフマン符号で置換をし、符号化することにより元英和参照部202aを圧縮する。そして、圧縮された参照部は、RAM30に圧縮後英和参照部302として記憶される。なお、元英和参照部202aを圧縮する方法としてハフマン符号を用いたが、これに限られるわけではなく、見出語単位データのランダムな伸張が可能な圧縮方法で有れば、公知の圧縮方法を適宜用いて良い。
次に、CPU10は、元英和辞典データ202の元英和主データ部202bに記述されている文字列を選択する(ステップA12)。ここで、文字列を選択するとは、例えば文節毎に文字列として抽出したり、所定の文字数ずつ抽出するなど、いずれの方法であっても良い。そして、CPU10は、ステップA12により選択した文字列(以下、適宜「符号化対象文字列」という)が、圧縮後英和参照部302に含まれているか否かを判定する(ステップA14)。もし、符号化対象文字列が圧縮後英和参照部302に含まれていないと判定した場合には(ステップA14;No)、CPU10は、符号化対象文字列を単純符号化する(ステップA20)。ここで単純符号化とは、例えばハフマン符号化法等の公知の符号化方法を適宜適用する。また、符号化対象文字列が圧縮後英和参照部302に含まれていると判定した場合には(ステップA14;Yes)、圧縮後英和参照部302に含まれている当該文字列のバイト位置及びビット位置を検出する(ステップA16)。
そして、検出されたバイト位置及びビット位置に基づいて第1破綻符号化処理を実行する(ステップA18)。そして、元英和主データ部202bの総ての文字列を符号化したか否か、即ち、元英和主データ部202bの最後の文字列に対して処理を行ったかを判定し、総ての文字列の符号化が終了していない場合は(ステップA22;No)、次の文字列を選択し(ステップA24)、ステップA14から同様の処理を実行する。
総ての文字列の符号化が終了している場合には(ステップA22;Yes)、CPU10は、圧縮後英和参照部302と、圧縮後英和主データ部304とからなる圧縮後英和辞典データ300に含まれている各見出語の位置(開始バイト)を、見出語テーブル306として、RAM30に記憶することにより、見出語テーブル306を作成し(ステップA26)、辞書圧縮処理を終了する。
次に、第1破綻符号化処理について説明する。図6は、第1破綻符号化処理に係るコンピュータ1の動作を説明するためのフローチャートである。この第1破綻符号化処理は、CPU10がハードディスク20の第1破綻符号化プログラム212を実行することによって実現される処理である。
まず、CPU10は、非破綻カウンタの値に「0」を代入し、バイト位置sの値に辞書圧縮処理のステップA16で検出した文字列の先頭位置が含まれるバイトアライメントの位置を代入し、ビット位置tの値に辞書圧縮処理のステップA16で検出した文字列があるビット位置を代入し、変数nの値に「0」を代入する(ステップB10)。
次に、「8×s+n」ビットを復号開始位置として復号した場合に破綻するか否かを判定する(ステップB12)。ここで、破綻するとは、復号開始位置から復号した際に文字列として復号出来ない場合や、文章として成立しないこという。破綻したか破綻していないか(非破綻)の判定は、例えば復号開始位置から所定の文字数分復号した際に、定義されておらず復号不可能な符号が出現したか否かを判定したり、句点が2つ連続するなど文字列が表記ルール通りになっていないことを判定するといった方法の他、公知の方法を適宜用いて良い。
もし、「8×s+n」ビットを復号開始位置として復号した場合に破綻しないときは(ステップB12;Yes)、CPU10は、非破綻カウンタの値に「1」加算する(ステップB14)。また、「8×s+n」ビットを復号開始位置として復号をした場合に破綻するときは(ステップB12;No)、非破綻カウンタの値は変化させない。
そして、CPU10は、変数nに「1」加算し(ステップB16)、nが8になるまでステップB12〜ステップB16を繰り返し処理する(ステップB18)。
次に、CPU10は、変数nの値が「8」以上になると(ステップB18;Yes)、非破綻カウンタの値が「1」か否か判定する(ステップB20)。非破綻カウンタの値が「1」の場合には(ステップB20;Yes)、CPU10は、バイト位置sに基づいて、符号化対象文字列を符号化する(ステップB22)。また、非破綻カウンタの値が「1」でない場合(2以上の場合)には、バイト位置s及びビット位置tに基づいて符号化対象文字列を符号化する(ステップB24)。
以下、図7を用いて具体的に説明する。まず、図7(a)は、圧縮後英和参照部302の一部をビット表現で表した図である。一点鎖線は、通常のバイトアライメントの位置であり、左から、50バイト目、51バイト目、52バイト目を表している。また、本ビット列には、文字列「[名詞]」がハフマン符号化された符号が含まれており、50バイト目の3ビット目(先頭から「403」ビット目)の位置から当該符号(文字列「名詞」)のデータ)が始まっている。なお、ここで図では省略されているが、「[名詞]」はハフマン符号により、「3」バイト(24ビット)で符号化されているとする。
また、50バイト目のバイト内におけるビット位置を「[0]、[1]、…、[7]」で示している。ここで、「×」が付されているのは、そのビット位置から符号列を復号すると、破綻することを示している。また、「○」が付されているのは、そのビット位置から符号列を復号すると、破綻しない(非破綻である)ことを示している。
まず、第1破綻符号化処理において、CPU10は、非破綻カウンタの値に「0」を、変数nの値に「0」を代入すると共に、バイト位置sに「50」を、ビット位置tに「3」を代入する(図6のステップB10)。
そして、CPU10は、変数nの値が0のとき、すなわち「50」バイト目における「0」ビット目を復号開始位置とした場合に破綻するか否か判定する(ステップB12;No)。この場合、「50」バイト目における「0」ビット目から符号列を復号すると破綻する。次に、CPU10は、変数nの値が1のとき、すなわち「50」バイト目における「1」ビット目を復号開始位置とした場合に破綻するか否か判定する(ステップB12;No)。以下、同様にnを「0」から「7」まで変化させて、各ビット位置を復号開始位置とした場合に破綻するか否かを調べる。すると、図7においては、非破綻の個数は、1つ(「3」ビット目)だけであるので、非破綻カウンタの値は「1」となる。
次に、CPU10は、非破綻カウンタが「1」であると判定すると(ステップB20;Yes)、バイト位置sに基づいて符号化対象文字列「[名詞]」を符号化する(ステップB22)。具体的には、圧縮後英和参照部302を参照した圧縮である事を示す「1」と、バイト位置sを2進数に直し、それを7ビットで表現した符号「0110010」とを併せた符号「10110010」で符号化対象文字列を符号化する。
次に、図7(b)は、図7(a)と同様に圧縮後英和参照部302の一部をビット表現で表した図である。一点鎖線は、通常のバイトアライメントの位置であり、左から、52バイト目、53バイト目、54バイト目を表している。また、本ビット列には、文字列「〔コンピュータ〕」がハフマン符号化された符号が含まれており、52バイト目の3ビット目の位置から当該符号(文字列「〔コンピュータ〕」)が始まっている。なお、ここで図では省略されているが、「〔コンピュータ〕」はハフマン符号により、5バイト(40ビット)で符号化されているとする。
まず、第1破綻符号化処理において、CPU10は、非破綻カウンタの値に「0」を、変数nの値に「0」を初期値として代入すると共に、バイト位置sに「52」を、ビット位置tに「3」を代入する(図6のステップB10)。
次に、CPU10は、52バイト内における各ビット位置を復号開始位置とした場合における非破綻を検出する。すると、「1」ビット目と「3」ビット目のビット位置から始まる符号について非破綻であると検出する。従って、非破綻カウンタの値は「2」となる。
そして、CPU10は、非破綻カウンタの値は「2」であるため(ステップB20;No)、バイト位置sとビット位置tに基づいて符号化対象文字列を符号化する(ステップB24)。具体的には、圧縮後英和参照部302を利用した圧縮である事を示す符号ビット「1」と、バイト位置「52」を7ビットの2進数になおした「0110100」と、「〔コンピュータ〕」が記憶されたビット位置「3」を3ビットの2進数になおした「011」とを併せた符号「10110100011」で、符号化対象文字列「〔コンピュータ〕」を符号化する。
以上のように、第1実施形態における辞書圧縮装置(コンピュータ)によれば、圧縮後英和主データ部304が、圧縮後英和参照部302に含まれている文字列を参照する際に、圧縮後英和参照部302において圧縮された文字列の開始位置がバイトアライメントの位置から始まっていない場合であっても、わざわざ先頭からのビット位置を指定しなくとも、伸張可能に辞書データを圧縮することが可能となる。
[1.3 電子辞書装置]
[1.3.1 構成]
図8は、電子辞書装置100の構成を示すブロック図である。同図に示すように、電子辞書装置100は、CPU(Central Processing Unit)110と、ROM(Read Only Memory)120と、RAM(Random Access Memory)130と、EEPROM(Electronically Erasable and Programmable Read Only Memory)140と、入力部150と、表示部160とを備えている。
ROM120は、各種初期設定、ハードウェアの検査、あるいは必要なプログラムのロード等を行うための初期プログラムを格納する。CPU110は、電子辞書装置100の電源投入時においてこの初期プログラムを実行することにより、電子辞書装置100の動作環境を設定する。
また、ROM120は、メニュー表示処理、各種設定処理、各種検索処理等の電子辞書装置100の動作に係る各種プログラムや、電子辞書装置100の備える種々の機能を実現するためのプログラム等を格納すると共に、ハフマン符号テーブル1202と、辞書伸張プログラム1210と、第1破綻復号プログラム1212とを備えている。ここで、ハフマン符号テーブル1202は、図2のハフマン符号テーブル204と同一のテーブルである。
RAM130は、CPU110が実行する各種プログラムや、これらのプログラムの実行に係るデータ等を一時的に保持するメモリ領域を備える。
EEPROM140は、電子辞書装置100において、CPU110が参照する各種辞書データや、各種設定等を電源オフの後であっても記憶するためのメモリである。本実施形態では、圧縮後英和辞典データ1400と、見出語テーブル1406とを備えている。ここで、圧縮後英和辞典データ1400は、圧縮後英和辞典データ300と同一の辞書データである。また、見出語テーブル1406は、見出語テーブル306と同一のテーブルである。
CPU110は、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送を行う。具体的には、CPU110は、入力部150から入力される操作信号に応じてROM120に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、CPU110は、表示制御信号を適宜表示部160に出力して、処理結果を表示させる。
また、CPU110は、本実施形態において、ROM120に記憶された辞書伸張プログラム1210に従った、辞書伸張処理(図9参照)を実行すると共に、この辞書伸張処理において、第1破綻復号プログラム1212を読み出して第1破綻復号処理をサブルーチンとして実行する。
具体的には、CPU110は、辞書伸張処理において、入力文字に対応する見出語を検索する。CPU110は、見出語が圧縮後英和参照部1402に含まれていると判定した場合には、圧縮後英和参照部1402に含まれている符号列を復号することにより見出語データを伸張する。また、CPU110は、検索した見出語が圧縮後英和主データ部1404に含まれていると判定した場合には、圧縮後英和主データ部1404に含まれている見出語データを復号する。このとき、抽出された見出語データに含まれる文字が、辞書型符号化方法により圧縮されていると判定した場合には第1破綻復号処理を実行し、符号列を復号することにより見出語データを伸張する。
また、CPU110は、第1破綻復号処理では、圧縮後英和主データ部1404に含まれている符号列を、圧縮後英和参照部1402を参照して復号する。このときに、バイト内における各ビット位置から符号列を復号した場合に、破綻するか否かを検出する。そして、CPU110は、圧縮後英和参照部1402を参照し、圧縮後英和主データ部1404に含まれる符号列を復号する。
入力部150は、仮名やアルファベット等の文字入力や機能選択等に必要なキー群を備えた入力装置であり、押下されたキーの信号をCPU110に出力する。この入力部150におけるキー入力により、入力文字の入力、辞書モードの選択、検索実行指示、ジャンプ機能の開始等を指示入力する入力手段を実現する。なお、この入力部150は、図1のキー群105に相当するが、キー群105に限られるわけではなく、タッチパネル等であってもよい。
表示部160は、CPU110から入力される表示信号に基づいて各種画面を表示するものであり、LCD等により構成される。なお、この表示部160は、図1に示すディスプレイ103に相当する。
[1.3.2 動作]
図9は、辞書伸張処理に係る電子辞書装置100の動作を説明するためのフローチャートである。この辞書伸張処理は、CPU110がROM120に記憶された辞書伸張プログラム1210を実行することによって実現される処理である。
まず、CPU110は、文字が入力されると(ステップC10)、入力文字に対応する見出語を検索する(ステップC12)。具体的には、CPU110は、見出語テーブル1406に格納された開始位置の中から何れかの開始位置を選択し、圧縮後英和辞典データ1400を伸張していく処理を行う。見出語テーブル1406には、圧縮後英和辞典データ1400の格納順に見出語単位データの開始位置が格納されているため、例えば、公知である2分木を用いた探索法等により、開始位置の選択・見出語の伸張・適合する見出語か否かの判定を繰り返すことにより、見出語の検索を実行する。次に、CPU110は、入力文字に対応する見出語が圧縮後英和主データ部1404に含まれているか否かを判定する(ステップC14)。例えば、入力文字に対応する見出語が記憶されている開始位置が、所定の位置より大きい場合は主データ部に含まれていると判定する。そして、CPU110が、入力文字に対応する見出語が圧縮後英和主データ部1404に含まれていないと判定した場合には(ステップC14;No)、圧縮後英和参照部1402から、見出語単位データの符号列を読み出して復号する(ステップC28)。
また、CPU110は、入力文字に対応する見出語が圧縮後英和主データ部1404に含まれていると判定した場合には(ステップC14;Yes)、見出語単位データの符号列を復号する。次に、CPU110は、復号するための文字列単位の符号列(以下、適宜「復号対象符号列」という。)を読み出し、復号対象符号列の1ビット目が「1」か否かを判定する(ステップC16)。もし、復号対象符号列の1ビット目が「0」の場合には(ステップC16;No)、CPU110は、復号対象符号列を単純に復号する(ステップC22)。また、CPU110は、復号対象符号列の1ビット目が「1」の場合には(ステップC16;Yes)、復号対象符号列が含まれるバイト位置を抽出し(ステップC18)、第1破綻復号処理を実行する(ステップC20)。
そして、CPU110は、見出語単位データに含まれている総ての符号列について復号したか否かを判定し(ステップC24)、見出語単位データに復号する符号列が残っている場合には(ステップC24;No)、次の復号対象符号列を抽出し(ステップC26)、同じ処理を実行する。また、見出語単位データに含まれている符号列を総て復号した場合には(ステップC24;Yes)、CPU110は、見出語単位データを復号することにより、伸張された見出語と説明情報とを表示部160に表示し(ステップC30)、辞書伸張処理を終了する。
次に、辞書伸張処理のステップC20において実行される第1破綻復号処理について説明する。図10は、第1破綻復号処理に係る電子辞書装置100の動作を説明するためのフローチャートである。この第1破綻復号処理は、CPU110がROM120の第1破綻復号プログラム1212を実行することによって実現される処理である。
まず、CPU110は、辞書伸張処理のステップC18で抽出されたバイト位置をバイト位置sの値に代入し、非破綻カウンタ、変数n及びビット位置tの値に0を初期設定として代入する(ステップD10)。
次に、「8×s+n」を復号開始ビット位置とする符号列を復号した場合に、破綻するか否かを検出する(ステップD12)。ここで、破綻するか否かを検出する方法はコンピュータ1が第1破綻符号化処理のステップB12で行った破綻検出処理と同様の方法で実行する必要がある。そして、CPU110が符号列を復号した結果、破綻しないと判定した場合には(ステップD12;Yes)、非破綻カウンタの値に「1」加算し(ステップD14)、変数nの現在の値を非破綻位置に代入する(ステップD16)。
次に、CPU110は、変数nの値に「1」加算し(ステップD18)、変数nの値が「8」以上か否かを判定する(ステップD20)。CPU110は、変数nの値が「8」未満であると判定した場合には(ステップD20;No)、ステップD12から再び処理を実行する(ステップD20;No)。
そして、CPU110は、変数nの値が「8」以上であると判定すると(ステップD20;Yes)、非破綻カウンタの値が「1」か否かを判定する(ステップD22)。そして、非破綻カウンタの値が「1」の場合には(ステップD22;Yes)、CPU110は「8×s+非破綻位置」を復号開始位置とする符号列を復号する(ステップD24)。また、非破綻カウンタの値が「1」以外で有る場合には(ステップD22;No)、CPU110は、続く符号列より3ビットをビット位置tとして抽出し、「8×s+t」から始まる符号列を復号する(ステップD26)
具体的に、図7を使って説明する。ここで、図7(a)の上段の符号列は、圧縮後英和参照部1402の一部を表した図である。また、復号対象符号列として、圧縮後英和主データ部1404から、「10110010」が抽出されているとする。
まず、CPU110は、復号対象符号列の最初の1ビット目を抽出する。すると、最初の1ビット目は「1」であることから、続く符号列よりバイト位置を抽出する(図9のステップC18)。ここで、続く符号列のうち7ビットを抽出すると「0110010」となり、バイト位置sには、10進数「50」が代入される(図10のステップD10)。
次に、CPU110は、圧縮後英和参照部1402の先頭から「50」バイト目の各ビット位置を開始位置として復号し、破綻するか否かを判定する(ステップD12)。ここで、CPU110は、まず変数nの値が「0」のとき、即ち「50」バイト目における「0」ビット目を開始位置として符号列を復号すると、破綻すると判定する。続いて、CPU110は、変数nの値が「1」のとき、即ち「50」バイト目における「1」ビット目を開始位置として符号列を復号すると、破綻すると判定する。同様に、変数nの値が「7」になるまで、順次破綻するか否かを判定していくと、変数nの値が「3」のとき、即ち「50」バイト目における「3」ビット目を復号開始位置として符号列を復号すると、破綻しないと判定する。このとき、CPU110は、非破綻カウンタの値に「1」を加算し(図10のステップD14)、変数nの値「3」を非破綻位置として代入する(図10のステップD16)。
次に、非破綻カウンタの値が「1」であるから、CPU110は、圧縮後英和参照部1402の始めから「8×s+非破綻位置」ビット目に該当する「8×50+3」ビット目を開始位置として符号列を復号する。例えば、「8×50+3」ビット目を開始位置とする符号列に一致する符号列を、ハフマン符号テーブル1202より検索し、対応する文字列「[名詞]」が復号・伸張される。
次に、図7(b)を用いて説明すると、復号対象符号列として、圧縮後英和主データ部1404から、「10110100011…」が抽出されているとする。
まず、CPU110は、復号対象符号列の最初の1ビット目を抽出する。すると、最初の1ビット目は「1」であることから、続く符号列よりバイト位置を抽出する(図9のステップC18)。ここで、続く符号列のうち7ビットを抽出すると「0110100」となり、バイト位置sの値には、10進数「52」が代入される(図10のステップD10)。
次に、CPU110は、圧縮後英和参照部1402の先頭から「52」バイト目の各ビット位置を開始位置として復号し、破綻するか否かを判定する(ステップD12)。すると、CPU110は、変数nの値が「1」のとき及び「3」のとき、即ち「50」バイト目における「1」ビット目及び「3」ビット目を開始位置として符号列を復号すると、破綻しないと判定する。このとき、CPU110は、非破綻カウンタの値にそれぞれ「1」を加算するため(図10のステップD14)、非破綻カウンタの値には「2」が代入されている。
次に、非破綻カウンタの値が「2」となることから、CPU110は、続く符号列から3ビット「011」を抽出し、抽出された「3」をビット位置tの値として代入する。そして、圧縮後英和参照部1402の始めから「8×s+t」ビット目に該当する「8×50+3」ビット目を開始位置として符号列を復号することにより、対応する文字列「〔コンピュータ〕」が復号・伸張される。
このように、第1実施形態の電子辞書装置によれば、圧縮後英和主データ部1404を辞書型符号化方法によって伸張する場合に、圧縮後英和参照部1402に含まれる文字列に対応する符号列がバイトアライメントの位置から開始してない場合であっても、圧縮後英和参照部1402を参照して主データ部に含まれる符号列を復号することが可能となる。
また、本実施形態において、元英和参照部202a及び元英和主データ部202bに対して、上述した辞書圧縮処理を実行した後、更に圧縮された辞書データ全体に対してハフマン符号化による符号化を施すこととしても良い。この場合には、より効率的な符号化が可能となる。
〔第2実施形態〕
次に、本発明を適用した第2実施形態について説明する。本実施形態は、第1実施形態において、圧縮後主データ部に含まれる符号列の開始位置を表す符号を、可変長とすることにより、より効率的に符号化を行うものである。
[2.1 辞書データ圧縮装置]
[2.1.1 構成]
第2実施形態におけるコンピュータの構成は、第1実施形態において図2に示して説明したコンピュータ1の構成において、ハードディスク20を図11(a)に示すハードディスク22に、RAM30を図11(b)に示すRAM32に置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。また、各フローチャートにおいて、第1実施形態のフローチャートと同一処理内容のステップについては同一の符号を付して、異なる部分を中心に説明する。
図11(a)を参照してハードディスク22の構成について説明する。図11(a)に示すように、ハードディスク22は、元英和辞典データ202と、ハフマン符号テーブル204と、破綻テーブル206と、辞書圧縮プログラム210と、第2破綻符号化プログラム220とを記憶している。
破綻テーブル206は、図12(a)に示すように、非破綻カウンタの値と、符号ビット数とを対応づけて格納したテーブルである。
第2破綻符号化プログラム220は、本実施形態における第2破綻符号化処理を実現するためのプログラムであり、CPU10がこの第2破綻符号化プログラム220を実行することで、第2破綻符号化処理が実現される。第2破綻符号化処理において、圧縮後英和参照部302に含まれていると判定された符号化対象文字列の圧縮後英和参照部302中の位置を検出する。そして、CPU10は、復号開始位置を、検出したバイト位置を始めとして1ビット単位でずらしつつ、圧縮後英和参照部302を復号可能かどうか判定する。復号開始位置を検出したバイト長までずらした場合に、復号可能な復号開始位置の個数及び順位を記憶する。この結果、個数が1つであった場合には、元英和主データ部202bの当該文字列を、検出したバイト位置を用いて符号化し、個数が複数であった場合には、検出したバイト位置及び順位を用いて符号化する。
また、図11(b)を参照してRAM32の構成について説明する。図11(b)に示すように、RAM32は、圧縮後英和辞典データ300と非破綻位置記憶領域320とを格納している。
非破綻位置記憶領域320は、図12(b)に示すように、非破綻カウンタの値と、第2破綻符号化処理において参照される変数nの値とを対応づけて記憶しておく領域である。
[2.1.2 動作]
次に、第2実施形態におけるコンピュータ1の動作について図を参照して説明する。図13は、第2破綻符号化処理に係るコンピュータ1の動作を説明するためのフローチャートである。この第2破綻符号化処理は、ハードディスク22の辞書圧縮プログラム210の実行中に呼び出される処理である。CPU10は、図4の辞書圧縮処理におけるステップA18における、第1破綻符号化処理に代えて、本実施形態の第2破綻符号化処理を呼び出して実行する。
CPU10は、参照部の符号列を復号し、破綻しないと判定した場合において、非破綻カウンタの値を「1」加算し、併せて非破綻位置記憶領域320に、非破綻カウンタの値と、変数nの値とを対応づけて格納する(ステップE15)。
また、CPU10は、非破綻カウンタの値が「1」でないときは(ステップB20;No)、破綻テーブル206から非破綻カウンターの値に対応する符号ビット数を読み出す。次に、CPU10は、ビット位置tの値に対応する破綻カウンタの値を、順位として非破綻位置記憶領域320より読み出す。そして、CPU10は、読み出された符号ビット数に基づいて、順位を算出する(ステップE24)。
そして、圧縮後英和参照部302に記憶されている符号化対象文字列と同じ文字列の参照位置が含まれているバイト位置sと、順位とに基づいて符号化対象文字列を符号化する(ステップE26)。
第2破綻符号化処理について、図14を用いて具体的に説明する。図14は、圧縮後英和参照部302の一部を符号列として表した図である。一点鎖線は、通常のバイトアライメントの位置であり、左から、52バイト目、53バイト目、54バイト目を表している。また、図14の符号列には、文字列「〔コンピュータ〕」がハフマン符号化された符号が記憶されており、52バイト目の3ビット目(先頭から419ビット目)の位置から始まっている。なお、ここで図示は省略されているが、例えば、「〔コンピュータ〕」はハフマン符号において5バイト(40ビット)で符号化されているものとする。
まず、第2破綻符号化処理において、CPU10は、非破綻カウンタの値に「0」を、変数nの値に「0」を代入して初期化すると共に、バイト位置sの値に「52」を、ビット位置tに「3」を代入する(図12のステップB10)。
次に、変数nの値を「0」から「7」まで変化させたときのそれぞれの復号開始位置、即ち、圧縮後英和参照部302の「8×52+0」ビット目から「8×52+7」ビット目までのそれぞれを復号開始位置として復号した場合に、破綻をするか否かを判定する。本図においては、変数nの値が「1」の場合、「8×52+1」ビット目を復号開始位置として復号した場合に破綻しないので、CPU10は、このときの破綻カウンタの値「1」と、変数nの値「1」とを、非破綻位置記憶領域320に格納する。また、変数nの値が「3」の場合に復号しても破綻しないので、CPU10は、破綻カウンタの値「2」と、変数nの値「3」とを、非破綻位置記憶領域320に格納する(ステップE15)。
そして、CPU10は、非破綻カウンタの値が「2」であることから(ステップB20;No)、破綻テーブル206を参照して符号ビット数を「1」とする。次に、符号化対象文字列に対応する文字列が含まれているビット位置「3」に対応する非破綻カウンタの値「2」を非破綻位置記憶領域320から読み出す。そして、読み出した非破綻カウンタの値「2」を、ビット値「1」で符号化する。すなわち、CPU10は、2番目の順位であることを表す「1」という符号で符号化する。
そして、CPU10は、バイト位置sと順位に基づいて符号化する(ステップE26)。具体的には、辞書型符号化方法で圧縮されているか否かの識別用の1ビット「1」と、バイト位置「52」を表した「0110100」と、符号化された順位「1」とを併せた符号とする。従って、「〔コンピュータ〕」は、「101101001」の「9」ビットで表現される。
このように、第2実施形態の辞書データ圧縮装置(コンピュータ)によれば、ビット位置を表す符号データを可変長で表すことができる。従って、第1実施形態においては、ビット位置を表す符号データを固定長として、必ず所定ビット数の符号を付加していたが、第2実施形態においては、ビット位置を表す符号データは必要最小限のビット数で済む。
[2.2 電子辞書装置]
[2.2.1 構成]
第2実施形態における電子辞書装置の構成は、第1実施形態において図8に示して説明した電子辞書装置100の構成において、ROM120を図15(a)に示すROM122に、RAM130を図15(b)に示すRAM132に、EEPROM140を図15(b)に示すEEPROM142に置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。また、各フローチャートにおいて、第1実施形態のフローチャートと同一処理内容のステップについては同一の符号を付して、異なる部分を中心に説明する。
図15(a)を参照して、ROM122の構成について説明する。図15(a)に示すように、ROM122は、ハフマン符号テーブル1202と、破綻テーブル1204と、辞書伸張プログラム1210と、第2破綻復号プログラム1220とを記憶している。ここで、破綻テーブル1204は、図11(a)の破綻テーブル206と同一のテーブルである。
第2破綻復号プログラム1220は、CPU110が圧縮後英和主データ部1404に含まれている符号列を、圧縮後英和参照部1402を参照して復号する。このときに、バイト内におけるビット位置をずらして符号列を復号した場合に、破綻するか否かを検出する。このとき、破綻しないビット位置が複数有る場合には、ビット位置の順位を算出し、算出された順位に基づいて符号列を復号する。
図15(b)を参照して、RAM132の構成について説明する。図15(b)に示すように、RAM132は、非破綻位置記憶領域1320を備えている。ここで、非破綻位置記憶領域1320は、図11(b)の非破綻位置記憶領域320と同様の構成である。
図15(c)を参照して、EEPROM142の構成について説明する。図15(c)に示すように、EEPROM142は、圧縮後英和辞典データ1400を格納している。
[2.2.2 動作]
次に、第2実施形態における電子辞書装置100の動作について図を参照して説明する。図16は、第1破綻復号処理に係る電子辞書装置100の動作を説明するためのフローチャートである。この第2破綻復号処理は、CPU110が、ROM122の第2破綻復号プログラム1220を実行することによって実現される処理である。
CPU110は、図10の第1破綻復号処理と同様にしてステップD12において、「8×s+n」を復号開始位置として復号した場合に、復号した符号列が破綻しないことを判定すると(ステップD12;Yes)、非破綻カウンタの値に「1」を加え(ステップD14)、非破綻位置記憶領域1320に、非破綻カウンタの値と、変数nの値とを格納する(ステップF15)。また、破綻を検出する処理は、コンピュータ1で行った破綻を検出する処理(図13のステップB12)と同一の方法で実行する。
次に、CPU110は、非破綻カウンタの値が「1」で無い場合には(ステップD22;No)、順位を復号し、復号する符号列の開始位置であるバイト内におけるビット位置tを算出する(ステップF26)。具体的には、現在の非破綻カウンタの値に対応する符号ビット数を破綻テーブル1204より読み出す。そして、CPU110は、読み出された符号ビット数分の符号を、圧縮後英和参照部1402の符号列図9のステップC18で抽出したバイト位置の続きから抽出て順位に復号する。そして、CPU110は、順位に対応する変数nの値を非破綻位置記憶領域1320から読み出し、ビット位置tの値として代入する。そして、CPU110は、バイト位置s及びビット位置tの値に基づいて、「8×バイト位置s+ビット位置t」を開始位置として始まる符号列を復号し、文字列を伸張する(ステップF28)。
具体的に、図14を使って説明する。CPU110は、圧縮後英和主データ部1404から、符号列「101101001…」を復号対象符号列として抽出する。まず、復号対象符号列の最初の1ビット目が「1」であるから、CPU110は、続く7ビット「0110100」を抽出する。そして、符号「0110100」は10進数「52」であるから、復号対象符号列が参照している圧縮後英和参照部1402中の符号列は「52」バイト目のバイト内の何れかのビットから始まる符号列であると判定する。
次に、52バイト目内の各ビット位置から、それぞれ復号したときに、破綻するか否かを判定する(ステップD12〜D20)。ここで、破綻しない位置は「1」ビット目と、「3」ビット目であるため、CPU110は、非破綻カウンタの値を「2」とする。また、「1」ビット目のときは、非破綻カウンタの値「1」と、変数nの値「1」とを対応づけて非破綻位置記憶領域1320に格納する。また、「3」ビット目のときは、非破綻カウンタの値「2」と、変数nの値「3」とを対応づけて非破綻位置記憶領域1320に格納する。
次に、CPU110は、非破綻カウンタの値が「2」であることから(ステップD22;No)、破綻テーブル1204から、非破綻カウンタの値に対応する値「1」を抽出する。そして、CPU110は、符号「0110100」に続く1ビット分の符号「1」を抽出し、それに対応する変数nの値「3」を非破綻位置記憶領域1320から読み出す。そして、CPU110は、読み出された変数nの値をビット位置tの値として代入する。そして、「8×52+3」ビット目から符号列を復号し、文字列「〔コンピュータ〕」を伸張する。
このように、第2実施形態における電子辞書装置によれば、バイトアライメントの位置内での順位を利用することにより、当該バイト位置内のビット位置から始まる符号を復号することができる。
[3.変形例]
本発明の適用が可能な電子辞書装置は専用機としての電子辞書装置のみならず、例えば、携帯電話やPDA(Personal Digital Assistants)、パソコン等に本発明を適用して、これらの装置内に電子辞書装置を構築することとしてもよい。
コンピュータ及び電子辞書装置の概観図。 第1実施形態におけるコンピュータの構成図。 第1実施形態における元英和辞典データのデータ構造の一例を示した図。 第1実施形態における(a)ハフマン符号テーブル、(b)見出語テーブルのデータ構造の一例を示した図。 辞書圧縮処理の動作フローを示した図。 第1破綻符号化処理の動作フローを示した図。 第1破綻符号化処理の動作を説明した図。 第1実施形態における電子辞書の構成図。 第1実施形態における辞書伸張処理のフローチャートを示す図。 第1実施形態における第1破綻復号処理のフローチャートを示す図。 第2実施形態における(a)コンピュータのハードディスク、(b)コンピュータのRAMの構成を示す図。 第2実施形態における(a)破綻テーブル、(b)非破綻位置記憶領域のデータ構造の一例を示した図。 第2実施形態における第2破綻符号化処理のフローチャートを示す図。 第2破綻符号化処理の動作を説明した図。 第2実施形態における(a)電子辞書装置のROM、(b)電子辞書装置のRAM、(c)電子辞書装置のEEPROMの構成を示す図。 第2実施形態における第2破綻復号処理のフローチャートを示す図。
符号の説明
1 コンピュータ
10 CPU
20、22 ハードディスク
202 元英和辞典データ
202a 元英和参照部
202b 元英和主データ部
204 ハフマン符号テーブル
206 破綻テーブル
210 辞書圧縮プログラム
212 第1破綻符号化プログラム
220 第2破綻符号化プログラム
30、32 RAM
300 圧縮後英和辞典データ
302 圧縮後英和参照部
304 圧縮後英和主データ部
306 見出語テーブル
320 非破綻位置記憶領域
40 ROM
50 入力部
60 表示部
100 電子辞書
110 CPU
120、122 ROM
1202 ハフマン符号テーブル
1204 破綻テーブル
1210 辞書伸張プログラム
1212 第1破綻復号プログラム
130、132 RAM
1320 非破綻位置記憶領域
140、142 EEPROM
1400 圧縮後英和辞典データ
1402 圧縮後英和参照部
1404 圧縮後英和主データ部
1406 見出語テーブル
150 入力部
160 表示部

Claims (3)

  1. 文字列のコードが見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段と、
    前記参照部を構成する文字列を可変長コードで圧縮し、可変長圧縮データとする圧縮手段と、
    この圧縮手段により圧縮された可変長圧縮データを記憶する圧縮データ記憶手段と、
    前記主データ部の符号化対象文字列が前記参照部に含まれている場合に、当該文字列が含まれている前記圧縮データ記憶手段に記憶された可変長圧縮データ中のバイト位置およびビット位置を検出する位置検出手段と、
    伸張位置を前記検出されたバイト位置で指定されるデータの先頭ビットからビット単位で順次ずらすことにより前記参照部の伸張を8回試行し、伸張可能な数を算出する算出手段と、
    この算出手段により算出された数が1個の場合に、前記位置検出手段により検出されたバイト位置を用いた前記参照部を参照元とする辞書型符号化方法により、前記主データ部中の前記符号化対象文字列を符号化する符号化手段と、
    前記算出手段により伸張可能な数が複数算出された場合に、前記位置検出手段により検出されたバイト位置及びビット位置を用いた前記辞書型符号化方法により、前記主データ部中の前記符号化対象文字列を符号化する複数伸張可能時符号化手段と、
    を備えることを特徴とする辞書データ圧縮装置。
  2. 参照部と主データ部とに区分され、文字列のコードが見出語単位で一連に記述されている辞書データであって、請求項1に記載された辞書データ圧縮装置により前記参照部が圧縮され、前記主データ部が符号化された辞書データを記憶する記憶手段と、
    前記辞書データに含まれている複数の見出語の中から見出語を選択する見出語選択手段と、
    この見出語選択手段により選択された見出語が前記主データ部に含まれている場合に、当該見出語に対応する見出語単位の文字列の符号に基づき、当該符号の参照元である前記圧縮された参照部中のバイト位置からビット単位で伸張位置をずらしていき、伸張可能な位置から伸張することで可変長圧縮データとされていた文字列を取得する取得手段と、
    前記選択された見出語に対応する見出語単位の文字列の符号が、バイト位置及びビット位置を参照元情報とする符号であった場合には、当該符号の参照元である前記参照部中のバイト位置から前記ビット位置分ずれた位置から前記圧縮された参照部を伸張する直接位置伸張手段と、
    を備えたことを特徴とする電子辞書装置。
  3. 辞書データ圧縮装置に用いられるコンピュータを、
    文字列のコードが見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段、
    前記参照部を構成する文字列を可変長コードで圧縮し、可変長圧縮データとする圧縮手段、
    この圧縮手段により圧縮された可変長圧縮データを記憶する圧縮データ記憶手段、
    前記主データ部の符号化対象文字列が前記参照部に含まれている場合に、当該文字列が含まれている前記圧縮データ記憶手段に記憶された可変長圧縮データ中のバイト位置およびビット位置を検出する位置検出手段、
    伸張位置を前記検出されたバイト位置で指定されるデータの先頭ビットからビット単位で順次ずらすことにより前記参照部の伸張を8回試行し、伸張可能な数を算出する算出手段、
    この算出手段により算出された数が1個の場合に、前記位置検出手段により検出されたバイト位置を用いた前記参照部を参照元とする辞書型符号化方法により、前記主データ部中の前記符号化対象文字列を符号化する符号化手段、
    前記算出手段により伸張可能な数が複数算出された場合に、前記位置検出手段により検出されたバイト位置及びビット位置を用いた前記辞書型符号化方法により、前記主データ部中の前記符号化対象文字列を符号化する複数伸張可能時符号化手段、
    として機能させるためのプログラム。
JP2003369281A 2003-10-29 2003-10-29 辞書データ圧縮装置、電子辞書装置及びプログラム Expired - Fee Related JP4345438B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003369281A JP4345438B2 (ja) 2003-10-29 2003-10-29 辞書データ圧縮装置、電子辞書装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003369281A JP4345438B2 (ja) 2003-10-29 2003-10-29 辞書データ圧縮装置、電子辞書装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2005136622A JP2005136622A (ja) 2005-05-26
JP4345438B2 true JP4345438B2 (ja) 2009-10-14

Family

ID=34646695

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003369281A Expired - Fee Related JP4345438B2 (ja) 2003-10-29 2003-10-29 辞書データ圧縮装置、電子辞書装置及びプログラム

Country Status (1)

Country Link
JP (1) JP4345438B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115758434B (zh) * 2023-01-06 2023-05-12 深圳奥联信息安全技术有限公司 一种数据高效编码加密方法

Also Published As

Publication number Publication date
JP2005136622A (ja) 2005-05-26

Similar Documents

Publication Publication Date Title
US5854597A (en) Document managing apparatus, data compressing method, and data decompressing method
JP3889762B2 (ja) データ圧縮方法、プログラム及び装置
JPH0682370B2 (ja) 文字処理装置
KR100490240B1 (ko) 데이타압축장치,데이타복원장치,데이타압축방법,데이타복원방법및프로그램기록매체
JP4814999B2 (ja) データ圧縮・復元方法及び圧縮・復元プログラム
JP5812188B2 (ja) プログラム、圧縮データ生成方法、伸張方法、情報処理装置、および記録媒体
JP2003218703A (ja) データ符号化装置及びデータ復号装置
US20160294411A1 (en) Method and system
EP1941617A1 (en) Method and system for compressing data
JP2000201080A (ja) 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
JP6468105B2 (ja) 通信システム、サーバ装置、クライアント装置及びプログラム
US20040139298A1 (en) Method and apparatus for instruction compression and decompression in a cache memory
JP4345438B2 (ja) 辞書データ圧縮装置、電子辞書装置及びプログラム
US20160226516A1 (en) Non-transitory computer-readable recording medium, compression method, decompression method, compression device, and decompression device
EP3385860A1 (en) Compression of text using multiple dynamic dictionaries
JP6135788B2 (ja) 圧縮プログラム、圧縮方法、圧縮装置、伸張プログラム、伸張方法、伸張装置およびデータ転送システム
JP4329493B2 (ja) 辞書データ圧縮装置、電子辞書装置及びプログラム
JPH0546357A (ja) テキストデータの圧縮方法および復元方法
JPH0546358A (ja) テキストデータの圧縮方法
JP2005135086A (ja) 辞書データ圧縮装置、電子辞書装置、圧縮辞書データ製造方法及びプログラム
US20160210304A1 (en) Computer-readable recording medium, information processing apparatus, and conversion process method
JP3898717B2 (ja) データ圧縮/復元装置およびデータ圧縮/復元方法
JP4497029B2 (ja) データ符号化装置,およびデータ符号化方法
JP2008124632A (ja) 画像符号化装置、画像復号装置、画像符号化方法、画像復号方法、画像符号化プログラム、画像復号プログラム、画像符号化プログラムを記録した記録媒体、および画像復号プログラムを記録した記録媒体
JPH10326273A (ja) データ圧縮装置及びデータ復元装置及びデータ圧縮方法及びデータ復元方法及びプログラム記録媒体

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061018

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090331

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090414

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090602

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090623

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090706

R150 Certificate of patent or registration of utility model

Ref document number: 4345438

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120724

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130724

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees