(57)【要約】【課題】  文字列のつながり（用法）を利用することによって、辞書データの圧縮効率を高めること。【解決手段】  ＣＰＵ１０は、辞書データを符号化（圧縮）して圧縮後辞書データ３００を作成する。主データ部２０４を符号化する際に、ＣＰＵ１０は、主データ部２０４に含まれる符号化対象文字列の直前に符号化された直前文字列と、参照テーブル２０６に記憶された参照文字列とを連結した連結参照文字列とする。そして、参照部２０２に記憶されている連結参照文字列の中から、符号化対象文字列の順位に基づいて、符号化対象文字列を符号化する。【選択図】  図２
2005284616.tif 000002
【特許請求の範囲】
【請求項１】
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段と、
前記参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶手段と、
前記主データ部中の符号化対象文字列を、当該符号化対象文字列の直前文字列と連結した連結対象文字列と同一の文字列が前記参照部に含まれているか否かを判定する連結対象文字列判定手段と、
前記符号化対象文字列が前記参照文字列として前記参照文字列記憶手段に記憶されているか否かを判定する符号化対象文字列判定手段と、
前記各参照文字列について、前記直前文字列と当該参照文字列とを連結した連結参照文字列と同一の文字列が前記参照部に含まれているか否かを前記所定の順番に従って判定する連結参照文字列判定手段と、
前記連結対象文字列判定手段により含まれていると判定され、且つ、前記符号化対象文字列判定手段により記憶されていると判定された場合に、前記連結参照文字列判定手段により含まれていると判定された順番における、前記符号化対象文字列と同一の参照文字列が連結されて構成された連結参照文字列が含まれていると判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化手段と、
を備えることを特徴とする辞書データ圧縮装置。
【請求項２】
前記連結参照文字列判定手段は、前記各参照文字列が前記辞書データに含まれている数を算出する算出手段を有し、
前記符号化手段は、前記算出手段により算出された数に基づく可変長コードで前記順位を表し、当該順位を表す可変長コードを用いて前記符号化対象文字列を符号化する可変長符号化手段を有することを特徴とする請求項１に記載の辞書データ圧縮装置。
【請求項３】
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶手段と、
前記参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶手段と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出手段と、
前記各参照文字列について、前記復号対象符号列の直前文字列と当該参照文字列とを連結した連結参照文字列が前記参照部に含まれているか否かを前記所定の順番に従って判定する判定手段と、
前記順位符号抽出手段により抽出された順位符号が示す順位に前記判定手段が含まれていると判定した連結参照文字列中の参照文字列で前記復号対象符号列を復号する復号手段と、
を備えることを特徴とする電子辞書装置。
【請求項４】
前記各参照文字列が前記辞書データに含まれている数を記憶する参照数記憶手段を更に備え、
前記復号手段は、前記判定手段により含まれていると判定された連結参照文字列の前記参照部に含まれている数を前記参照数記憶手段より読み出し、読み出した数に基づいて前記順位符号抽出手段により抽出された順位符号が示す順位に基づいて前記復号を行う順位復号手段を有する、
ことを特徴とする請求項３に記載の電子辞書装置。
【請求項５】
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段と、
前記主データ部中の符号化対象文字列の直前文字列と同一の文字列が前記参照部に含まれている順番における、前記直前文字列と前記符号化対象文字列とを連結した連結対象文字列と同一の文字列が前記参照部に含まれている順位を判定する順位判定手段と、
この順位判定手段により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化手段と、
を備えることを特徴とする辞書データ圧縮装置。
【請求項６】
前記順位判定手段は、前記直前文字列と同一の文字列が前記参照部に含まれている順番であって、前記参照部中の前記直前文字列の後に続く適合文字列が重出した場合を除く順番における、前記連結対象文字列と同一の文字列が前記参照部に含まれている順位を判定する非重出順位判定手段を有することを特徴とする請求項５に記載の辞書データ圧縮装置。
【請求項７】
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶手段と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出手段と、
前記参照部の先頭から順に前記復号対象符号列の直前文字列と同一の文字列を検索し、前記順位符号抽出手段により抽出された順位符号が示す順位に検索した文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する復号手段と、
を備えることを特徴とする電子辞書装置。
【請求項８】
前記復号手段は、前記直前文字列と同一の文字列の後に続く適合文字列が重出した場合を除く順番における、前記順位符号抽出手段により抽出された順位符号が示す順位に検索した文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する非重出順位復号手段を有することを特徴とする請求項７に記載の電子辞書装置。
【請求項９】
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段と、
前記主データ部中の符号化対象文字列の直前文字列を終端文字列とする前記参照部中の文字列であって、前記参照部中に存在する数が所定の個数以下となる最長の文字列の中で、その文字列の次に前記符号化対象文字列と同一の文字列が続くものの順位を判定する順位判定手段と、
この順位判定手段により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化手段と、
を備えることを特徴とする辞書データ圧縮装置。
【請求項１０】
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶手段と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出手段と、
前記復号対象符号列の直前文字列を終端文字列とする前記参照部中の文字列であって、前記参照部中に存在する数が所定の個数以下となる最長の文字列の中で、前記順位符号抽出手段により抽出された順位符号が示す順位の文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する復号手段と、
を備えることを特徴とする電子辞書装置。
【請求項１１】
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段と、
前記参照部に含まれている文字列を複数記憶する参照文字列記憶手段と、
第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶手段と、
前記主データ部中の符号化対象文字列の直前文字列が第１の文字列に、前記参照文字列記憶手段に記憶された文字列が第２の文字列に記憶されている組を前記リンク記憶手段から抽出する抽出手段と、
この抽出手段により抽出された組の中から、前記符号化対象文字列が第２の文字列となっている組の順位を判定する順位判定手段と、
この順位判定手段により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化手段と、
を備えることを特徴とする辞書データ圧縮装置。
【請求項１２】
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶手段と、
前記参照部に含まれている文字列を複数記憶する参照文字列記憶手段と、
第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶手段と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出手段と、
前記復号対象符号列の直前文字列が第１の文字列に、前記参照文字列記憶手段に記憶された文字列が第２の文字列に記憶されている組の中から、前記順位符号抽出手段により抽出された順位符号が示す順位の組の第２の文字列で前記復号対象符号列を復号する復号手段と、
を備えることを特徴とする電子辞書装置。
【請求項１３】
コンピュータに、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶機能と、
前記参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶機能と、
前記主データ部中の符号化対象文字列を、当該符号化対象文字列の直前文字列と連結した連結文字列と同一の文字列が前記参照部に含まれているか否かを判定する連結文字列判定機能と、
前記符号化対象文字列が前記参照文字列として前記参照文字列記憶機能に記憶されているか否かを判定する符号化対象文字列判定機能と、
前記各参照文字列について、前記直前文字列と当該参照文字列とを連結した連結参照文字列と同一の文字列が前記参照部に含まれているか否かを前記所定の順番に従って判定する連結参照文字列判定機能と、
前記連結文字列判定機能により含まれていると判定され、且つ、前記符号化対象文字列判定機能により記憶されていると判定された場合に、前記連結参照文字列判定機能により含まれていると判定された順番における、前記符号化対象文字列と同一の参照文字列が連結されて構成された連結参照文字列が含まれていると判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化機能と、
を実現させるためのプログラム。
【請求項１４】
コンピュータに、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶機能と、
前記参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶機能と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出機能と、
前記各参照文字列について、前記復号対象符号列の直前文字列と当該参照文字列とを連結した連結参照文字列が前記参照部に含まれているか否かを前記所定の順番に従って判定する判定機能と、
前記順位符号抽出機能により抽出された順位符号が示す順位に前記判定機能が含まれていると判定した連結参照文字列中の参照文字列で前記復号対象符号列を復号する復号機能と、
を実現させるためのプログラム。
【請求項１５】
コンピュータに、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶機能と、
前記主データ部中の符号化対象文字列の直前文字列と同一の文字列が前記参照部に含まれている順番における、前記直前文字列と前記符号化対象文字列とを連結した連結文字列と同一の文字列が前記参照部に含まれている順位を判定する順位判定機能と、
この順位判定機能により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化機能と、
を実現させるためのプログラム。
【請求項１６】
コンピュータに、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶機能と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出機能と、
前記参照部の先頭から順に前記復号対象符号列の直前文字列と同一の文字列を検索し、前記順位符号抽出機能により抽出された順位符号が示す順位に検索した文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する復号機能と、
を実現させるためのプログラム。
【請求項１７】
コンピュータに、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶機能と、
前記主データ部中の符号化対象文字列の直前文字列を終端文字列とする前記参照部中の文字列であって、前記参照部中に存在する数が所定の個数以下となる最長の文字列の中で、その文字列の次に前記符号化対象文字列と同一の文字列が続くものの順位を判定する順位判定機能と、
この順位判定機能により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化機能と、
を実現させるためのプログラム。
【請求項１８】
コンピュータに、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶機能と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出機能と、
前記復号対象符号列の直前文字列を終端文字列とする前記参照部中の文字列であって、前記参照部中に存在する数が所定の個数以下となる最長の文字列の中で、前記順位符号抽出機能により抽出された順位符号が示す順位の文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する復号機能と、
を実現させるためのプログラム。
【請求項１９】
コンピュータに、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶機能と、
前記参照部に含まれている文字列を複数記憶する参照文字列記憶機能と、
第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶機能と、
前記主データ部中の符号化対象文字列の直前文字列が第１の文字列に、前記参照文字列記憶機能に記憶された文字列が第２の文字列に記憶されている組を前記リンク記憶機能から抽出する抽出機能と、
この抽出機能により抽出された組の中から、前記符号化対象文字列が第２の文字列となっている組の順位を判定する順位判定機能と、
この順位判定機能により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化機能と、
を実現させるためのプログラム。
【請求項２０】
コンピュータに、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶機能と、
前記参照部に含まれている文字列を複数記憶する参照文字列記憶機能と、
第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶機能と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出機能と、
前記復号対象符号列の直前文字列が第１の文字列に、前記参照文字列記憶機能に記憶された文字列が第２の文字列に記憶されている組の中から、前記順位符号抽出機能により抽出された順位符号が示す順位の組の第２の文字列で前記復号対象符号列を復号する復号機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、辞書データを圧縮する辞書データ圧縮装置、圧縮された辞書データを伸張して利用する電子辞書装置及びプログラムに関する。
【背景技術】
【０００２】
データの圧縮アルゴリズムには種々のものが知られているが、電子辞書装置等で利用される辞書データの圧縮は、一般文章データの圧縮と比較して、「見出語毎のランダムアクセス（復号・伸張）が必要」、「符号化（圧縮ともいう。）は製品開発時に１度行うのみであるため十分時間をかけても問題がない」という２点において大きく異なっている。
【０００３】
「見出語毎のランダムアクセス」とは、辞書データを見出語単位で復号・伸張することをいう。辞書データは紙の辞書と同等の内容を有している。符号化前の辞書データは、紙の辞書に印字されている文字を文字コードとしたものであって、一連のテキストのデータとなっているのが一般的である。すなわち、先頭の見出語から順番に、紙の辞書に印字されている文字（テキスト）が連続したテキストのデータである。この辞書データを全体として単純に圧縮すると、任意の見出語の情報（当該見出語に関する説明文）を復号することができない。このため、連続したテキストデータを見出語毎（見出語単位）で区切り、圧縮する必要がある。
【０００４】
「符号化は製品開発時に１度行うのみ」とは、文字通りメーカ側が十分な時間をかけて辞書データを符号化できることを意味する。すなわち、電子辞書装置では圧縮された辞書データを伸張するのみであり、圧縮（符号化）することはない。従って、高速な計算機によるあらゆる可能性を試した後に最も効率のよい圧縮方法を採用できるという利点がある。
【０００５】
この様な特徴の中で、例えば、特許文献１、特許文献２及び特許文献３のような辞書データの圧縮方法が提案されている。
【０００６】
例えば、辞書データ全体を１割程度の部分（以下適宜「参照部」という。）と残りの部分（以下適宜「主データ部」という。）とに区分する。そして、主データ部中の文字列が参照部中に含まれているか否かを判定し、含まれている場合には含まれている参照部中の位置及び長さに基づいて符号化することにより主データ部の圧縮を行う方法が知られている。
【０００７】
具体的には、主データ部中の符号化対象の文字列が、参照部中のどの位置の文字列に相当するのかを判定して符号化する。このような文字列が含まれる参照部を参照して符号化する方法は、辞書型符号化方法として知られているものである。辞書型符号化方法にはＬＺ７７法やＬＺ７８法等があるが、辞書データに辞書型符号化方法を適用する特徴としては、「見出語毎のランダムアクセス」を可能とするため、参照部を固定とすることが挙げられる。
【０００８】
また、参照部中に一致する文字列が存在しない場合には、その符号化対象の文字列をハフマン符号等で直接可変長で符号化することにより圧縮する。このように、符号化には、文字列が含まれる参照部の位置を参照して符号化する辞書型符号化方法と、直接ハフマン符号等の可変長符号により符号化する方法の２つを利用する。
【特許文献１】特開平６−２５１０７０号公報
【特許文献２】特開平８−３１４９６０号公報
【特許文献３】特開平１１−９６１８６号広報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
ここで、従来の辞書型符号化方法を用いる方法としては、符号化単位毎に独立した符号化が行われるのが一般的である。例えば、「発生する確率」を符号化する場合には、「発生」「する」「確率」とそれぞれの文字列が独立して符号化されていた。さらに、文字列を符号化する場合には、出現回数が多い文字列にはビット数の少ない符号列を割り当て、出現回数が少ない文字列にはビット数の多い符号列を割り当てることにより、全体として効率良く符号化する方法（例えば、ハフマン符号化方法等）が知られている。
【００１０】
この場合、「発生」という言葉が参照部に多く含まれていれば、辞書型符号化方法を用いることにより少ない符号列（ビット数）で効率の良い符号化が可能である。一方、「する」という言葉が参照部に殆ど記憶されていない場合には、「する」に割り当てる符号列はビット数が多くなってしまう。この場合、「発生」「する」と分けて符号化してしまう方法と比較して、「発生する」と一連の文字列として符号化を行った方が、少ないビット数で表現可能な場合があった。しかし、「発生」「する」と分けて符号化する場合と、「発生する」と一連の文字列として符号化する場合と、どちらが効率良く符号化できるかは、実際に符号化を行わないと解らないという問題点があった。
【００１１】
ところで、文字列はある決まった使われ方をするのが通常である。具体的には、「発生する」や「発生して」等のように「発生」の文字列に続く言葉としては「する」や「して」等であり、例えば「れた」や「ている」等の文字列が「発生」の後に続くことはない。しかし、従来の符号化方法においては、「発生」の文字列の使い方として、「発生」の次に「する」や「して」が続く可能性が高いといった文字列のつながりの情報（文字列の使われ方）は利用されていなかった。
【００１２】
本発明は以上の課題に鑑みてなされたものであり、文字列のつながり（用法）を利用することによって、辞書データの圧縮効率を高めることである。
【課題を解決するための手段】
【００１３】
以上の課題を解決するために、請求項１に記載の発明の辞書圧縮装置は、
文字列が見出語単位で一連に記述されている辞書データ（例えば、図２の辞書データ２００）を参照部（例えば、図２の参照部２０２）と主データ部（例えば、図２の主データ部２０４）とに区分して記憶する記憶手段（例えば、図２のハードディスク２０）と、
前記参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶手段（例えば、図２のハードディスク２０；参照テーブル２０６）と、
前記主データ部中の符号化対象文字列を、当該符号化対象文字列の直前文字列と連結した連結文字列と同一の文字列が前記参照部に含まれているか否かを判定する連結文字列判定手段（例えば、図２のＣＰＵ１０；図６のステップＡ１８）と、
前記符号化対象文字列が前記参照文字列として前記参照文字列記憶手段に記憶されているか否かを判定する符号化対象文字列判定手段（例えば、図２のＣＰＵ１０；図６のステップＡ２０）と、
前記各参照文字列について、前記直前文字列と当該参照文字列とを連結した連結参照文字列と同一の文字列が前記参照部に含まれているか否かを前記所定の順番に従って判定する連結参照文字列判定手段（例えば、図２のＣＰＵ１０；図７のステップＢ１６、Ｂ１８）と、
前記連結文字列判定手段により含まれていると判定され、且つ、前記符号化対象文字列判定手段により記憶されていると判定された場合に、前記連結参照文字列判定手段により含まれていると判定された順番における、前記符号化対象文字列と同一の参照文字列が連結されて構成された連結参照文字列が含まれていると判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化手段（例えば、図２のＣＰＵ１０；図７のステップＢ２４）と、
を備えることを特徴とする。
【００１４】
また、請求項１３に記載の発明のプログラムは、
コンピュータに、
文字列が見出語単位で一連に記述されている辞書データ（例えば、図２の辞書データ２００）を参照部（例えば、図２の参照部２０２）と主データ部（例えば、図２の主データ部２０４）とに区分して記憶する記憶機能（例えば、図２のハードディスク２０）と、
前記参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶機能（例えば、図２のハードディスク２０；参照テーブル２０６）と、
前記主データ部中の符号化対象文字列を、当該符号化対象文字列の直前文字列と連結した連結文字列と同一の文字列が前記参照部に含まれているか否かを判定する連結文字列判定機能（例えば、図２のＣＰＵ１０；図６のステップＡ２０）と、
前記符号化対象文字列が前記参照文字列として前記参照文字列記憶機能に記憶されているか否かを判定する符号化対象文字列判定機能（例えば、図２のＣＰＵ１０；図６ｔのステップＡ２０）と、
前記各参照文字列について、前記直前文字列と当該参照文字列とを連結した連結参照文字列と同一の文字列が前記参照部に含まれているか否かを前記所定の順番に従って判定する連結参照文字列判定機能（例えば、図２のＣＰＵ１０；図７のステップＢ１６、Ｂ１８）と、
前記連結文字列判定機能により含まれていると判定され、且つ、前記符号化対象文字列判定機能により記憶されていると判定された場合に、前記連結参照文字列判定機能により含まれていると判定された順番における、前記符号化対象文字列と同一の参照文字列が連結されて構成された連結参照文字列が含まれていると判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化機能（例えば、図２のＣＰＵ１０；図７のステップＢ２４）と、
を実現させることを特徴としている。
【００１５】
この請求項１又は１３に記載の発明によれば、参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶手段を有しており、主データ部中の符号化対象文字列を符号化する際に、符号化対象文字列の直前に符号化された直前文字列と、参照文字列記憶手段に記憶されている参照文字列を利用することにより効率よく符号化できる。従って、例えば「発生する」や「発生して」といった文字列の用法に基づく文字列を参照文字列とすることで、その用法に従った使われ方をした文字列を効率良く符号化できる。
【００１６】
請求項２に記載の発明は、請求項１に記載の辞書データ圧縮装置において、
前記連結参照文字列判定手段は、前記各参照文字列が前記辞書データに含まれている数を算出する算出手段（例えば、図２のＣＰＵ１０；図１６のステップＥ１２）を有し、
前記符号化手段は、前記算出手段により算出された数に基づく可変長コードで前記順位を表し、当該順位を表す可変長コードを用いて前記符号化対象文字列を符号化する可変長符号化手段（例えば、図２のＣＰＵ１０；図１６のステップＥ２４、Ｅ２６）を有することを特徴とする。
【００１７】
請求項２に記載の発明によれば、請求項１に記載の発明の効果に加えて、次のような効果を具備する。すなわち、辞書データに含まれている参照文字列の数に応じた可変長で符号化できる。従って、主データ部を符号化する際に、更に効率良く符号化を行うことができる。
【００１８】
請求項３に記載の発明の電子辞書装置は、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶手段（例えば、図９のＥＥＰＲＯＭ１４０；圧縮後辞書データ１４００）と、
前記参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶手段（例えば、図９のＲＯＭ１２０；参照テーブル１２０２）と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出手段（例えば、図９のＣＰＵ１１０；図１２のステップＤ３２）と、
前記各参照文字列について、前記復号対象符号列の直前文字列と当該参照文字列とを連結した連結参照文字列が前記参照部に含まれているか否かを前記所定の順番に従って判定する判定手段（例えば、図９のＣＰＵ１１０；図１２のステップＤ２０、Ｄ２２）と、
前記順位符号抽出手段により抽出された順位符号が示す順位に前記判定手段が含まれていると判定した連結参照文字列中の参照文字列で前記復号対象符号列を復号する復号手段（例えば、図９のＣＰＵ１１０；図１２のステップＤ３４）と、
を備えることを特徴とする。
【００１９】
また、請求項１４に記載の発明のプログラムは
コンピュータに、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶機能（例えば、図９のＥＥＰＲＯＭ１４０；圧縮後辞書データ１４００）と、
前記参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶機能（例えば、図９のＲＯＭ１２０；参照テーブル１２０２）と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出機能（例えば、図９のＣＰＵ１１０；図１２のステップＤ３２）と、
前記各参照文字列について、前記復号対象符号列の直前文字列と当該参照文字列とを連結した連結参照文字列が前記参照部に含まれているか否かを前記所定の順番に従って判定する判定機能（例えば、図９のＣＰＵ１１０；図１２のステップＤ２０、Ｄ２２）と、
前記順位符号抽出機能により抽出された順位符号が示す順位に前記判定機能が含まれていると判定した連結参照文字列中の参照文字列で前記復号対象符号列を復号する復号機能（例えば、図９のＣＰＵ１１０；図１２のステップＤ３４）と、
を実現させることを特徴とする。
【００２０】
請求項３又は１４に記載の発明によれば、参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶手段を有しており、復号対象符号列を復号する際に、復号対象符号列の直前に復号された直前文字列と、参照文字列記憶手段に記憶されている参照文字列を利用することにより復号を行う。従って、参照文字列記憶手段を用いないで符号化された辞書データと比較して、容量を小さくすることができる。
【００２１】
請求項４に記載の発明は、請求項３に記載の電子辞書装置において、
前記各参照文字列が前記辞書データに含まれている数を記憶する参照数記憶手段（例えば、図１８のＲＯＭ１２０ｂ；参照頻度テーブル１２０２ｂ）を更に備え、
前記復号手段は、前記判定手段により含まれていると判定された連結参照文字列の前記参照部に含まれている数を前記参照数記憶手段より読み出し、読み出した数に基づいて前記順位符号抽出手段により抽出された順位符号が示す順位に基づいて前記復号を行う順位復号手段（例えば、図９のＣＰＵ１１０；図１９のステップＦ３４，Ｆ３６）を有する、
ことを特徴とする。
【００２２】
請求項４に記載の発明によれば、参照文字列が辞書データに含まれている数に基づいて符号列を復号することができる。
【００２３】
請求項５に記載の発明の辞書データ圧縮装置は、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段（例えば、図２０のハードディスク２０ｃ；辞書データ２００）と、
前記主データ部中の符号化対象文字列の直前文字列と同一の文字列が前記参照部に含まれている順番における、前記直前文字列と前記符号化対象文字列とを連結した連結文字列と同一の文字列が前記参照部に含まれている順位を判定する順位判定手段（例えば、図２のＣＰＵ１０；図２２のステップＨ１６、Ｈ１８）と、
この順位判定手段により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化手段（例えば、図２のＣＰＵ１０；図２２のステップＨ２４）と、
を備えることを特徴とする。
【００２４】
また、請求項１５に記載の発明のプログラムは、
コンピュータに、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶機能（例えば、図２０のハードディスク２０ｃ；辞書データ２００）と、
前記主データ部中の符号化対象文字列の直前文字列と同一の文字列が前記参照部に含まれている順番における、前記直前文字列と前記符号化対象文字列とを連結した連結文字列と同一の文字列が前記参照部に含まれている順位を判定する順位判定機能（例えば、図２のＣＰＵ１０；図２２のステップＨ１６、Ｈ１８）と、
この順位判定機能により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化機能（例えば、図２のＣＰＵ１０；図２２のステップＨ２４）と、
を実現させることを特徴とする。
【００２５】
請求項５又は１５に記載の発明によれば、主データ部中の符号化対象文字列の直前文字列と同一の文字列が前記参照部に含まれている順番における、前記直前文字列と前記符号化対象文字列とを連結した連結文字列と同一の文字列が前記参照部に含まれている順位に基づいて符号化対象文字列を符号化することができる。
【００２６】
請求項６に記載の発明は、請求項５に記載の辞書データ圧縮装置において、
前記順位判定手段は、前記直前文字列と同一の文字列が前記参照部に含まれている順番であって、前記参照部中の前記直前文字列の後に続く適合文字列が重出した場合を除く順番における、前記連結対象文字列と同一の文字列が前記参照部に含まれている順位を判定する非重出順位判定手段（例えば、図２のＣＰＵ１０；図３５のステップＬ２２）を有することを特徴とする。
【００２７】
請求項６に記載の発明によれば、請求項５に記載の発明の効果に加えて、次のような効果を具備する。すなわち、直前文字列と同一の文字列が参照部に含まれている順番であって、参照部中の直前文字列の後に続く適合文字列が重出した場合を除く順番における、連結対象文字列と同一の文字列が参照部に含まれている順位に基づいて符号化を行うことができる。従って、参照部に含まれている同一の文字列を除いた順位を求めることにより更に少ない符号列で符号化対象文字列を符号化することができる。
【００２８】
請求項７に記載の発明の電子辞書装置は、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶手段（例えば、図９のＥＥＰＲＯＭ１４０；圧縮後辞書データ１４００）と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出手段（例えば、図９のＣＰＵ１１０；図２６のステップＪ３４）と、
前記参照部の先頭から順に前記復号対象符号列の直前文字列と同一の文字列を検索し、前記順位符号抽出手段により抽出された順位符号が示す順位に検索した文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する復号手段（例えば、図９のＣＰＵ１１０；図２６のステップＪ３６）と、
を備えることを特徴とする。
【００２９】
また、請求項１６に記載の発明によれば、
コンピュータに、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶機能（例えば、図９のＥＥＰＲＯＭ１４０；圧縮後辞書データ１４００）と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出機能（例えば、図９のＣＰＵ１１０；図２６のステップＪ３４）と、
前記参照部の先頭から順に前記復号対象符号列の直前文字列と同一の文字列を検索し、前記順位符号抽出機能により抽出された順位符号が示す順位に検索した文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する復号機能（例えば、図９のＣＰＵ１１０；図２６のステップＪ３６）と、
を実現させることを特徴とする。
【００３０】
請求項７又は１６に記載の発明によれば、参照部の先頭から順に復号対象符号列の直前文字列と同一の文字列を検索し、主データ部中の復号対象符号列から抽出された順位に検索した文字列の前記参照部中の次の文字列で復号対象符号列を復号することができる。
【００３１】
請求項８に記載の発明は、請求項７に記載された電子辞書装置において、
前記復号手段は、前記直前文字列と同一の文字列の後に続く適合文字列が重出した場合を除く順番における、前記順位符号抽出手段により抽出された順位符号が示す順位に検索した文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する非重出順位復号手段（例えば、図９のＣＰＵ１１０；図３５のステップＬ２２）を有することを特徴とする。
【００３２】
請求項８に記載の発明によれば、請求項７に記載の発明の効果に加えて、次のような効果を具備する。すなわち、直前文字列と同一の文字列の後に続く適合文字列が重出した場合を除く順番における、主データ部中の復号対象符号列から抽出された順位に、検索した文字列の参照部中の次の文字列で復号対象符号列を復号することができる。
【００３３】
請求項９に記載の発明の辞書データ圧縮装置は、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段（例えば、図３６のハードディスク２０ｅ；図３６の辞書データ２００）と、
前記主データ部中の符号化対象文字列の直前文字列を終端文字列とする前記参照部中の文字列であって、前記参照部中に存在する数が所定の個数以下となる最長の文字列の中で、その文字列の次に前記符号化対象文字列と同一の文字列が続くものの順位を判定する順位判定手段（例えば、図２のＣＰＵ１０；図３８のステップＭ２８、Ｍ３２）と、
この順位判定手段により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化手段（例えば、図２のＣＰＵ１０；図３８のステップＭ３４）と、
を備えることを特徴とする。
【００３４】
また、請求項１７に記載のプログラムは、
コンピュータに、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶機能（例えば、図３６のハードディスク２０ｅ；図３６の辞書データ２００）と、
前記主データ部中の符号化対象文字列の直前文字列を終端文字列とする前記参照部中の文字列であって、前記参照部中に存在する数が所定の個数以下となる最長の文字列の中で、その文字列の次に前記符号化対象文字列と同一の文字列が続くものの順位を判定する順位判定機能（例えば、図２のＣＰＵ１０；図３８のステップＭ２８、Ｍ３２）と、
この順位判定機能により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化機能（例えば、図２のＣＰＵ１０；図３８のステップＭ３４）と、
を実現させることを特徴とする。
【００３５】
請求項９又は１７に記載の発明によれば、主データ部中の符号化対象文字列の直前文字列を終端文字列とする参照部中の文字列であって、参照部中に存在する数が所定の個数以下となる最長の文字列の中で、その文字列の次に符号化対象文字列と同一の文字列が続くものの順位に基づいて符号化対象文字列を符号化することができる。従って、参照部に記憶された文字列から、最長の文字列を利用することにより、符号化した際に効率の良いものを符号化対象文字列毎に選択することができる。
【００３６】
請求項１０に記載の発明の電子辞書装置は、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶手段（例えば、図９のＥＥＰＲＯＭ１４０；圧縮後辞書データ１４００）と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出手段（例えば、図９のＣＰＵ１１０；図４２のステップＮ１４、Ｎ１６）と、
前記復号対象符号列の直前文字列を終端文字列とする前記参照部中の文字列であって、前記参照部中に存在する数が所定の個数以下となる最長の文字列の中で、前記順位符号抽出手段により抽出された順位符号が示す順位の文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する復号手段（例えば、図９のＣＰＵ１１０；図４２のステップＮ２４）と、
を備えることを特徴とする。
【００３７】
また、請求項１８に記載の発明のプログラムは、
コンピュータに、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶機能（例えば、図９のＥＥＰＲＯＭ１４０；圧縮後辞書データ１４００）と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出機能（例えば、図９のＣＰＵ１１０；図４２のステップＮ１４、Ｎ１６）と、
前記復号対象符号列の直前文字列を終端文字列とする前記参照部中の文字列であって、前記参照部中に存在する数が所定の個数以下となる最長の文字列の中で、前記順位符号抽出機能により抽出された順位符号が示す順位の文字列の前記参照部中の次の文字列で前記復号対象符号列を復号する復号機能（例えば、図９のＣＰＵ１１０；図４２のステップＮ２４）と、
を実現させることを特徴とする。
【００３８】
請求項１０又は１８に記載の発明によれば、復号対象符号列の直前文字列を終端文字列とする参照部中の文字列であって、参照部中に存在する数が所定の個数以下となる最長の文字列の中で、主データ部中の復号対象符号列から抽出された順位の文字列の前記参照部中の次の文字列で前記復号対象符号列を復号することができる。
【００３９】
請求項１１に記載の発明の辞書データ圧縮装置は、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶手段（例えば、図４３のハードディスク２０；辞書データ２００）と、
前記参照部に含まれている文字列を複数記憶する参照文字列記憶手段（例えば、図４３のハードディスク２０ｆ；参照テーブル２０６）と、
第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶手段（例えば、図４３のハードディスク２０ｆ；リンクテーブル２６０）と、
前記主データ部中の符号化対象文字列の直前文字列が第１の文字列に、前記参照文字列記憶手段に記憶された文字列が第２の文字列に記憶されている組を前記リンク記憶手段から抽出する抽出手段（例えば、図２のＣＰＵ１０；図４６のステップＰ１８）と、
この抽出手段により抽出された組の中から、前記符号化対象文字列が第２の文字列となっている組の順位を判定する順位判定手段（例えば、図２のＣＰＵ１０；図４６のステップＰ２４）と、
この順位判定手段により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化手段（例えば、図２のＣＰＵ１０；図４６のステップＰ２６）と、
を備えることを特徴とする。
【００４０】
また、請求項１９に記載の発明のプログラムは、
コンピュータに、
文字列が見出語単位で一連に記述されている辞書データを参照部と主データ部とに区分して記憶する記憶機能（例えば、図４３のハードディスク２０；辞書データ２００）と、
前記参照部に含まれている文字列を複数記憶する参照文字列記憶機能（例えば、図４３のハードディスク２０ｆ；参照テーブル２０６）と、
第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶機能（例えば、図４３のハードディスク２０ｆ；リンクテーブル２６０）と、
前記主データ部中の符号化対象文字列の直前文字列が第１の文字列に、前記参照文字列記憶機能に記憶された文字列が第２の文字列に記憶されている組を前記リンク記憶機能から抽出する抽出機能（例えば、図２のＣＰＵ１０；図４６のステップＰ１８）と、
この抽出機能により抽出された組の中から、前記符号化対象文字列が第２の文字列となっている組の順位を判定する順位判定機能（例えば、図２のＣＰＵ１０；図４６のステップＰ２４）と、
この順位判定機能により判定された順位を用いて前記参照部を参照元とする辞書型符号化方法により前記符号化対象文字列を符号化する符号化機能（例えば、図２のＣＰＵ１０；図４６のステップＰ２６）と、
を実現させるたことを特徴とする。
【００４１】
請求項１１又は１９に記載の発明によれば、第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶手段から、主データ部中の符号化対象文字列の直前文字列が第１の文字列に、前記参照文字列記憶手段に記憶された文字列が第２の文字列に記憶されている組を前記リンク記憶手段から抽出する。そして抽出された組の中から、符号化対象文字列が第２の文字列となっている組の順位に基づいて符号化対象文字列を符号化することができる。
【００４２】
請求項１２に記載の発明の電子辞書装置は、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶手段（例えば、ＥＥＰＲＯＭ１４０；圧縮後辞書データ１４００）と、
前記参照部に含まれている文字列を複数記憶する参照文字列記憶手段（例えば、図４８のＲＯＭ１２０ｆ；参照テーブル１２０２）と、
第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶手段（例えば、図４８のＲＯＭ１２０ｆ；リンクテーブル１２６０）と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出手段（例えば、図９のＣＰＵ１１０；図５０のステップＱ２２）と、
前記復号対象符号列の直前文字列が第１の文字列に、前記参照文字列記憶手段に記憶された文字列が第２の文字列に記憶されている組の中から、前記順位符号抽出手段により抽出された順位符号が示す順位の組の第２の文字列で前記復号対象符号列を復号する復号手段（例えば、図９のＣＰＵ１１０；図５０のステップＱ２４）と、
を備えることを特徴とする。
【００４３】
また、請求項２０に記載の発明のプログラムは、
コンピュータに、
参照部と主データ部とに区分され、文字列が見出語単位で一連に記述されている辞書データであって、前記主データ部が前記参照部を参照元とする辞書型符号化方法により符号化された辞書データを記憶する記憶機能（例えば、ＥＥＰＲＯＭ１４０；圧縮後辞書データ１４００）と、
前記参照部に含まれている文字列を複数記憶する参照文字列記憶機能（例えば、図４８のＲＯＭ１２０ｆ；参照テーブル１２０２）と、
第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶機能（例えば、図４８のＲＯＭ１２０ｆ；リンクテーブル１２６０）と、
前記主データ部中の復号対象符号列から順位符号を抽出する順位符号抽出機能（例えば、図９のＣＰＵ１１０；図５０のステップＱ２２）と、
前記復号対象符号列の直前文字列が第１の文字列に、前記参照文字列記憶機能に記憶された文字列が第２の文字列に記憶されている組の中から、前記順位符号抽出機能により抽出された順位符号が示す順位の組の第２の文字列で前記復号対象符号列を復号する復号機能（例えば、図９のＣＰＵ１１０；図５０のステップＱ２４）と、
を実現させることを特徴としている。
【００４４】
請求項１２又は２０に記載の発明によれば、第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶手段から、復号対象符号列の直前文字列が第１の文字列に、前記参照文字列記憶手段に記憶された文字列が第２の文字列に記憶されている組の中から、主データ部中の復号対象符号列の順位を抽出し、主データ部中の復号対象符号列から抽出された順位の組の第２の文字列で前記復号対象符号列を復号することができる。
【発明の効果】
【００４５】
この請求項１又は１３に記載の発明によれば、参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶手段を有しており、主データ部中の符号化対象文字列を符号化する際に、符号化対象文字列の直前に符号化された直前文字列と、参照文字列記憶手段に記憶されている参照文字列を利用することにより効率よく符号化を行うことができる。従って、例えば「発生する」や「発生して」といった文字列の用法に基づく文字列を参照文字列とすることで、その用法に従った使われ方をした文字列を効率良く符号化できる。
【００４６】
請求項２に記載の発明によれば、請求項１に記載の発明の効果に加えて、次のような効果を具備する。すなわち、辞書データに含まれている参照文字列の数に応じた可変長で符号化できる。従って、主データ部を符号化する際に、更に効率良く符号化を行うことができる。
【００４７】
請求項３又は１４に記載の発明によれば、参照部に含まれている文字列を参照文字列として所定の順番で複数記憶する参照文字列記憶手段を有しており、復号対象符号列を復号する際に、復号対象符号列の直前に復号された直前文字列と、参照文字列記憶手段に記憶されている参照文字列を利用することにより復号を行う。従って、参照文字列記憶手段を用いないで符号化された辞書データと比較して、容量を小さくすることができる。
【００４８】
請求項４に記載の発明によれば、参照文字列が辞書データに含まれている数に基づいて符号列を復号することができる。
【００４９】
請求項５又は１５に記載の発明によれば、主データ部中の符号化対象文字列の直前文字列と同一の文字列が前記参照部に含まれている順番における、前記直前文字列と前記符号化対象文字列とを連結した連結文字列と同一の文字列が前記参照部に含まれている順位に基づいて符号化対象文字列を符号化することができる。
【００５０】
請求項６に記載の発明によれば、請求項５に記載の発明の効果に加えて、次のような効果を具備する。すなわち、直前文字列と同一の文字列が参照部に含まれている順番であって、参照部中の直前文字列の後に続く適合文字列が重出した場合を除く順番における、連結対象文字列と同一の文字列が参照部に含まれている順位に基づいて符号化を行うことができる。従って、参照部に含まれている同一の文字列を除いた順位を求めることにより更に少ない符号列で符号化対象文字列を符号化することができる。
【００５１】
請求項７又は１６に記載の発明によれば、参照部の先頭から順に復号対象符号列の直前文字列と同一の文字列を検索し、主データ部中の復号対象符号列から抽出された順位に検索した文字列の前記参照部中の次の文字列で復号対象符号列を復号することができる。
【００５２】
請求項８に記載の発明によれば、請求項７に記載の発明の効果に加えて、次のような効果を具備する。すなわち、直前文字列と同一の文字列の後に続く適合文字列が重出した場合を除く順番における、主データ部中の復号対象符号列から抽出された順位に、検索した文字列の参照部中の次の文字列で復号対象符号列を復号することができる。
【００５３】
請求項９又は１７に記載の発明によれば、主データ部中の符号化対象文字列の直前文字列を終端文字列とする参照部中の文字列であって、参照部中に存在する数が所定の個数以下となる最長の文字列の中で、その文字列の次に符号化対象文字列と同一の文字列が続くものの順位に基づいて符号化対象文字列を符号化することができる。従って、参照部に記憶された文字列から、最長の文字列を利用することにより、符号化した際に効率の良いものを符号化対象文字列毎に選択することができる。
【００５４】
請求項１０又は１８に記載の発明によれば、復号対象符号列の直前文字列を終端文字列とする参照部中の文字列であって、参照部中に存在する数が所定の個数以下となる最長の文字列の中で、主データ部中の復号対象符号列から抽出された順位の文字列の前記参照部中の次の文字列で前記復号対象符号列を復号することができる。
【００５５】
請求項１１又は１９に記載の発明によれば、第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶手段から、主データ部中の符号化対象文字列の直前文字列が第１の文字列に、前記参照文字列記憶手段に記憶された文字列が第２の文字列に記憶されている組を前記リンク記憶手段から抽出する。そして抽出された組の中から、符号化対象文字列が第２の文字列となっている組の順位に基づいて符号化対象文字列を符号化することができる。
【００５６】
請求項１２又は２０に記載の発明によれば、第１の文字列と第２の文字列とを対応付けて複数組記憶するリンク記憶手段から、復号対象符号列の直前文字列が第１の文字列に、前記参照文字列記憶手段に記憶された文字列が第２の文字列に記憶されている組の中から、主データ部中の復号対象符号列の順位を抽出し、主データ部中の復号対象符号列から抽出された順位の組の第２の文字列で前記復号対象符号列を復号することができる。
【発明を実施するための最良の形態】
【００５７】
以下、図を参照して本発明を辞書データ圧縮装置の一種であるコンピュータ及び専用機の電子辞書装置に適用した場合の実施形態について図面を参照して詳細に説明する。但し、本発明が適用可能なものはコンピュータ及び専用機の電子辞書装置に限定されるものではない。
【００５８】
〔第１の実施の形態〕
［１．１  全体構成］
図１は、本発明を適用したコンピュータ１及び電子辞書装置１００の概観図である。コンピュータ１は、通常、電子辞書装置１００の製造メーカ等に設置されており、辞書データの圧縮の用に供される。コンピュータ１で圧縮された辞書データは、ＥＥＰＲＯＭ１０７に記憶されて、ＥＥＰＲＯＭ１０７が実装された電子辞書装置１００が製造される。そして、電子辞書装置１００においては、圧縮された辞書データが伸張され、辞書データの内容（見出語や説明情報等）が表示される。
【００５９】
辞書データとは、見出語と、当該見出語を説明するための説明情報とからなるデータであり、例えば国語辞典や英和辞典、和英辞典、英英辞典、カタカナ語辞典などの電子辞書データがある。但し、簡明のために、本実施形態においては、コンピュータ１により圧縮され、電子辞書装置１００に記憶される辞書データは、国語辞典の辞書データのみとして説明する。なお、以下では、単に「辞書データ」という場合には圧縮前の辞書データのことをいい、圧縮後の辞書データは「圧縮後辞書データ」という。
【００６０】
図１に示すように、コンピュータ１は、ＣＲＴ（Cathode Ray Tube）等のディスプレイ３と、キーボード５と、ＲＡＭやハードディスク等のメモリ７とを備えた汎用のサーバ・コンピュータ等のハードウェアで構成される。電子辞書装置１００は、ＬＣＤ（Liquid Crystal Display）等のディスプレイ１０３と、文字入力キーや辞書種別の選択キー等の各種キー群１０５と、ＥＥＰＲＯＭ１０７とを備えて構成される。
【００６１】
電子辞書装置１００の基本的な機能は、次の通りである。すなわち、ユーザによって辞書が選択され、検索語となる文字が入力される（以下、入力された文字を「入力文字」という。）と、電子辞書装置１００は、入力文字に適合する見出語を辞書データの中から検索し、見出語候補として一覧表示する。そして、検索した見出語に対応する説明情報を表示する。
【００６２】
［１．２  辞書データ圧縮装置］
［１．２．１  内部構成］
まず、辞書データをコンピュータ１において圧縮する場合の処理について説明する。図２は、コンピュータ１の機能を示すブロック図である。同図に示すように、コンピュータ１は、ＣＰＵ（Central Processing Unit）１０と、ハードディスク２０と、ＲＡＭ（Random Access Memory）３０と、ＲＯＭ（Read Only Memory）４０と、入力部５０と、表示部６０とを備えている。
【００６３】
（１）  記憶領域
ハードディスク２０は、オペレーティングシステム、必要なプログラム又はデータファイル等を格納する。また、ハードディスク２０には、辞書データ２００と、参照テーブル２０６と、第１辞書圧縮プログラム２０８と、第１符号化プログラム２１０とが記憶されている。ここで、辞書データは、所定の割合で分割（区分）されている。辞書データ全体の１割の部分と残り９割の部分とに分割されている。ここで、辞書データ全体の１割の部分を参照部、残りの９割の部分を主データ部という。なお、本実施形態において参照部の割合を一例として辞書データ全体の１割としたが、これに限定される訳ではない。例えば、参照部の割合は、辞書データの全体の５％でも良いし、２割でも良い。
【００６４】
辞書データ２００は、「国語辞書」のコンテンツの圧縮前のデータが入っている辞書データである。図３に辞書データ２００の概要を図示した。図３において、「○○○○」で示した部分は見出語を表し、「・・・・・」で示した部分は当該見出語の説明文（見出語を説明する文章を構成する文字列）を表している。図３に示すように、辞書データ２００は、紙の辞書に印字されている文字を文字コードとした一連のテキストのデータとなっている。また、図４は、説明の便宜上、辞書データ２００を見出語単位に区切って図式化した概念図である。ここで、見出語と、当該見出語に対応する説明情報を見出語単位に表したものを「見出語単位データ」という。
【００６５】
図３に示したように、辞書データ２００は、データ全体の１割の部分を参照部、残る９割の部分を主データ部として区分されている。以下、辞書データ２００の参照部を参照部２０２、主データ部を主データ部２０４という。
【００６６】
参照テーブル２０６は、後述する第１符号化プログラム２１０で参照されるテーブルであり、参照部に含まれている文字列（以下、適宜「参照文字列」という。）の位置を初期値として記憶しているテーブルである。図５に、参照テーブル２０６の一例を示す。参照テーブル２０６には、index番号（例えば、「１」）と、位置情報（例えば、「１０９」文字目）とを記憶している。尚、図５の括弧内の文字は、その位置情報から始まる２文字の参照文字列（例えば、「一部」）である。以下、その位置情報から始まる２文字の参照文字列を、その位置情報と同義に扱って説明する。
【００６７】
ＲＡＭ３０は、ＣＰＵ１０が実行する各種プログラムや、これらのプログラムの実行にかかるデータ等を一時的に保持するメモリ領域を備える。本実施形態では、圧縮後辞書データ３００を格納している。なお、ＲＡＭ３０は、図１におけるメモリ７に相当する。
【００６８】
圧縮後辞書データ３００は、ＣＰＵ１０が、第１辞書圧縮プログラム２０８に基づく第１辞書圧縮処理を実行することにより、辞書データ２００を符号化・圧縮した辞書データである。詳細は後述するが、参照部２０２が圧縮されて圧縮後参照部３０２となり、主データ部２０４が符号化（圧縮）されて圧縮後主データ部３０４となる。
【００６９】
ＲＯＭ４０は、各種初期設定、ハードウェアの検査、あるいは必要なプログラムのロードを行う為の初期プログラム（例えば、ＢＩＯＳ（Basic Input/Output System）等）を格納する。ＣＰＵ１０は、コンピュータ１の電源投入時においてこの初期プログラムを実行することにより、コンピュータ１の動作環境を設定する。
【００７０】
（２）  ＣＰＵ
ＣＰＵ１０は、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送を行う。具体的には、ＣＰＵ１０は、入力部５０から入力される操作信号に応じてハードディスク２０に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、表示制御信号を適宜表示部６０に出力して、処理結果を表示させる。
【００７１】
また、ＣＰＵ１０は、本実施の形態において、ハードディスク２０の第１辞書圧縮プログラム２０８に従った、第１辞書圧縮処理（図６参照）を実行すると共に、この第１辞書圧縮処理において、第１符号化プログラム２１０に従った第１符号化処理（図７参照）をサブルーチンとして実行する。
【００７２】
具体的には、ＣＰＵ１０は、第１辞書圧縮処理において、まず最初の文字列を通常の符号化方法で符号化する。ここで、通常の符号化方法とは、例えばハフマン符号による符号化方法等の何れかの公知の符号化方法にて、文字列を符号化することをいう。
【００７３】
続いて、ＣＰＵ１０は、直前に符号化した文字列を直前文字列として記憶し、符号化する文字列を符号化対象文字列として記憶する。そして、ＣＰＵ１０は、符号化対象文字列の直前に符号化された文字列（以下、適宜「直前文字列」という。）と符号化対象文字列とを結合した文字列を連結文字列として記憶する。そして、ＣＰＵ１０は、連結文字列が参照部２０２に含まれており、対象文字列が参照テーブル２０６の参照文字列に記憶されている場合には、第１符号化処理を実行し、それ以外の場合には、通常の符号化方法で符号化する。そして、ＣＰＵ１０は、主データ部２０４の総ての文字列を符号化したら、参照部２０２を圧縮して処理を終了する。
【００７４】
また、第１符号化処理において、ＣＰＵ１０は、各変数を初期化した後に、直前文字列と参照テーブル２０６に記憶されているｉ番目の参照文字列とを連結した文字列（以下、適宜「連結参照文字列」という。）が、参照部２０２に含まれているか否かを判定する。そして、当該連結文字列が、参照部２０２に含まれていると判定した場合には、ＣＰＵ１０は、参照文字列と符号化対象文字列が同一となる位置（順位）を用いて符号化対象文字列を符号化する。
【００７５】
（３）  入力部・表示部等
入力部５０は、仮名やアルファベット等の文字入力や機能選択等に必要なキー群を備えた入力装置であり、押下されたキーの信号をＣＰＵ１０に出力する。この入力部５０におけるキー入力により、処理の実行などを指示する制御命令の入力手段を実現する。なお、この入力部５０は、図１に示すキーボード５に相当するが、キーボードに限られる物ではなく、例えばマウス等であっても良い。
【００７６】
表示部６０は、ＣＰＵ１０から出力される表示信号に基づいて各種画面を表示するものであり、ＣＲＴ（Cathode Ray Tube）等により構成される。なお、この表示部６０は、図１に示すディスプレイ３に相当する。
【００７７】
バス７０は、ＣＰＵ１０からのデータ等の電気信号を通す線路であり、ＣＰＵ１０と、ハードディスク２０と、ＲＡＭ３０と、ＲＯＭ４０と、入力部５０と、表示部６０とをそれぞれ接続する信号線である。
【００７８】
［１．２．２  動作］
（１）第１辞書圧縮処理
図６は、第１辞書圧縮処理に係るコンピュータ１の動作を説明するためのフローチャートである。この第１辞書圧縮処理は、ＣＰＵ１０がハードディスク２０に記憶された第１辞書圧縮プログラム２０８を実行することによって実現される処理である。
【００７９】
まず、ＣＰＵ１０は、主データ部２０４の中から最初の文字列を選択し、通常の符号化方法で文字列を符号化する（ステップＡ１０）。次に、ＣＰＵ１０は、直前に符号化された文字列を直前文字列として記憶する（ステップＡ１２）。そして、ＣＰＵ１０は、符号化の対象としている文字列を符号化対象文字列として記憶する（ステップＡ１４）。つづいて、ＣＰＵ１０は、直前文字列と、対象文字列とを連結した文字列を連結文字列とし（ステップＡ１６）、この連結文字列が参照部２０２に含まれているか否かを判定する（ステップＡ１８）。
【００８０】
ここで、連結文字列が参照部２０２に含まれている場合には（ステップＡ１８；Ｙｅｓ）、ＣＰＵ１０は、符号化対象文字列が参照テーブル２０６に記憶されているか否かを判定する（ステップＡ２０）。そして、符号化対象文字列が参照テーブル２０６に記憶されている場合には（ステップＡ２０；Ｙｅｓ）、ＣＰＵ１０は、第１符号化処理を実行する（ステップＡ２２）。
【００８１】
他方、連結文字列が参照部２０２に含まれていない場合や（ステップＡ１８；Ｎｏ）、対象文字列が参照テーブル２０６に記憶されていない場合には（ステップＡ２０；Ｎｏ）、ＣＰＵ１０は、フラグを１として（ステップＡ２４）、通常の符号化処理を実行することにより、符号化対象文字列を符号化する（ステップＡ２６）。
【００８２】
次に、ＣＰＵ１０は、主データ部２０４の総ての文字列の符号化が終了していない場合には（ステップＡ２８；Ｎｏ）、次の文字列を読み出し（ステップＡ３０）、ステップＡ１２に処理を移行する。一方、主データ部２０４の総ての文字列の符号化が終了した場合には（ステップＡ２８；Ｙｅｓ）、ＣＰＵ１０は参照部２０２を圧縮して、圧縮後参照部３０２としてＲＡＭ３０に記憶する（ステップＡ３２）。
【００８３】
（２）第１符号化処理
次に、第１符号化処理について説明する。図７は、第１符号化処理に係る辞書圧縮装置１の動作を説明するためのフローチャートである。この第１符号化処理は、ＣＰＵ１０が、ＲＯＭ２０に記憶された第１符号化プログラム２１０を実行することによって実現される処理であり、第１辞書圧縮処理のステップＡ２２で実行される。
【００８４】
まず、ＣＰＵ１０は、フラグに「０」を、変数ｃｎｔの値に「０」を、変数ｉの値に「１」を代入して各変数の内容を初期化する（ステップＢ１０）。次に、ＣＰＵ１０は、直前文字列と参照テーブル２０６のｉ番目に記憶されている参照文字列とを連結した連結参照文字列が、参照部２０２に存在するか否かを判定する（ステップＢ１２）。ここで、連結参照文字列が参照部２０２に存在する場合には（ステップＢ１２；Ｙｅｓ）、ＣＰＵ１０は、変数ｃｎｔの値に「１」加算する（ステップＢ１４）。続いて、参照テーブル２０６のｉ番目の参照文字列が、符号化対象文字列と同一である場合には（ステップＢ１６；Ｙｅｓ）、ＣＰＵ１０は、変数ｃｎｔの値を変数ｍに代入する（ステップＢ１８）。
【００８５】
そして、ＣＰＵ１０は、参照テーブル２０６について総ての処理が終了していない場合には（ステップＢ２０；Ｎｏ）、変数ｉの値に「１」加算して（ステップＢ２２）、ステップＢ１２から処理を繰り返し実行する。他方、参照テーブル２０６について総ての処理が終了している場合には（ステップＢ２０；Ｙｅｓ）、ＣＰＵ１０は、変数ｍをｌｏｇ2ｃｎｔビットで表し、フラグを付加することで符号化対象文字列を符号化して処理を終了する（ステップＢ２４）。なお、ｌｏｇ2ｃｎｔビットで表す場合には、変数ｍが表現できる最小限の符号列（ビット数）で表すものとし、例えばｌｏｇ2ｃｎｔが小数となる場合には、切り上げて表現することとする。また、ｍをビットで表すときは「０」から表すものとする。例えば、変数ｍの値を２ビットで表現する場合、変数ｍの値が「１」のときはビット表現は「００」、同様に変数ｍの値が「２」のときはビット表現は「０１」、変数ｍの値が「３」のときはビット表現は「１０」と表していくものとする。
【００８６】
［１．２．３  具体例］
以下、図を用いて具体的に説明する。図４の辞書データ２００に含まれる見出語「空電」の見出語データを符号化する場合を考える。また、説明情報の「雷に」及び「より」はそれぞれ符号化されているものとして以下説明する。
【００８７】
まず、ＣＰＵ１０は、直前に符号化した文字列「より」を直前文字列として記憶する（図６のステップＡ１２）。また、ＣＰＵ１０は、これから符号化する文字列「発生」を対象文字列として記憶する（ステップＡ１４）。そして、ＣＰＵ１０は、直前文字列と対象文字列とを結合した文字列「より発生」を連結文字列として記憶する（ステップＡ１６）。
【００８８】
そして、ＣＰＵ１０は、連結文字列「より発生」が参照部２０２に含まれており（ステップＡ１８；Ｙｅｓ）、符号化対象文字列「発生」が参照テーブル２０６に記憶されていることから（ステップＡ２０；Ｙｅｓ）、第１符号化処理を実行する（ステップＡ２２）。
【００８９】
続いて、直前文字列「より」と、参照テーブル２０６の１番目の参照文字列「一部」とを連結した連結参照文字列「より一部」が参照部２０２に存在しているため、ＣＰＵ１０は、変数ｃｎｔの値に「１」加算する（図７のステップＢ１４）。続いて、参照テーブルの１番目の参照文字列「一部」と、符号化対象文字列「発生」は同じでないことから（ステップＢ１６；Ｎｏ）、ＣＰＵ１０は、変数ｉの値に「１」加算し（ステップＢ２２）、参照テーブル２０６の２番目の参照文字列「状態」を読み出す。続いて、ＣＰＵ１０は、「より状態」が参照部２０２に存在しないことから、続けて変数ｉの値に「１」加算する。
【００９０】
そして、ＣＰＵ１０は、参照テーブル２０６の３番目の参照文字列「発生」を用いて連結参照文字列「より発生」が参照部２０２に存在すると判定する（ステップＢ１２；Ｙｅｓ）。そして、変数ｃｎｔの値に「１」加算する。続けて、参照文字列「発生」と、符号化対象文字列「発生」が同じであることから（ステップＢ１６；Ｙｅｓ）、ＣＰＵ１０は、変数ｍに変数ｃｎｔの値「２」を代入する（ステップＢ１８）。
【００９１】
同様に、ＣＰＵ１０は処理を繰り返し実行すると、参照テーブル２０６の総ての参照文字列について処理が終了すると、変数ｃｎｔの値が「４」となる。従って、変数ｍの値「２」をｌｏｇ2４ビットで符号化すると、０番目から数えて２つ目となる「０１」とする。そして、参照テーブル２０６を利用して符号化されたことを示すフラグ「０」を付加して、符号化対象文字列「発生」は、「００１」と符号化される。
【００９２】
図８（ａ）は、文字列を符号化した際の様子を表した図である。文字列「発生」は、圧縮されていることを示すフラグ「０」と、変数ｍの値を符号化した「０１」から表現されている。従って、「発生」を無圧縮でそのまま表現すると「３２」ビットの符号列が必要となるが、第１符号化処理によって「３」ビットで表現されることにより、「３２」ビットが「３」ビットに圧縮される。
【００９３】
また、図８（ｂ）に示す文字列「費用」を符号化する場合について考える。この場合、直前文字列「する」と、参照テーブル２０６の参照文字列を連結した連結参照文字列のうち、参照部２０２に存在しているのは「する費用」の一つしかない。従って、変数ｃｎｔの値は「１」となり、変数ｍを符号化する為には、ｌｏｇ2１ビット（０ビット）分となる。従って、ＣＰＵ１０が文字列「費用」を符号化する場合には、フラグ「０」を用いるだけで十分となる。この場合、「費用」を無圧縮でそのまま表現すると「３２」ビット必要であるが、第１符号化処理によって符号化することにより「１」ビットで表現することができ、更に効率良く圧縮することができる。
【００９４】
以上のように、第１の実施の形態における辞書圧縮装置（コンピュータ）によれば、参照テーブルを利用することにより、主データ部を効率良く圧縮することが可能となり、辞書データ全体の圧縮効率を高めることができる。
【００９５】
なお、本実施の形態においては、参照テーブルを１つ記憶するものとして説明したが、これに限られるものではなく、例えば複数の参照テーブルを記憶していることとしても良い。具体的には、符号化する際に、フラグと、複数ある参照テーブルの中でどの参照テーブルを用いたかを示す番号と、変数ｍの値を符号化したものとからなる符号列を生成すればよい。この場合、参照テーブルを複数持つことにより、対象文字列が参照テーブルに存在している可能性が高くなり、より効率よく圧縮を実行することができる。しかし、本実施の形態のように参照テーブルが１つの場合に比べて、参照テーブルを多くするほど符号列が長くなり、さらに参照テーブル分の記憶容量が必要となるため、全体として圧縮効率が低下してしまう場合がある。従って、最も記憶容量が少なくなるように、適宜参照テーブルの数を選択すると良い。
【００９６】
また、本実施の形態においては、最初の１ビットを参照部及び参照テーブルを利用して符号化したのか否かを示すフラグとしたが、このフラグを用いずに実現しても良いことは勿論である。例えば、参照部及び参照テーブルを用いて符号化を行った文字列と、参照部及び参照テーブルを用いずに符号化を行った文字列とを含めて、同一のハフマン符号方式でさらなる符号化を行う。この場合、ハフマン符号によって一意にコードが決定されるため、フラグのビットは不要となり、より効率的な符号化が可能となる。
【００９７】
［１．３  電子辞書装置］
［１．３．１  内部構成］
続いて、コンピュータ１によって生成された圧縮後辞書データを記憶した電子辞書装置１００について説明する。図９は、電子辞書装置１００の構成を示すブロック図である。同図に示すように、電子辞書装置１００は、ＣＰＵ１１０と、ＲＯＭ１２０と、ＲＡＭ１３０と、ＥＥＰＲＯＭ１４０と、入力部１５０と、表示部１６０とを備えて構成されており、バス１７０によって接続されている。
【００９８】
（１）記憶領域
ＲＯＭ１２０は、各種初期設定、ハードウェアの検査、あるいは必要なプログラムのロード等を行うための初期プログラムを格納する。ＣＰＵ１１０は、電子辞書装置１００の電源投入時においてこの初期プログラムを実行することにより、電子辞書装置１００の動作環境を設定する。
【００９９】
また、ＲＯＭ１２０は、メニュー表示処理、各種設定処理、各種検索処理等の電子辞書装置１００の動作に係る各種プログラムや、電子辞書装置１００の備える種々の機能を実現するためのプログラム等を格納すると共に、参照テーブル１２０２と、辞書伸張プログラム１２０４と、第１復号プログラム１２０６とを備えている。ここで、参照テーブル１２０２は、図２のコンピュータ１における参照テーブル２０６と同一のテーブルである。
【０１００】
ＲＡＭ１３０は、ＣＰＵ１１０が実行する各種プログラムや、これらのプログラムの実行に係るデータ等を一時的に保持するメモリ領域を備える。本実施の形態では、参照部伸張領域１３００と、検索テーブル１３０４とを備えている。なお、ＲＡＭ１３０は、図１のメモリ１０７に相当する。
【０１０１】
参照部伸張領域１３００は、辞書伸張処理において、圧縮後辞書データ１４００に含まれる圧縮後参照部１４０２を伸張するための領域である。圧縮後参照部１４０２から、圧縮前の参照部となる参照部１３０２が伸張されて、参照部伸張領域１３００に記憶される。
【０１０２】
検索テーブル１３０４は、第１復号処理で利用されるテーブルである。詳細は後述するが、図１０に示すように、参照テーブル１２０２から抽出した文字列を蓄積記憶するための領域である。
【０１０３】
ＥＥＰＲＯＭ１４０は、電子辞書装置１００において、ＣＰＵ１１０が参照する各種辞書データや、各種設定等を電源オフの後であっても記憶するためのメモリである。本実施の形態では、圧縮後辞書データ１４００を備えている。ここで、圧縮後辞書データ１４００は、コンピュータ１で生成された図２の圧縮後辞書データ３００と同一のデータである。
【０１０４】
（２）ＣＰＵ
ＣＰＵ１１０は、入力される指示に応じて所定のプログラムに基づいた処理を実行し、各機能部への指示やデータの転送を行う。具体的には、ＣＰＵ１１０は、入力部１５０から入力される操作信号に応じてＲＯＭ１２０に格納されたプログラムを読み出し、当該プログラムに従って処理を実行する。そして、ＣＰＵ１１０は、表示制御信号を適宜表示部１６０に出力して、処理結果を表示させる。
【０１０５】
また、ＣＰＵ１１０は、本実施の形態において、ＲＯＭ１２０に記憶された辞書伸張プログラム１２０４に従った、辞書伸張処理（図１１参照）を実行すると共に、この辞書伸張処理において、第１復号プログラム１２０６を読み出して第１復号処理（図２参照）をサブルーチンとして実行する。
【０１０６】
具体的には、ＣＰＵ１１０は、辞書伸張処理において、圧縮後辞書データ１４００の圧縮後参照部１４０２を伸張することで、圧縮前の参照部１３０２を得る。続いて、入力文字が入力されると、ＣＰＵ１１０は、入力文字に対応する見出語を検索する。そして、ＣＰＵ１１０は、対応する見出語が圧縮後主データ部１４０４に存在する場合には、第１復号処理を実行し、対応する見出語が圧縮後主データ部１４０４に存在しない場合には、参照部１３０２から説明情報を抽出する。そして、ＣＰＵ１１０は、見出語と説明情報とを表示する。
【０１０７】
また、第１復号処理において、ＣＰＵ１１０は、符号列の先頭から１単位分の符号列を復号する。ここで、１単位分の符号列とは、例えばハフマン符号化を行うことにより、文字列が符号化されている場合において、一意に復号可能な符号列のことをいう。そして、ＣＰＵ１１０は、直前に復号した文字列を直前文字列として記憶し、復号対象位置を次のビット（符号）に移動させる。そして、復号対象位置のビットをフラグとみなし、そのビットが「０」である場合には、ＣＰＵ１１０は、直前文字列と参照テーブル１２０２の参照文字列とを連結した連結参照文字列が参照部１３０２に記憶されているか否かを判定する。ここで、参照部１３０２に記憶されている場合には、ＣＰＵ１１０は、参照テーブル１２０２に記憶されている当該文字列を検索テーブル１３０４に蓄積記憶する。そして、ＣＰＵ１１０は、検索テーブル１３０４に記憶されている文字列を用いて、符号列を復号する。
【０１０８】
（３）入表示部
入力部１５０は、仮名やアルファベット等の文字入力や機能選択等に必要なキー群を備えた入力装置であり、押下されたキーの信号をＣＰＵ１１０に出力する。この入力部１５０におけるキー入力により、入力文字の入力、辞書モードの選択、検索実行指示、ジャンプ機能の開始等を指示入力する入力手段を実現する。なお、この入力部１５０は、図１のキー群１０５に相当するが、キー群１０５に限られるわけではなく、タッチパネル等であってもよい。
【０１０９】
表示部１６０は、ＣＰＵ１１０から入力される表示信号に基づいて各種画面を表示するものであり、ＬＣＤ等により構成される。なお、この表示部１６０は、図１に示すディスプレイ１０３に相当する。
【０１１０】
バス１７０は、ＣＰＵ１１０からのデータ等の電気信号を通す線路であり、ＣＰＵ１１０と、ＲＯＭ１２０と、ＲＡＭ１３０と、ＥＥＰＲＯＭ１４０と、入力部１５０と、表示部１６０とをそれぞれ接続する信号線である。
【０１１１】
［１．３．２  動作］
（１）辞書伸張処理
図１１は、辞書伸張処理に係る電子辞書装置１００の動作を説明するためのフローチャートである。この辞書伸張処理は、ＣＰＵ１１０がＲＯＭ１２０に記憶された辞書伸張プログラム１２０４を実行することによって実現される処理である。
【０１１２】
まず、ＣＰＵ１１０は、参照部伸張領域１３００に、圧縮後参照部１４０２から参照部１３０２を伸張する（ステップＣ１０）。次に、ＣＰＵ１１０は、入力文字が入力されると（ステップＣ１２）、入力文字に対応する見出語を検索する（ステップＣ１４）。ここで、ＣＰＵ１１０は、検索した見出語が圧縮後主データ部１４０４に含まれている場合には（ステップＣ１６；Ｙｅｓ）、第１復号処理を実行する（ステップＣ１８）。また、検索した見出語が、参照部１３０２に含まれている場合には（ステップＣ１６；Ｎｏ）、参照部１３０２から説明情報を抽出する（ステップＣ２０）。そして、ＣＰＵ１０は、見出語と説明情報とを表示部１６０に表示して終了する（ステップＣ２２）。
【０１１３】
（２）第１復号処理
図１２は、第１復号処理にかかる電子辞書装置１００の動作を説明するためのフローチャートである、この第１復号処理は、ＣＰＵ１１０がＲＯＭ１２０に記憶された第１復号プログラム１２０６を実行することによって実現される処理である。
【０１１４】
まず、ＣＰＵ１１０は、符号列の先頭から１単位分の符号列を復号する（ステップＤ１０）。次に、ＣＰＵ１１０は、直前に復号した文字列を、直前文字列として記憶する（ステップＤ１２）。続いて、ＣＰＵ１１０は、復号対象位置を次の符号（ビット）に移動し（ステップＤ１４）、復号対象位置の符号となるフラグが「０」であるか否かを判定する（ステップＤ１６）。ここで、フラグが０以外である場合には（ステップＤ１６；Ｎｏ）、ＣＰＵ１１０は、通常の復号を実行して、符号列から文字列を復号する（ステップＤ３８）。
【０１１５】
一方、フラグが「０」の場合には（ステップＤ１６；Ｙｅｓ）、変数ｃｎｔの値に「０」を、変数ｉの値に「１」を代入する（ステップＤ１８）。次に、直前文字列と、参照テーブルのｉ番目の参照文字列とを結合した連結参照文字列が、参照部１３０２に存在している場合には（ステップＤ２０；Ｙｅｓ）、ＣＰＵ１１０は、変数ｃｎｔの値に「１」加算する（ステップＤ２２）。さらに、ＣＰＵ１１０は、参照テーブル１２０２のｉ番目の参照文字列を、検索テーブル１３０４に蓄積記憶する（ステップＤ２４）。そして、ＣＰＵ１１０は、参照テーブル１２０２の参照文字列について処理が終了していない場合には（ステップＤ２６；Ｎｏ）、変数ｉの値に「１」加算して（ステップＤ２８）、ステップＤ２０から再び処理を実行する。
【０１１６】
ここで、参照テーブル１２０２の参照文字列について、総て処理が終了した場合には（ステップＤ２６；Ｙｅｓ）、ＣＰＵ１１０は、変数ｃｎｔの値が「１」か否かを判定する（ステップＤ３０）。ここで、変数ｃｎｔの値が「１」である場合には（ステップＤ３０；Ｙｅｓ）、ＣＰＵ１１０は検索テーブル１３０４に記憶されている参照文字列の１番目を複写して、符号列を復号する（ステップＤ３６）。
【０１１７】
また、変数ｃｎｔの値が「１」で無い場合には（ステップＤ３０；Ｎｏ）、ＣＰＵ１１０は、復号対象位置を１ビットずらした位置からｌｏｇ2ｃｎｔビット分の符号列から表される値を変数ｍに代入する（ステップＤ３２）。そして、検索テーブル１３０４に蓄積記憶された文字列のうち、ｍ番目の文字列を複写することにより復号対象符号列を復号する（ステップＤ３４）。そして、見出語単位データに含まれる全符号列について復号が終了していない場合には（ステップＤ４０；Ｎｏ）、ＣＰＵ１１０は、ステップＤ１２から再び処理を実行する。他方、見出語単位データに含まれる全符号列について復号が終了した場合には（ステップＤ４０；Ｙｅｓ）、ＣＰＵ１１０は、第１復号処理を終了する。
【０１１８】
［１．３．３  具体例］
ここで、上述した復号処理は、図８に示した符号化処理を、逆の手順で実行することによって実現される処理である。図８を用いて具体的に説明する。まず図８（ａ）の場合において、ＣＰＵ１１０は直前に復号された文字列「より」を直前文字列として記憶する（図１２のステップＤ１２）。続いて、復号対象位置を次のビットに移動すると「０」であることから（ステップＤ１６；Ｙｅｓ）、ＣＰＵ１１０は直前文字列と参照テーブルのｉ番目の参照文字列とを連結した連結参照文字列が、参照部１３０２に存在するか否か判定する（ステップＤ２０）。図５を参照すると「より」との組合せで参照部１３０２に存在する文字列は「一部」「発生」「確率」「入力」の４つであるから、この４つが検索テーブル１３０４に蓄積記憶される（ステップＤ２４）。さらに、変数ｃｎｔの値は「４」と記憶されている。続いて、ＣＰＵ１０は、ｌｏｇ2４＝２ビット分の符号列「０１」を読み込み、符号列「０１」から表される値「２」を変数ｍに代入する（ステップＤ３４）。そして、ＣＰＵ１０は、検索テーブル１３０４に記憶された文字列のうち、２番目の文字列「発生」を複写して復号する（ステップＤ３４）。
【０１１９】
このように、第１の実施の形態によれば、参照テーブルを利用することにより主データ部を辞書型符号化方式で効率よく圧縮することができる。従って、辞書データ全体としてより多くの見出語データを記憶させることが可能となる。
【０１２０】
〔第２の実施の形態〕
次に、本発明を適用した第２の実施の形態について説明する。本実施の形態は、第１実施の形態において、圧縮後主データ部に含まれる符号列の開始位置を表す符号列を、可変長符号とすることにより、より効率的に符号化を行うものである。
【０１２１】
［２．１  辞書データ圧縮装置］
［２．１．１  構成］
第２の実施の形態におけるコンピュータの構成は、第１の実施の形態において図２に示して説明したコンピュータ１の構成において、ハードディスク２０を図１３に示すハードディスク２０ｂに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０１２２】
図１３を参照してハードディスク２０ｂの構成について説明する。図１３に示すように、ハードディスク２０ｂは、辞書データ２００と、参照頻度テーブル２０６ｂと、第１辞書圧縮プログラム２０８と、第２符号化プログラム２１０ｂと、可変長符号決定テーブル２２０とを記憶している。
【０１２３】
参照頻度テーブル２０６ｂは、第１の実施の形態における参照テーブル２０６において、文字列が参照部において記憶されている頻度の情報が付加されるテーブルである。図１４に参照頻度テーブル２０６ｂのデータ構成の一例を示す。図に示すように、参照頻度テーブル２０６ｂは、インデックス（例えば、「１」）と、位置情報（例えば、１０９（一部））と、頻度情報（例えば、「４８」）とを記憶している。ここで、頻度情報とは位置情報に対応する参照文字列が、何回辞書データ２００に記憶されているかを示すものである。頻度情報は、第２符号化処理で算出され、参照頻度テーブル２０６ｂに記憶されるものである。
【０１２４】
第２符号化プログラム２１０ｂは、本実施の形態における第２符号化処理を実現するためのプログラムであり、ＣＰＵ１０がこの第２符号化プログラム２１０ｂを実行することで、第２符号化処理が実現される。具体的には、ＣＰＵ１０は、頻度情報を算出してから、直前文字列と参照頻度テーブル２０６ｂに記憶されている参照文字列とを連結した連結参照文字列が、参照部２０２に含まれているか否かを判定する。そして、連結参照文字列が参照部２０２に含まれている場合には、ＣＰＵ１０は参照頻度テーブル２０６ｂの何番目が符号化対象文字列であるかを記憶する。そして、ＣＰＵ１０は、頻度情報から分散度を算出し、算出された分散度に応じて符号列パターンを決定し、符号化対象文字列を符号化する。
【０１２５】
可変長符号決定テーブル２２０は、ＣＰＵ１０が可変長符号を決定する際に参照するテーブルである。図１５に示すように、可変長符号決定テーブル２２０には、分散度に応じてそれぞれ符号列パターンを記憶しているテーブルである。
【０１２６】
［２．１．２  動作］
次に、第２の実施の形態におけるコンピュータ１の動作について図を参照して説明する。図１６は、第２符号化処理に係るコンピュータ１の動作を説明するためのフローチャートである。この第２符号化処理は、ハードディスク２０ｂの第１辞書圧縮プログラム２０８の実行中に呼び出される処理である。ＣＰＵ１０は、図６の第１辞書圧縮処理におけるステップＡ２２における、第１符号化処理に代えて、本実施の形態の第２符号化処理を呼び出して実行する。また、図１６の第２符号化処理におけるステップＥ１０〜ステップＥ２２迄の処理は、図７の第１符号化処理におけるステップＢ１０〜ステップＢ２２の処理において、参照テーブル２０６に換えて参照頻度テーブル２０６ｂを参照した場合と同様の処理であるため、その説明の詳細を省略する。
【０１２７】
まず、ＣＰＵ１０は、参照頻度テーブル２０６ｂに記憶されている参照文字列夫々の頻度情報を算出する（ステップＥ０８）。具体的には、ＣＰＵ１０は、一の参照文字列を選択し、当該参照文字列が辞書データ２００にいくつ記憶されているかを算出し、参照頻度テーブル２０６ｂに追記する。続けて、ＣＰＵ１０は、直前文字列と、参照頻度テーブル２０６ｂのｉ番目に記憶されている参照文字列とを連結した連結参照文字列が、参照部２０２に存在する場合には、変数ｃｎｔの値に「１」加算する。続いて、参照頻度テーブル２０６ｂのｉ番目の参照文字列が符号化対象文字列である場合には、ＣＰＵ１０は、変数ｃｎｔの値を変数ｍに代入する。そして、参照頻度テーブル２０６ｂに記憶されている参照文字列がまだ存在する場合には、ＣＰＵ１０は、変数ｉの値に「１」加算し、ステップＥ１２から繰り返し処理を実行する（ステップＥ１０〜Ｅ２２）。
【０１２８】
続いてＣＰＵ１０は、分散度に応じて符号列パターンを決定し（ステップＥ２４）、変数ｍを決定された符号列パターンを利用して符号化する（ステップＥ２６）。
【０１２９】
具体的には、まず参照部２０２に含まれていた連結参照文字列の参照文字列に対応する頻度情報を参照頻度テーブル２０６ｂから読み出し、相加平均及び相乗平均を算出する。そして、算出された頻度情報の相加平均を相乗平均で除した値を分散度とする。
【０１３０】
続いて、ＣＰＵ１０は、算出された分散度に応じて符号化を行う。ＣＰＵ１０は、図１５の可変長符号決定テーブル２２０から符号列パターンを決定する。例えば、図１５を参照すると分散度が５以上のパターン１の場合には、可変長符号列として、１番目から「０」、「０１」、「００１」…が用いられる。また、分散度が２以上５未満の場合には可変長符号列として「１０」「１１」「０１００」…が、分散度が２未満の場合には可変長符号列として「１００」「１０１」「１１０」…が用いられる。そして、可変長符号決定テーブル２２０に記憶されている符号列に基づいて、符号化対象文字列が符号化される。
【０１３１】
［２．１．３  具体例］
ここで、図を用いて第２符号化処理について具体的に説明する。図１７は、主データ部２０４に含まれる「発生」を符号化する場合について説明するための図である。ここで、「…より」までは符号化が完了しているものとして説明する。
【０１３２】
図１４の参照頻度テーブル２０６ｂを参照しつつ、ＣＰＵ１０が第２符号化処理のステップＥ１０〜Ｅ２２を実行すると、変数ｃｎｔには「４」が、変数ｍには「２」が記憶される。
【０１３３】
続いて、ＣＰＵ１０は、分散度を算出する。ここでは、分散度を算出するために使用する頻度情報は、参照部２０２に含まれている連結参照文字列に対応する参照文字列の頻度情報を選択するものとする。すると、頻度情報「８５」「３２」「２」「４」が選択され、ＣＰＵ１０は相乗平均がおよそ「12.15」、相加平均が「30.75」と算出する。従って、ＣＰＵ１０は、分散度として相加平均を相乗平均で除した値であるおよそ「2.5」を算出する。
【０１３４】
ここで、図１５の可変長符号決定テーブル２２０を参照すると、分散度が「2.5」である場合は、パターン２と決定される。従って、変数ｍの値「２」はパターン２の２番目の符号列である「１１」となる。従って、フラグ「０」と、符号列「１１」とを連結した符号列「０１１」を用いて符号化対象文字列「発生」を符号化する。
【０１３５】
［２．２  電子辞書装置］
［２．２．１  構成］
続いて、コンピュータ１によって生成された圧縮後辞書データを記憶した電子辞書装置１００について説明する。第２の実施の形態における電子辞書装置の構成は、第１の実施の形態において図９に示して説明した電子辞書装置１００の構成において、ＲＯＭ１２０を図１８に示すＲＯＭ１２０ｂに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０１３６】
図１８を参照して、ＲＯＭ１２０ｂの構成について説明する。図１８に示すように、ＲＯＭ１２０ｂは、参照頻度テーブル１２０２ｂと、辞書伸張プログラム１２０４と、第２復号プログラム１２０６ｂと、可変長符号決定テーブル１２２０とを記憶している。
【０１３７】
参照頻度テーブル１２０２ｂは、図１３に示したコンピュータ１のハードディスク２０ｂに記憶された参照頻度テーブル２０６ｂと同様のテーブルであり、図１４の様に、indexと、位置情報と、頻度情報とを対応づけて記憶しているテーブルである。また、頻度情報はコンピュータ１において算出された頻度情報（参照頻度テーブル２０６ｂに記憶された値）が既に記憶されている。また、可変長符号決定テーブル１２２０は、図１３に示したコンピュータ１のハードディスク２０ｂに記憶された可変長符号決定テーブル２２０と同様のテーブルである。
【０１３８】
第２復号プログラム１２０６ｂは、本実施の形態における第２復号処理を実現するためのプログラムであり、ＣＰＵ１１０がこの第２復号プログラム１２０６ｂを実行することで、第２復号処理が実現される。まず、ＣＰＵ１１０は、符号列の先頭から１単位分の符号列を復号する。そして、ＣＰＵ１１０は、直前に復号した文字列を直前文字列として記憶し、復号対象位置を次のビットに移動させる。続いて、ＣＰＵ１１０は、復号対象位置のビット（フラグ）が「０」である場合には変数の値を初期化して、直前文字列とｉ番目の参照文字列とを連結した連結参照文字列が参照部１３０２に存在するか否か判定する。ここで、ＣＰＵ１１０は、連結参照文字列が参照部１３０２に存在すると判定した場合には、変数ｃｎｔの値に「１」加算し、参照頻度テーブル１２０２ｂの参照文字列を検索テーブル１３０４に蓄積記憶する。そして、参照頻度テーブル１２０２ｂの参照文字列の総てについて処理が終了した場合には、ＣＰＵ１１０は変数ｃｎｔの値が「１」か否かを判定する。ここで、変数ｃｎｔの値が「１」以外の場合には、頻度情報から分散度を算出し、分散度に対応する符号列パターンを決定する。そして、ＣＰＵ１１０は符号列パターンと合致する符号列を読み出してｍとし、検索テーブル１３０４のｍ番目の文字列を複写することにより復号対象符号列を復号する。他方、変数ｃｎｔの値が「１」の場合には、検索テーブル１３０４に記憶された１番目の文字列を複写して復号対象文字列を復号する。
【０１３９】
［２．２．２  動作］
次に、第２の実施の形態における電子辞書装置１００の動作について図を参照して説明する。図１９は、第２復号処理に係る電子辞書装置１００の動作を説明するためのフローチャートである。この第２復号処理は、ＣＰＵ１１０が、辞書伸張処理のステップＣ１８において第１復号処理を実行する代わりに、ＲＯＭ１２０ｂの第２復号プログラム１２０６ｂを実行することによって実現される処理である。また、図１９の第２復号処理におけるステップＦ１０〜ステップＦ３０迄の処理は、図１２の第１復号処理におけるステップＤ１０〜ステップＤ３０の処理において、参照テーブル１２０２に換えて参照頻度テーブル１２０２ｂを参照した場合と同様の処理であるため、その詳細な説明を省略する。
【０１４０】
まず、ＣＰＵ１１０は、復号すべき符号列の先頭から１単位分の符号列を復号する（ステップＦ１０）。次に、ＣＰＵ１１０は、直前に復号した文字列を、直前文字列として記憶し、復号対象位置を次のビット（復号対象符号列の先頭）に移動する（ステップＦ１２、Ｆ１４）。そして、復号対象位置のビット（復号対象符号列のフラグ）が「０」である場合には（ステップＦ１６；Ｙｅｓ）、ＣＰＵ１１０は、通常の復号を実行することにより復号対象符号列から文字列を復号する（ステップＦ４０）。
【０１４１】
一方、復号対象符号列のフラグが「０」の場合には（ステップＦ１６；Ｙｅｓ）、ＣＰＵ１１０は直前文字列と参照頻度テーブル１２０２ｂに記憶された参照文字列とを連結した連結参照文字列の中で、参照部１３０２に存在する連結参照文字列に対応する参照文字列を検索テーブル１３０４に蓄積記憶する（ステップＦ２０〜Ｆ２８）。
【０１４２】
続いて、ＣＰＵ１１０は、変数ｃｎｔの値が「１」以外の場合には（ステップＦ３０；Ｙｅｓ）、参照頻度テーブル１２０２ｂに記憶されている頻度情報から分散度を算出し、算出された分散度に応じて符号列パターンを決定する（ステップＦ３２）。
【０１４３】
具体的には、例えば検索テーブル１３０４に記憶されている文字列に対応する頻度情報を参照頻度テーブル１２０２ｂから選択する。そして、選択された頻度情報から相加平均と相乗平均を算出する。そして、算出された相加平均を相乗平均で除した数を分散度とする。そして、算出された分散度から、符号列パターンを決定する。
【０１４４】
続いて、ＣＰＵ１１０は、符号列パターンに対応する符号列から変数ｍを決定する（ステップＦ３４）。そして、ＣＰＵ１１０は、検索テーブル１３０４のｍ番目の文字列を複写して、復号対象符号列を復号する（ステップＦ３６）。
【０１４５】
他方、変数ｃｎｔの値が「１」の場合には（ステップＦ３０；Ｙｅｓ）、ＣＰＵ１１０は、検索テーブル１３０４に記憶された１番目の文字列を複写して復号する（ステップＦ３８）。
【０１４６】
そして、ＣＰＵ１１０は、見出語単位データに含まれる符号列について総て復号した場合には（ステップＦ４２；Ｙｅｓ）、第２復号処理を終了する。他方、見出語単位データの符号列でまだ復号されていない符号が残っている場合には（ステップＦ４２；Ｎｏ）、ステップＦ１２から繰り返し処理を実行する。
【０１４７】
［２．２．３  具体例］
ここで、図を用いて第２復号処理について具体的に説明する。第２復号処理は、図１７に示した符号化の処理を逆の手順で実行することによって実現される処理である。
【０１４８】
図１７を用いて具体的に説明すると、ＣＰＵ１１０は、直前文字列として「より」を記憶する（図１９のステップＦ１２）。続いて、復号対象位置のビット（フラグ）は「０」であることから、ＣＰＵ１１０は、直前文字列「より」と、参照頻度テーブル１２０２ｂの参照文字列が参照部１３０２に記憶されているか否かを判定する（ステップＦ２０）。ここで、図１４の参照頻度テーブル１２０２ｂを参照すると、直前文字列と、「一部」「発生」「確率」「入力」とを連結した連結参照文字列が参照部１３０２に存在しているため、検索テーブル１３０４に蓄積記憶される（ステップＦ２４）。
【０１４９】
続いて、ＣＰＵ１１０は、検索テーブル１３０４に記憶された文字列の頻度情報を参照頻度テーブル１２０２ｂから選択し、分散度を算出する。ここで、検索テーブル１３０４に記憶された文字列に対応する頻度情報の相加平均及び相乗平均を算出して相加平均を相乗平均で除すると、分散度は「2.5」として算出される。続いて、ＣＰＵ１１０は、分散度「2.5」に対応した符号列パターンを可変長符号決定テーブル１２２０からパターン２と決定する（ステップＦ３２）。
【０１５０】
続いて、ＣＰＵ１１０は、符号列「１１」に対応する符号列を図１５のテーブルを参照すると、２番目に記憶されていると判定し、変数ｍの値を「２」とする（ステップＦ３４）。そして、検索テーブル１３０４に記憶されている文字列のうち２番目となる「発生」を複写して、文字列を復号する（ステップＦ３６）。
【０１５１】
このように、第２の実施の形態によれば、主データ部を圧縮する場合に、文字列の出現頻度等に基づいて可変長符号を使用することによって、効率よく符号化・復号を行うことが可能となる。従って、電子辞書装置により多くの見出語データを記憶させることが可能となる。
【０１５２】
なお、本実施の形態における分散度の算出方法、頻度情報の算出方法、可変長符号の決定方法については、一意に限定されるものではなく、他の公知である何れかの方法を用いても良いことは勿論である。この場合、辞書圧縮装置（コンピュータ）と、電子辞書装置が同じ方法を用いる必要がある。
【０１５３】
なお、本実施の形態においては、分散度を算出するために用いた頻度情報は、参照部２０２に含まれている連結参照文字列に対応する参照文字列の頻度情報に基づいて算出したが、これに限られるわけではなく、参照頻度テーブル２０６ｂに記憶されている頻度情報総てに基づいて算出することとしても良い。この場合は、最初に予め分散度を算出することにより符号化・復号する度に分散度を算出する必要がなくなり、符号化・復号処理を高速に行うことが可能となる。
【０１５４】
また、本実施の形態においては、分散度に応じて記憶されている符号列パターンから符号化・復号を行うこととして説明したが、符号列パターンを記憶していなくても良い。この場合、算出された分散度に応じて、符号列にprefix（接頭辞）を付加することにより符号列を決定することができる。この場合、辞書圧縮装置（コンピュータ）側と、電子辞書装置側で同様のprefixを付加する処理を行うこととしておくことにより実現できる。この場合、可変長符号決定テーブルが不要となる分だけ、記憶容量を少なくすることが可能となる。
【０１５５】
〔第３の実施の形態〕
次に、本発明を適用した第３の実施の形態について説明する。本実施の形態は、参照部に記憶されている順位を利用することにより、効率の良い符号化を行うものである。
【０１５６】
［３．１  辞書データ圧縮装置］
［３．１．１  構成］
第３の実施の形態におけるコンピュータの構成は、第１の実施の形態において図２に示して説明したコンピュータ１の構成において、ハードディスク２０を図２０に示すハードディスク２０ｃに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０１５７】
図２０を参照してハードディスク２０ｃの構成について説明する。図２０に示すように、ハードディスク２０ｃは、辞書データ２００と、第２辞書圧縮プログラム２０８ｃと、第３符号化プログラム２１０ｃとを記憶している。
【０１５８】
第２辞書圧縮プログラム２０８ｃは、本実施の形態における第２辞書圧縮処理を実現するためのプログラムであり、ＣＰＵ１０がこの第２辞書圧縮プログラム２０８ｃを実行することで、第２辞書圧縮処理が実現される。まず、ＣＰＵ１０は、最初の文字列を通常の符号化した後に、直前に符号化した文字列を直前文字列として記憶する。そして、符号化する文字列を符号化対象文字列として記憶し、直前文字列と対象文字列とを連結したものを連結文字列として記憶する。そして、ＣＰＵ１０は、連結文字列が参照部２０２に記憶されていない場合には通常の符号化で符号化する。他方、ＣＰＵ１０は、連結文字列が参照部２０２に記憶されている場合には、第３符号化処理を実行する。そして、ＣＰＵ１０は、主データ部２０４において総ての処理を終了した場合には、参照部２０２を圧縮し、処理を終了する。
【０１５９】
第３符号化プログラム２１０ｃは、本実施の形態おける第３符号化処理を実現するためのプログラムであり、ＣＰＵ１０がこの第３符号化プログラム２１０ｃを実行することで、第３符号化処理が実現される。まず、ＣＰＵ１０は、参照部２０２から、直前文字列と、符号化対象文字列と同一の文字列長である適合文字列とを連結した連結適合文字列を抽出する。そして、符号化対象文字列が、連結適合文字列の中の適合文字列の何番目にあるかを抽出して、符号化する。なお、説明の便宜上ＣＰＵ１０は、符号化対象文字列は２文字ずつ符号化し、対応する適合文字列の文字列長は２文字として説明するが、これに限定されるものではなく、例えば３文字や４文字等でも良いし、可変長とすることとしても良いことは勿論である。
【０１６０】
［３．１．２  動作］
次に、第３の実施の形態におけるコンピュータ１の動作について図を参照して説明する。図２１は、第２辞書圧縮処理に係るコンピュータ１の動作を説明するためのフローチャートである。また、第２辞書圧縮処理におけるステップＧ１０からステップＧ１８までの処理は、図６に示した第１辞書圧縮処理におけるステップＡ１０からステップＡ１８までの処理と同一であるため、その詳細な説明を省略する。
【０１６１】
まず、ＣＰＵ１０は最初の文字列を通常の符号化方式で符号化する（ステップＧ１０）。つづいて、ＣＰＵ１０は、直前に符号化した文字列を直前文字列として記憶し、符号化する文字列を符号化対象文字列として記憶する。そして、ＣＰＵ１０は、直前文字列と符号化対象文字列とを連結した文字列を連結対象文字列として、連結対象文字列が参照部２０２に存在するかを判定する（ステップＧ１２〜Ｇ１８）。ここで、連結対象文字列が参照部２０２に含まれていないと判定された場合には（ステップＧ１８；Ｎｏ）、ＣＰＵ１０はフラグを１として（ステップＧ２２）通常の符号化方式にて符号化対象文字列を符号化する（ステップＧ２４）。
【０１６２】
一方、参照部２０２に連結対象文字列が含まれていると判定した場合には（ステップＧ１８；Ｙｅｓ）、ＣＰＵ１０は、第３符号化処理を実行する（ステップＧ２０）。
【０１６３】
そして、ＣＰＵ１０は、主データ部２０４に対して総て処理が終わったと判定した場合には（ステップＧ２６；Ｙｅｓ）、参照部２０２を圧縮して圧縮後参照部３０２としてＲＡＭ３０に記憶する。また、主データ部２０４に対して総て処理が終わっていない場合には（ステップＧ２６；Ｎｏ）、ＣＰＵ１０は、次の文字列を読み出し（ステップＧ２８）ステップＧ１２から処理を繰り返し実行する。
【０１６４】
続いて、図２２のフローチャートを用いて、第３符号化処理に係るコンピュータ１の動作を説明する。まず、ＣＰＵ１０は、フラグ及び変数ｃｎｔの値を初期化する（ステップＨ１０）。そして、ＣＰＵ１０は、直前文字列と適合文字列とからなる連結適合文字列が、参照部２０２に含まれているか否かを判定する（ステップＨ１２）。ここで、参照部２０２に連結適合文字列が含まれている場合には（ステップＨ１２；Ｙｅｓ）、ＣＰＵ１０は変数ｃｎｔの値に「１」加算する（ステップＨ１４）。
【０１６５】
続いて、ＣＰＵ１０は、適合文字列と符号化対象文字列とが同一であるか否かを判定する（ステップＨ１６）。そして、適合文字列と符号化対象文字列とが同一であると判定した場合には（ステップＨ１６；Ｙｅｓ）、ＣＰＵ１０は、変数ｍの値に変数ｃｎｔの値を代入する（ステップＨ１８）。
【０１６６】
そして、参照部２０２の総ての文字列について終了していない場合には、ＣＰＵ１０は次の文字列を選択し（ステップＨ２０；Ｎｏ→ステップＨ２２）、ステップＨ１２から処理を繰り返し実行する。他方、参照部２０２の総ての文字列について終了した場合には（ステップＨ２０；Ｙｅｓ）、ＣＰＵ１０は、変数ｍをｌｏｇ2ｃｎｔビットで表し、フラグを付加することにより符号化対象文字列を符号化して処理を終了する（ステップＨ２４）。
【０１６７】
［３．１．３  具体例］
ここで、図を用いて第２辞書圧縮処理及び第３符号化処理について具体的に説明する。図２３は、辞書データ２００のデータ構成を、説明するために図示したものである。また、図２４は、主データ部２０４に含まれる「電波」を符号化する場合について説明する図である。ここで、「…する」までは符号化が完了しているものとして説明する。
【０１６８】
まず、ＣＰＵ１０は直前文字列として「する」、符号化対象文字列として「電波」を記憶し、連結対象文字列として「する電波」と記憶する（図２１のステップＧ１２〜Ｇ１６）。続いて、連結対象文字列「する電波」は、参照部２０２に含まれているため、第３符号化処理を実行する（ステップＧ２０）。
【０１６９】
まず、ＣＰＵ１０は、直前文字列「する」と、２文字の文字列となる適合文字列とを連結した連結適合文字列が参照部２０２に存在するか否かを判定する。すると、最初に「すること」が存在するため、ＣＰＵ１０は、変数ｃｎｔの値に「１」加算する。同様に、「する学校」、「すること」と存在するため、それぞれ変数ｃｎｔの値に「１」加算する。続いて、適合連結文字列「する電波」の中の適合文字列「電波」は、符号化対象文字列「電波」と同一であるため、変数ｍに変数ｃｎｔの値「４」を代入する（ステップＨ１８）。そして、続いて連結適合文字列「する学校」が存在するため変数ｃｎｔの値は「５」となる。従って、変数ｍの値「４」を、ｌｏｇ2５ビットを表現可能な３ビットで表すと「０１１」となる。また、これに辞書型符号化方式で符号化されたことを示すフラグ「０」を付加することにより、ＣＰＵ１０は、符号化対象文字列「電波」を「００１１」の４ビットで符号化する。従って、符号化前は「電波」は３２ビット（４バイト）で表現されていたものが、本実施形態により「４」ビットに圧縮されて符号化されることとなる。
【０１７０】
［３．２  電子辞書装置］
［３．２．１  構成］
続いて、コンピュータ１によって生成された圧縮後辞書データを記憶した電子辞書装置１００について説明する。第３の実施の形態における電子辞書装置の構成は、第１の実施の形態において図９に示して説明した電子辞書装置１００の構成において、ＲＯＭ１２０を図２５に示すＲＯＭ１２０ｃに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０１７１】
図２５を参照して、ＲＯＭ１２０ｃの構成について説明する。図２５に示すように、ＲＯＭ１２０ｃは、辞書伸張プログラム１２０４と、第３復号プログラム１２０６ｃとを記憶している。
【０１７２】
第３復号プログラム１２０６ｃは、本実施の形態における第３復号処理を実現するためのプログラムであり、ＣＰＵ１１０がこの第３復号プログラム１２０６ｃを実行することで第３復号処理が実現される。ＣＰＵ１１０は、見出語単位データに含まれる符号列の先頭から１単位分の符号列を復号する。そして、ＣＰＵ１１０は、直前に復号した文字列を直前文字列として記憶する。続いて、復号対象位置を次のビットに移動して当該ビット（フラグ）が「０」である場合には、ＣＰＵ１１０は、連結適合文字列が参照部に存在する個数を数える。そして、連結適合文字列が存在する個数が１つの場合には、ＣＰＵ１１０は、連結適合文字列を参照部から抽出し、抽出した連結適合文字列の中の適合文字列を用いて復号する。他方、連結適合文字列が複数ある場合には、ＣＰＵ１１０は、存在している数に対応するビット数ｍを抽出し、抽出されたｍの値に基づいて連結適合文字列を抽出し、連結適合文字列中の適合文字列を用いて復号する。
【０１７３】
［３．２．２  動作］
次に、第３の実施の形態における電子辞書装置１００の動作について図を参照して説明する。図２６は、第３復号処理に係る電子辞書装置１００の動作を説明するためのフローチャートである。この第３復号処理は、ＣＰＵ１１０が、辞書伸張処理のステップＣ１８において第１復号処理を実行する代わりに、ＲＯＭ１２０ｃの第３復号プログラム１２０６ｃを実行することによって実現される処理である。また、第３復号処理におけるステップＪ１０からステップＪ１６までの処理は、図１２に示した第１復号処理におけるステップＤ１０からステップＤ１６までの処理と同一であるため、その詳細な説明を省略する。
【０１７４】
ＣＰＵ１１０は、符号列の先頭から、１単位分の符号列を復号する（ステップＪ１０）。続いて、ＣＰＵ１１０は直前に復号した文字列を直前文字列として記憶し、復号対象位置を次のビットに移動する。そして、復号対象位置のビットが「０」か否かを判定する（ステップＪ１２〜Ｊ１６）。
【０１７５】
続いて、復号対象位置のビット（フラグ）が「０」である場合には、ＣＰＵ１１０は変数ｃｎｔの値を「０」で初期化する（ステップＪ１８）。続いて、連結適合文字列が参照部１３０２に存在すると（ステップＪ２０；Ｙｅｓ）、ＣＰＵ１１０は、変数ｃｎｔの値に「１」加算する（ステップＪ２２）。そして、ＣＰＵ１１０は、参照部１３０２に処理されていない文字列が存在する場合には（ステップＪ２４；Ｙｅｓ）、次の文字列を選択して（ステップＪ２６）ステップＪ２０から処理を繰り返し実行する。
【０１７６】
続いて、参照部１３０２について総て処理が終了したときに（ステップＪ２４；Ｙｅｓ）、ＣＰＵ１１０は、変数ｃｎｔの値が「１」であるか否かを判定する（ステップＪ２８）。ここで、変数ｃｎｔの値が「１」である場合には（ステップＪ２８；Ｙｅｓ）、連結適合文字列を参照部１３０２から抽出する（ステップＪ３０）。そして、ＣＰＵ１１０は、抽出した連結適合文字列の中の適合文字列を複写することにより、復号対象符号列を復号する（ステップＪ３２）。
【０１７７】
他方、変数ｃｎｔの値が「１」以外の場合には（ステップＪ２８；Ｙｅｓ）、復号対象位置を１ビット分ずらし、ｌｏｇ2ｃｎｔビット分の符号列から表される値を変数ｍに代入する（ステップＪ３４）。
【０１７８】
そして、ＣＰＵ１１０は、参照部１３０２に含まれるｍ番目の連結適合文字列の中の適合文字列を複写して、復号対象符号列を復号する（ステップＪ３６）。
【０１７９】
［３．２．３  具体例］
ここで、図を用いて第３復号処理について具体的に説明する。第３復号処理は、図２４に示した符号化の処理を逆の手順で実行することによって実現される処理である。
【０１８０】
図２４を用いて具体的に説明すると、ＣＰＵ１１０は、直前文字列として「する」を記憶する（図２６のステップＪ１２）。続いて、復号対象位置のビット（フラグ）は「０」であることから（ステップＪ１６；Ｙｅｓ）、ＣＰＵ１１０は、直前文字列「する」を含む連結適合文字列が参照部１３０２にいくつあるかカウントする（ステップＪ２０〜Ｊ２６）。ここで、図２３を参照すると、「すること」「する学校」「すること」「する電波」「する学校」と全部で５つの連結適合文字列が存在している。従って、変数ｃｎｔの値は「５」となる。
【０１８１】
続いて、ＣＰＵ１１０は、変数ｃｎｔの値が「１」でないことから、次の符号ビットから、ｌｏｇ2５ビット分が表現できる３ビット分の符号列「０１１」を読み出す。そして、「０１１」は「４」番目であることから、ＣＰＵ１１０は、先頭から４番目の連結適合文字列「する電波」の中の適合文字列「電波」を複写して復号する。
【０１８２】
このように、第３の実施の形態によれば、主データ部に記憶されている文字列を辞書型符号化方式で符号化する際に、参照テーブルが存在しなくとも符号化することができるようになる。また、復号を行う場合にも参照テーブルが存在しなくても復号することができ、参照テーブルを別に記憶する必要が無くなり、極めて効率の良い圧縮を行うことができる。
【０１８３】
なお、本実施の形態においては、適合文字列を２文字として説明したがこれに限定されるものではなく、例えば３文字や４文字等としても良いし、可変長としても良いことは勿論である。この場合、辞書データ圧縮装置（コンピュータ）と電子辞書装置との間で同一の方法にて符号化・復号を行う必要がある。
【０１８４】
〔第４の実施の形態〕
次に、本発明を適用した第４の実施の形態について説明する。本実施の形態は、元参照部に記憶されている順位を判定する際に、重出する文字列を除外することにより、圧縮効率を向上させるものである。
【０１８５】
［４．１  辞書データ圧縮装置］
［４．１．１  構成］
第４の実施の形態におけるコンピュータの構成は、第３の実施の形態におけるコンピュータ１の構成において、ハードディスク２０ｃを図２７に示すハードディスク２０ｄに、ＲＡＭ３０を図２８に示すＲＡＭ３０ｄに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０１８６】
図２７を参照してハードディスク２０ｄの構成について説明する。図２７に示すようにハードディスク２０ｄは、辞書データ２００と、第２辞書圧縮プログラム２０８ｃと、第４符号化プログラム２１０ｄとを記憶している。
【０１８７】
第４符号化プログラム２１０ｄは、本実施の形態における第４符号化処理を実現するためのプログラムであり、ＣＰＵ１０がこの第４符号化プログラム２１０ｄを実行することで、第４符号化処理が実現される。具体的には、参照部２０２に連結適合文字列が存在する場合には、ＣＰＵ１０は、連結適合文字列の中の適合文字列が文字列蓄積記憶領域３４０に記憶されているか否かを判定する。そして、適合文字列が文字列蓄積記憶領域３４０に記憶されていない場合には、ＣＰＵ１０は、適合文字列を文字列蓄積記憶領域３４０に蓄積記憶する。そして、文字列蓄積記憶領域３４０における連結文字列の順位により、符号化対象文字列を符号化する。
【０１８８】
図２８を参照してＲＡＭ３０ｄを説明する。図２８に示すように、ＲＡＭ３０ｄは、圧縮後辞書データ３００と、文字列蓄積記憶領域３４０とを記憶している。
【０１８９】
文字列蓄積記憶領域３４０は、第４符号化処理において、連結適合文字列の中の適合文字列を蓄積記憶するための領域である。図２９に、文字列蓄積記憶領域３４０のデータ構成の一例を示す。図２９に示すように、適合文字列（例えば、「こと」、「学校」）が蓄積記憶されている。
【０１９０】
［４．１．２  動作］
次に、第４の実施の形態におけるコンピュータ１の動作について図を参照して説明する。図３０は、第４符号化処理に係るコンピュータ１の動作を説明するためのフローチャートである。この第４符号化処理は、ハードディスク２０ｄの第２辞書圧縮プログラム２０８ｃの実行中に呼び出される処理である。ＣＰＵ１０は、図２１の第２辞書圧縮処理におけるステップＧ２０における、第３符号化処理に代えて、本実施の形態の第４符号化処理を呼び出して実行する。
【０１９１】
まず、ＣＰＵ１０は、フラグ及び変数ｃｎｔの値を「０」に初期化する（ステップＫ１０）。続いて、ＣＰＵ１０は、参照部２０２の中から、連結適合文字列が参照部２０２に存在するか否かを判定する（ステップＫ１２）。
【０１９２】
ここで、連結適合文字列が参照部２０２に存在する場合には（ステップＫ１２；Ｙｅｓ）、ＣＰＵ１０は、連結適合文字列の中の適合文字列が文字列蓄積記憶領域３４０に記憶されているか否かを判定する（ステップＫ１４）。適合文字列が文字列蓄積記憶領域３４０に記憶されていない場合には（ステップＫ１４；Ｙｅｓ）、ＣＰＵ１０は変数ｃｎｔの値に「１」加算し（ステップＫ１６）、適合文字列を文字列蓄積記憶領域３４０に蓄積記憶する（ステップＫ１８）。さらに、ＣＰＵ１０は、適合文字列と符号化対象文字列が同一と判定した場合には（ステップＫ２０；Ｙｅｓ）、変数ｍの値に変数ｃｎｔの値を代入する（ステップＫ２２）。
【０１９３】
他方、ＣＰＵ１０は、連結適合文字列が参照部２０２に存在しない場合（ステップＫ１２；Ｎｏ）、若しくは連結適合文字列が参照部２０２に存在したが、当該連結適合文字列の中の適合文字列が、文字列蓄積記憶領域３４０に記憶されている場合には（ステップＫ１４；Ｎｏ）、ＣＰＵ１０は処理をステップＫ２４に移行する。
【０１９４】
そして、ＣＰＵ１０は、参照部２０２に未処理の文字列がまだ存在する場合には、次の文字列を選択してステップＫ１２から処理を繰り返す（ステップＫ２４；Ｎｏ→ステップＫ２６）。また、参照部２０２のデータが総て処理を終了した場合には（ステップＫ２４；Ｕｅｓ）、ＣＰＵ１０は、変数ｍをｌｏｇ2ｃｎｔビットで表し、フラグを付加して符号化対象文字列を符号化して第４符号化処理を終了する（ステップＫ２８）。
【０１９５】
［４．１．３  具体例］
ここで、図を用いて第４符号化処理について具体的に説明する。図３１は、辞書データ２００のデータ構成を説明するための図である。また、図３２は、主データ部２０４に含まれる文字列「電波」を符号化する場合について説明するための図である。ここで、図３２における「…する」（図３１の４つめの「する」）までは符号化が完了しているものとして説明する。
【０１９６】
まず、ＣＰＵ１０は、直前文字列「する」と、任意の２文字とからなる連結適合文字列が参照部２０２に存在するか否かを判定する（図３０のステップＫ１２）。すると、最初に連結適合文字列として「すること」が存在し、連結適合文字列の中の適合文字列「こと」は文字列蓄積記憶領域３４０に記憶されていないことから、ＣＰＵ１０は変数ｃｎｔの値に「１」を加算し、文字列蓄積記憶領域３４０に適合文字列「こと」を記憶する。続けて、連結適合文字列として「する学校」が存在することから、変数ｃｎｔの値に「１」加算し、文字列蓄積記憶領域３４０に連結適合文字列の中の適合文字列「学校」を蓄積記憶する。
【０１９７】
続いて、参照部２０２には連結適合文字列として「すること」が存在している。ここで、当該連結適合文字列の中の適合文字列「こと」は、文字列蓄積記憶領域３４０に既に記憶されていることから、「すること」は重出しているとＣＰＵ１０は判定する。従ってＣＰＵ１０は、続いて連結適合文字列として「する電波」を選択する。そして、当該連結適合文字列「する電波」の中の適合文字列「電波」は文字列蓄積記憶領域３４０に記憶されていないことから、ＣＰＵ１０は、変数ｃｎｔの値に「１」加算し、文字列蓄積記憶領域３４０に適合文字列「電波」を記憶する。
【０１９８】
ここで、適合文字列「電波」は符号化対象文字列と同一であるため（ステップＫ２０；Ｙｅｓ）、ＣＰＵ１０は変数ｍの値に変数ｃｎｔの値「３」を代入する。さらにＣＰＵ１０は、連結適合文字列として「する学校」を選択する。しかし、既に適合文字列である「学校」が文字列蓄積記憶領域３４０に記憶されていることから、ＣＰＵ１０は重出していると判定し、変数ｃｎｔの値は変化させない。
【０１９９】
ここで、参照部２０２に含まれる文字列について総ての処理が終了すると（ステップＫ２４；Ｙｅｓ）、変数ｍは「３」であり、変数ｃｎｔは「３」である。従って、変数ｍである「３」をｌｏｇ2３ビットで表現可能な２ビットで表現するすると、「１０」と表される。また、これに辞書型符号化方式で符号化されたことを示すフラグ「０」を付加し、電波を「０１０」の３ビットで符号化する。従って、符号化前は「電波」は３２ビット（４バイト）で表現されていたものが、本実施形態により「３」ビットに圧縮されて符号化される。
【０２００】
［４．２  電子辞書装置］
［４．２．１  構成］
続いて、コンピュータ１によって生成された圧縮後辞書データを記憶した電子辞書装置１００について説明する。第４の実施の形態における電子辞書装置の構成は、第３の実施の形態における電子辞書装置１００の構成において、ＲＯＭ１２０ｃを図３３に示すＲＯＭ１２０ｄに、ＲＡＭ１３０をＲＡＭ１３０ｄに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０２０１】
図３３を参照してＲＯＭ１２０ｄの構成について説明する。図３３に示すようにＲＯＭ１２０には、辞書伸張プログラム１２０４と、第４復号プログラム１２０６ｄとを記憶している。
【０２０２】
第４復号プログラム１２０６ｄは、本実施の形態における第４復号処理を実現するためのプログラムであり、ＣＰＵ１１０がこの第４復号プログラム１２０６ｄを実行することで、第４復号処理が実現される。まず、ＣＰＵ１１０は、符号列の先頭から１単位分の符号列を復号する。次に、ＣＰＵ１１０は、直前に復号した文字列を直前文字列として記憶して、復号対象位置を次のビットに移動する。続いて、ＣＰＵ１１０は、復号対象位置のビット（フラグ）が「０」であれば、直前文字列が参照部に存在するか否か判定する。そして、当該直前文字列に続く適合文字列（例えば、任意の２文字の文字列）が文字列蓄積記憶領域１３４０に記憶されていない場合には、ＣＰＵ１１０は、当該適合文字列を文字列蓄積記憶領域１３４０に記憶する。そして、ＣＰＵ１１０は、文字列蓄積記憶領域１３４０に記憶された適合文字列の個数に応じて当該符号列から文字列を復号する。
【０２０３】
［４．２．２  動作］
次に、第４の実施の形態における電子辞書装置１００の動作について図を参照して説明する。図３５は、第４復号処理に係る電子辞書装置１００の動作を説明するためのフローチャートである。この第４復号処理は、ＣＰＵ１１０が、辞書伸張処理のステップＣ１８において第１復号処理を実行する代わりに、ＲＯＭ１２０ｄの第４復号プログラム１２０６ｄを実行することによって実現される処理である。また、第４復号処理におけるステップＬ１０〜Ｌ１６の処理は、図２６に示した第３復号処理におけるステップＪ１０からステップＪ１６までの処理と同様であり、その詳細な説明を省略する。
【０２０４】
まず、ＣＰＵ１１０は、符号列の先頭から、１単位分の符号列を復号する（ステップＬ１０）。続いて、ＣＰＵ１１０は直前に復号した文字列を直前文字列として記憶し、復号対象位置を次のビットに移動する。そして、復号対象位置のビットが「０」か否かを判定する（ステップＬ１２〜Ｌ１６）。
【０２０５】
続いて、復号対象位置（フラグ）のビットが「０」であった場合には（ステップＬ１６；Ｙｅｓ）、ＣＰＵ１１０は変数ｃｎｔの値を「０」を代入して初期化する（ステップＬ１８）。そして、直前文字列が参照部１３０２に存在する場合には（ステップＬ２０；Ｙｅｓ）、ＣＰＵ１１０は当該直前文字列に続く適合文字列が文字列蓄積記憶領域１３４０に記憶されているか否かを判定する（ステップＬ２２）。そして、ＣＰＵ１１０は、当該適合文字列が文字列蓄積記憶領域１３４０に記憶されていると判定した場合には（ステップＬ２２；Ｙｅｓ）、変数ｃｎｔの値に「１」加算し、当該適合文字列を文字列蓄積記憶領域１３４０に蓄積記憶する（ステップＬ２６）。そして、ＣＰＵ１１０は、参照部について総て処理を終了していない場合には（ステップＬ２８；Ｎｏ）、次の文字列を選択して（ステップＬ３０）、ステップＬ２０から処理を繰り返し実行する。
【０２０６】
他方、参照部について総て処理を終了した場合には（ステップＬ２８；Ｙｅｓ）、ＣＰＵ１１０は、変数ｃｎｔの値が「１」であるか否かを判定する（ステップＬ３２）。ここで、変数ｃｎｔの値が「１」である場合には（ステップＬ３２；Ｙｅｓ）、文字列蓄積記憶領域１３４０に記憶されている適合文字列を複写して復号対象符号列を復号する（ステップＬ３４）。一方、変数ｃｎｔの値が「１」以外のときは（ステップＬ３２；Ｎｏ）、ＣＰＵ１１０は符号列からｌｏｇ2ｃｎｔビット分の符号列から表される値を変数ｍに代入する（ステップＬ３６）。そして、ＣＰＵ１１０は、文字列蓄積記憶領域１３４０に記憶された文字列から、ｍ番目の適合文字列複写して復号対象符号列を復号する（ステップＬ３８）。
【０２０７】
［４．２．３  具体例］
ここで、図を用いて第４復号処理について具体的に説明する。第４復号処理は、図３２に示した符号化の処理を逆の手順で実行することによって実現される処理である。
【０２０８】
ＣＰＵ１１０は、直前文字列として「する」を記憶する（図３５のステップＬ１２）。続いて、復号対象位置のビット（フラグ）は「０」であることから、ＣＰＵ１１０は、連結適合文字列が参照部１３０２にいくつあるかカウントする（ステップＬ２０〜Ｌ２８）。ここで、図３１を参照すると、まずＣＰＵ１１０は、「こと」と「学校」とを文字列蓄積記憶領域１３４０に記憶する。そして、ＣＰＵ１１０は、３番目の連結適合文字列の中の適合文字列「こと」は既に文字列蓄積記憶領域１３４０に記憶されていることから、記憶しない。そして、ＣＰＵ１１０は、次の適合文字列「電波」を文字列蓄積記憶領域１３４０に記憶する。従って、変数ｃｎｔの値は「３」となる。
【０２０９】
続いて、ＣＰＵ１１０は、変数ｃｎｔの値が「１」でないことから（ステップＬ３２；Ｎｏ）、次の符号ビットから、ｌｏｇ2３ビット分が表現できる「２」ビット分の符号列「１０」を読み出す。そして、「１０」から変数ｍの値は「３」となり、文字列蓄積記憶領域１３４０に記憶されている適合文字列の中から「３」番目となる「電波」を複写して復号する。
【０２１０】
このように、第４の実施の形態によれば、主データ部に記憶されている文字列を辞書型符号化方式で符号化する際に、参照テーブルが存在しなくとも符号化することができるようになる。更に、重複する言葉を除いて符号化することから、総ての言葉の中から符号化する場合に比べて、より少ないビット数で符号化することができ、効率の良い圧縮を行うことができる。また、復号を行う場合にも参照テーブルが存在しなくても復号することができ、参照テーブルを別に記憶する必要が無くなり、極めて効率の良い圧縮を行うことができる。
【０２１１】
〔第５の実施の形態〕
次に、本発明を適用した第５の実施の形態について説明する。本実施の形態は、符号化対象文字列の前の文字列を利用することにより、効率良く符号化を行うものである。
【０２１２】
［５．１  辞書データ圧縮装置］
［５．１．１  構成］
第５の実施の形態におけるコンピュータの構成は、第１の実施の形態におけるコンピュータ１の構成において、ハードディスク２０を図３６に示すハードディスク２０ｅに、ＲＡＭ３０を図３７に示すＲＡＭ３０ｅに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０２１３】
図３６を参照してハードディスク２０ｅの構成について説明する。図３６に示すようにハードディスク２０ｅは、辞書データ２００と、第３辞書圧縮プログラム２０８ｅとを記憶している。
【０２１４】
第３辞書圧縮プログラム２０８ｅは、本実施の形態における第３辞書圧縮処理を実現するためのプログラムであり、ＣＰＵ１０がこの第３辞書圧縮プログラム２０８ｅを実行することで、第３辞書圧縮処理が実現される。まず、ＣＰＵ１０は、最初の文字列を通常の符号化方法にて符号化し、変数ｉの値を「１」で初期化する。次に、ＣＰＵ１０は、符号化対象文字列を記憶し、直前文字列を終端とするｉ文字前分の文字列（以下、適宜「終端文字列」という。）と、符号化対象文字列とを連結した文字列を連結終端文字列として記憶する。さらに、ＣＰＵ１０は、終端文字列と符号化対象文字列と同じ文字長の任意の文字列からなる適合文字列とを連結した連結終端適合文字列をを総て参照部２０２から抽出する。そして、抽出された連結終端適合文字列の個数が所定の個数以下になると、ＣＰＵ１０は符号化対象文字列を符号化する。
【０２１５】
図３７を参照してＲＡＭ３０ｅを説明する。図３７に示すように、ＲＡＭ３０ｅは、圧縮後辞書データ３００を記憶し、抽出文字列格納領域３５０の記憶領域を確保している。
【０２１６】
抽出文字列格納領域３５０は、ＣＰＵ１０が第３辞書圧縮処理におけるステップＭ１８において抽出した連結終端適合文字列を蓄積記憶するための領域である。
【０２１７】
［５．１．２  動作］
次に、第５の実施の形態におけるコンピュータ１の動作について図を参照して説明する。図３８は、第３辞書圧縮処理に係るコンピュータ１の動作を説明するためのフローチャートである。この第３辞書圧縮処理は、ＣＰＵ１０がハードディスク２０ｅの第３辞書圧縮プログラム２０８ｅを実行することによって実現される処理である。
【０２１８】
ＣＰＵ１０は、最初の文字列を通常の符号化方式によって符号化を実行する（ステップＭ１０）。そして、ＣＰＵ１０は、変数ｉの値に「１」を代入して初期化した後に（ステップＭ１２）、符号化対象文字列を記憶する（ステップＭ１４）。
【０２１９】
続いて、ＣＰＵ１０は、終端文字列と、符号化対象文字列とを結合した文字列を連結終端文字列として記憶する（ステップＭ１６）。さらに、ＣＰＵ１０は、連結終端適合文字列を参照部２０２から総て抽出して抽出文字列格納領域３５０に記憶する（ステップＭ１８）。そして、抽出文字列格納領域３５０に記憶された連結終端適合文字列の個数を抽出し、その値を変数Ｎに代入する（ステップＭ２０）。
【０２２０】
ここで、変数Ｎの値が２11-i以上である場合には（ステップＭ２２；Ｙｅｓ）、ＣＰＵ１０は、変数ｉの値に「１」加算する（ステップＭ２４）。ＣＰＵ１０は、変数ｉの値が「１１」未満である場合には、ステップＭ１６から処理を繰り返し実行する（ステップＭ２６；Ｎｏ）。
【０２２１】
一方、変数Ｎの値が２11-i未満である場合には（ステップＭ２２；Ｎｏ）、ＣＰＵ１０は、抽出文字列格納領域３５０の中に連結終端文字列が記憶されているか否かを判定する（ステップＭ２８）。ここで、抽出文字列格納領域３５０の中に連結終端文字列が記憶されていると判定された場合には（ステップＭ２８；Ｙｅｓ）、ＣＰＵ１０は連結終端文字列が何番目に記憶されているかを算出し、算出された値を変数ｍに代入する（ステップＭ３２）。そして、ＣＰＵ１０は、変数ｍをｌｏｇ2Ｎビットで表し、フラグ「０」を付加して符号化対象文字列を符号化する（ステップＭ３４）。
【０２２２】
また、ステップＭ２６において、変数ｉが「１１」以上となった場合や（ステップＭ２６；Ｙｅｓ）、ステップＭ２８において、抽出文字列格納領域３５０の中に連結終端文字列が無いと判定した場合には（ステップＭ２８；Ｎｏ）、ＣＰＵ１０は、フラグ「１」を付加して対象文字列を通常の符号化方法で符号化する（ステップＭ３０）。
【０２２３】
そして、主データ部の文字列総ての処理が終了していない場合には（ステップＭ３６；Ｎｏ）、次の文字列を対象文字列として読み出し（ステップＭ３８）、ステップＭ１２より処理を再び実行する。また、主データ部総ての処理が終了した場合には（ステップＭ３６；Ｙｅｓ）、参照部２０２を圧縮し（ステップＭ４０）、第３辞書圧縮処理を終了する。
【０２２４】
［５．１．３  具体例］
ここで、図３９を参照して第３辞書圧縮処理について具体的に説明する。図３９に示す文字列のうち、現在の符号化対象文字列を「する」として説明する。
【０２２５】
ＣＰＵ１０は、符号化対象文字列「する」と１文字前の文字を結合した終端文字列「生する」とを連結して連結終端文字列として記憶する（図３８のステップＭ１６）。続いて、終端文字列「生」で始まる文字長「３」の連結終端適合文字列を、参照部から総て抽出する（ステップＭ１８）。すると、図３９に示すように「１５００」個抽出され、この値がＮに代入される（ステップＭ２０）。そこで、２11-1は１０２４となり、変数Ｎの値の方が大きい（ステップＭ２２；Ｙｅｓ）。従って、ＣＰＵ１０は、変数ｉに「１」加算すると、変数ｉが「２」となり（ステップＭ２４）、繰り返し処理を実行する。
【０２２６】
続いて、ＣＰＵ１０が、終端文字列「発生」で始まる文字長「４」の連結終端適合文字列を参照部２０２から総て抽出すると「６００」個抽出される。ここで、２11-2は「５１２」個となり、変数Ｎの値の方が大きい（ステップＭ２６；Ｙｅｓ）。従って、ＣＰＵ１０は、変数ｉを「３」として、繰り返し処理を実行する。
【０２２７】
さらに、ＣＰＵ１０は、終端文字列「り発生」で始まる文字長「５」の連結終端適合文字列を参照部２０２から総て抽出すると「１０」個抽出される。ここで、２11-3は「２５６」個となり、変数Ｎの値の方が小さい。従って、ＣＰＵ１０は、連結終端文字列「り発生する」が参照部２０２に含まれる連結終端適合文字列の「５」番目に有ることを算出し、変数ｍに代入する。
【０２２８】
そして、ＣＰＵ１０は、変数ｍの値「５」を４ビットで表し、フラグを付加することにより「００１００」と符号化する。ここで、符号化対象文字列「する」は、「４」バイト分、「３２」ビットで表現されていたが、第３辞書圧縮処理によって「５」ビットに圧縮される。
【０２２９】
［５．２  電子辞書装置］
［５．２．１  構成］
続いて、コンピュータ１によって生成された圧縮後辞書データを記憶した電子辞書装置１００について説明する。第５の実施の形態における電子辞書装置の構成は、第１の実施の形態における電子辞書装置１００の構成において、ＲＯＭ１２０を図４０に示すＲＯＭ１２０ｅに、ＲＡＭ１３０を図４１に示すＲＡＭ１３０ｅに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０２３０】
図４０を参照してＲＯＭ１２０ｅの構成について説明する。図４０に示すように、ＲＯＭ１２０ｅは、辞書伸張プログラム１２０４と、第５復号プログラム１２０６ｅとを記憶している。
【０２３１】
第５復号プログラム１２０６ｅは、本実施の形態における第５復号処理を実現するためのプログラムであり、ＣＰＵ１１０がこの第５復号プログラム１２０６ｅを実行することで、第５復号処理が実現される。まず、ＣＰＵ１１０は、最初の符号列の先頭から１単位分の符号列を抽出し、通常の復号で文字列を復号する。続いて、ＣＰＵ１１０は終端文字列と適合文字列とを連結した連結終端適合文字列を参照部１３０２から総て抽出し、抽出文字列格納領域１３５０に記憶する。そして、抽出された個数に応じて符号列から文字列を復号する。
【０２３２】
図４１を参照して、ＲＡＭ１３０ｅの構成について説明する。図４１に示すように、ＲＡＭ１３０ｅは、参照部伸張領域１３００と、検索テーブル１３０４と、抽出文字列格納領域１３５０との領域を確保している。
【０２３３】
抽出文字列格納領域１３５０は、ＣＰＵ１１０が第５符号化処理において、抽出した文字列を記憶するための格納領域である。その構成は、図３７の抽出文字列格納領域３５０と同様のものである。
【０２３４】
［５．２．２  動作］
次に、第５の実施の形態における電子辞書装置１００の動作について図を参照して説明する。図４２は、第５復号処理に係る電子辞書装置１００の動作を説明するためのフローチャートである。この第５復号処理は、ＣＰＵ１１０が、辞書伸張処理のステップＣ１８において第１復号処理を実行する代わりに、ＲＯＭ１２０ｅの第５復号プログラム１２０６ｅを実行することによって実現される処理である。
【０２３５】
まず、符号列の先頭から１単位分の符号列を文字列に復号する（ステップＮ８）。続いて、ＣＰＵ１１０はフラグが「０」が否かを判定する（ステップＮ１０）。ここで、フラグが「０」でない場合には（ステップＮ１０；Ｎｏ）、ＣＰＵ１１０は通常の復号を実行する（ステップＮ２６）。
【０２３６】
一方、フラグが「０」である場合には（ステップＮ１０；Ｙｅｓ）、ＣＰＵ１１０は変数ｉに「１」を代入して初期化し、符号化対象文字列のｉ文字前分の終端文字列と適合文字列とを連結した連結終端適合文字列を参照部１３０２から総て抽出し、抽出文字列格納領域１３５０に記憶する（ステップＮ１４）。さらに、ＣＰＵ１１０は、抽出された連結終端適合文字列の個数を変数Ｎの値として代入する（ステップＮ１６）。そして、ＣＰＵ１１０は、変数Ｎの値が２11-i以上である場合には（ステップＮ１８；Ｙｅｓ）、変数ｉに「１」加算してステップＮ１４から繰り返し処理する（ステップＮ２０）。
【０２３７】
次に、ＣＰＵ１１０は、ｌｏｇ2Ｎビット分の符号列から表される値を変数ｍに代入する。さらに、ＣＰＵ１１０は、抽出文字列格納領域１３５０に記憶された文字列から、ｍ番目の文字列を複写して復号する。そして、ＣＰＵ１１０は、符号列が見出語データに残っている場合には（ステップＮ２８；Ｎｏ）、次の符号列を選択し（ステップＮ３０）、総ての符号列の処理が終了したら、第５復号処理を終了する（ステップＮ２８；Ｙｅｓ）。
【０２３８】
ここで、図を用いて第５復号処理について具体的に説明する。第５復号処理は、図３９に示した符号化の処理を逆の手順で実行することによって実現される処理である。
【０２３９】
図３９を用いて具体的に説明する。なお、この場合、「…により発生」までが復号されているものとする。まずＣＰＵ１１０は、１文字前分からの文字列「生○○」となる文字列を参照部から抽出する。ここで、「○○」とは適合文字列を表したものであり、具体的には、任意の２文字が入って良いことを表す。この場合、「生○○」は参照部１３０２から１５００個抽出される。従って、２11-1＝１０２４個と比較して抽出された数の方が大きいため、ＣＰＵ１１０は、ｉを「２」として同様の処理を行う。「発生○○」は、参照部１３０２から６００個抽出される。従って、２11-2＝５１２個と比較して抽出された数の方が大きくなってしまう。そして、「り発生○○」を参照部１３０２から抽出すると、１０個抽出される。ここで、２11-3＝２５６個と比較すると、抽出された個数の方が小さいため、ＣＰＵ１１０は、ｌｏｇ2１０ビット分を表現することができる符号列として４ビット分の符号列「０１００」を読み出す。そして、ＣＰＵ１１０は、符号列「０１００」に対応する５番目の文字列「する」を抽出文字列格納領域１３５０からを読み出し、複写して復号する。
【０２４０】
このように、第５の実施の形態によれば、参照テーブルが記憶されていない場合であっても、終端文字列の文字列長を変化させることにより、符号化対象文字列毎に主データ部を効率よく符号化・復号することができる。従って、より多くの見出語を記憶させることが可能となる。
【０２４１】
〔第６の実施の形態〕
次に、本発明を適用した第６の実施の形態について説明する。本実施の形態は、参照テーブルとリンクテーブルとを使用することにより、更に効率よく圧縮を行うものである。
【０２４２】
［６．１  辞書データ圧縮装置］
［６．１．１  構成］
第６の実施の形態におけるコンピュータの構成は、第１の実施の形態におけるコンピュータ１の構成において、ハードディスク２０を図４３に示すハードディスク２０ｆに、ＲＡＭ３０をＲＡＭ３０ｆに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０２４３】
図４３を参照してハードディスク２０ｆの構成について説明する。図４３に示すようにハードディスク２０ｆは、辞書データ２００と、参照テーブル２０６と、第４辞書圧縮プログラム２０８ｆと、リンクテーブル２６０とを記憶している。
【０２４４】
第４辞書圧縮プログラム２０８ｆは、本実施の形態における第４辞書圧縮処理を実現するためのプログラムであり、ＣＰＵ１０がこの第４辞書圧縮プログラム２０８ｆを実行することで、第４辞書圧縮処理が実現される。ＣＰＵ１０は、最初の文字列を通常の符号化方式で符号化する。続いて、ＣＰＵ１０は、直前に符号化した文字列を直前文字列として記憶し、符号化する文字列を符号化対象文字列として記憶する。続いて、ＣＰＵ１０は、直前文字列がリンクテーブル２６０の第１文字列に、参照文字列がリンクテーブル２６０の第２文字列に記憶されている組合せを適合組として総て抽出し、適合組格納領域３６０に記憶する。そして、ＣＰＵ１０は、抽出された組の数を変数ｃｎｔの値として代入する。そして、ＣＰＵ１０は、適合組格納領域３６０に記憶された適合組の第２文字列に符号化対象文字列が記憶されている場合には、符号化対象文字列が記憶されている組番号に基づいて符号化対象文字列を符号化する。一方、適合組格納領域３６０に記憶された適合組の第２文字列に符号化対象文字列が記憶されていない場合には、ＣＰＵ１０は、通常の符号化を行う。
【０２４５】
リンクテーブル２６０は、文字列の（前後）関係を記憶しているテーブルであり、第４辞書圧縮処理で用いられるテーブルである。リンクテーブル２６０のデータ構成の一例として、図４５に示す。リンクテーブル２６０は、第１文字列と第２文字列とが記憶されており、ＣＰＵ１０は、参照テーブル２０６と、リンクテーブル２６０とを利用することにより、第４辞書圧縮処理を実行する。
【０２４６】
ＲＡＭ２０ｆは、図４４に示すように圧縮後辞書データ３００と、適合組格納領域３６０とを記憶している。
【０２４７】
適合組格納領域３６０は、第４辞書圧縮処理において、リンクテーブル２６０の中から所定の条件に適合した組合せを記憶しておくための記憶領域であり、データ構成はリンクテーブル２６０と同様であり、第１文字列と第２文字列とを蓄積記憶している。
【０２４８】
［６．１．２  動作］
次に、第６の実施の形態におけるコンピュータ１の動作について図を参照して説明する。図４６は、第４辞書圧縮処理に係るコンピュータ１の動作を説明するためのフローチャートである。この第４辞書圧縮処理は、ＣＰＵ１０が、ハードディスク２０ｆの第４辞書圧縮プログラム２０８ｆを実行することによって実現される処理である。
【０２４９】
ＣＰＵ１０は、主データ部２０４に記憶されている最初の文字列を通常の符号化方法を用いて符号化する（ステップＰ１０）。次に、ＣＰＵ１０は、直前に符号化した文字列を直前文字列として記憶し（ステップＰ１２）、符号化する文字列を符号化対象文字列として記憶する（ステップＰ１４）。
【０２５０】
続いて、ＣＰＵ１０は、リンクテーブル２６０の第１文字列に、直前文字列が記憶されているか否かを判定する（ステップＰ１６）。ここで、直前文字列が第１文字列に記憶されていない場合には（ステップＰ１６；Ｎｏ）、ＣＰＵ１０は、フラグを「１」として（ステップＰ２８）通常の符号化を行う（ステップＰ３０）。
【０２５１】
一方、直前文字列がリンクテーブル２６０の第１文字列に記憶されている場合には（ステップＰ１６；Ｙｅｓ）、第１文字列が直前文字列であって、第２文字列が、参照文字列となる組をリンクテーブル２６０から総て抽出し、適合組格納領域３６０に記憶する（ステップＰ１８）。続いて、抽出した組数を変数Ｎの値として代入する（ステップＰ２０）。
【０２５２】
続いて、抽出された組の中の第２文字列に、符号化対象文字列が記憶されている場合には（ステップＰ２２；Ｙｅｓ）、ＣＰＵ１０は、当該符号化対象文字列がある組番号を変数ｍの値として代入する（ステップＰ２４）。そして、ＣＰＵ１０は、変数ｍをｌｏｇ2Ｎビットで表し、フラグを付加して符号化対象文字列を符号化する（ステップＰ２６）。一方、ステップＰ２２において、抽出した組の第２文字列に符号化対象文字列が記憶されていない場合には（ステップＰ２２；Ｎｏ）、ＣＰＵ１０は、フラグを「１」として通常の符号化を行う（ステップＰ２８、Ｐ３０）。
【０２５３】
そして、ＣＰＵ１０は、主データ部２０４に関して総ての処理が終了していない場合には（ステップＰ３２；Ｎｏ）、次の文字列を読み出し（ステップＰ３４）ステップＰ１２から処理を繰り返し実行する。
【０２５４】
また、主データ部２０４に関して総ての処理が終了した場合には（ステップＰ３２）、ＣＰＵ１０は、参照部２０２を圧縮して処理を終了する（ステップＰ３６）。
【０２５５】
［６．１．３  具体例］
ここで、図を参照して第４辞書圧縮処理について具体的に説明する。図４７は、主データ部２０４の一部を示した図である。ここでは、「する」までが符号化されており、続いて文字列「確率」を符号化する状態を表した図である。また、参照テーブル２０６は図５の参照テーブル２０６を、リンクテーブル２６０は図４５のリンクテーブル２６０を用いて説明する。
【０２５６】
まず、ＣＰＵ１０は、直前に符号化した文字列「する」を直前文字列として記憶し、文字列「確率」を符号化対象文字列として記憶する（ステップＰ１２、Ｐ１４）。ここで、リンクテーブル２６０の第１文字列に、直前文字列「する」が記憶されているため、第１文字列が直前文字列「する」であって、第２文字列に記憶されている文字列が参照文字列となる組となる「する・確率」と、「する・文字列」との組を抽出して、適合組格納領域３６０に記憶する（ステップＰ１８）。そして、抽出された組は「２」組であり、ＣＰＵ１０は、変数Ｎに「２」を代入する（ステップＰ２０）。また、第２文字列の１番目に符号化対象文字列「確率」と同一の文字列が記憶されていることから、ＣＰＵ１０は、変数ｍの値に「１」を代入する。そして、ＣＰＵ１０は、変数ｍをｌｏｇ2２ビットで表し、フラグを付加することにより、符号化対象文字列「確率」は「００」と符号化される。
【０２５７】
従って、符号化前は、「確率」という２バイト文字が２文字分で３２ビット必要であったのが、２ビットに圧縮される。このように、参照テーブルとリンクテーブルとを用いることにより、参照テーブルのみで符号化した場合に比べて極めて効率よく符号化することが出来る。
【０２５８】
［６．２  電子辞書装置］
［６．２．１  構成］
続いて、コンピュータ１によって生成された圧縮後辞書データを記憶した電子辞書装置１００について説明する。第６の実施の形態における電子辞書装置１００の構成は、第１の実施の形態において図９に示して説明したＲＯＭ１２０を図４８に示すＲＯＭ１２０ｆに、図９のＲＡＭ１３０を図４９のＲＡＭ１３０ｆに置き換えた構成と同様であり、以下、同一の構成要素には同一の符号を付してその説明を省略する。
【０２５９】
図４８を参照してＲＯＭ１２０ｆの構成について説明する。図４８に示すように、ＲＯＭ１２０ｆは、参照テーブル１２０２と、辞書伸張プログラム１２０４と、第６復号プログラム１２０６ｆと、リンクテーブル１２６０とを記憶している。
【０２６０】
第６復号プログラム１２０６ｆは、本実施の形態における第６復号処理を実現するためのプログラムであり、ＣＰＵ１１０がこの第６復号プログラム１２０６ｆを実行することで、第６復号処理が実現される。ＣＰＵ１１０は、符号列の先頭から１単位分の符号列を通常の方法で復号をしたのちに、続く符号列のビット（フラグ）が０か否かを判定する。そして、ＣＰＵ１１０は、フラグが０のときには、直前に復号した文字列を直前文字列として記憶する。ＣＰＵ１１０は、直前文字列がリンクテーブル１２６０の第１文字列にある行の中からリンクテーブル１２６０の第２文字列が参照テーブル１２０２に記憶されている行を抽出して記憶する。そして、抽出した個数をＮとし、符号列からｌｏｇ2Ｎビット分の符号列から表される値をｍに代入し、組番号ｍから第２文字列を複写することで復号対象符号列を復号する。
【０２６１】
リンクテーブル１２６０は、文字列の関係を記憶しているテーブルであり、第６符号化処理で用いられるテーブルである。リンクテーブル１２６０は、図４３のリンクテーブル２６０と同様の構成である。
【０２６２】
図４９を参照してＲＡＭ１３０ｆの構成について説明する。図４９に示すように、ＲＡＭ１３０ｆは、参照部伸張領域１３００と、適合組格納領域１３６０との領域を確保している。
【０２６３】
適合組格納領域１３６０は、第６符号化処理において、リンクテーブル１２６０の中から所定の条件に適合した行を記憶しておくための記憶領域であり、図４５の適合組格納領域と同様の構成である。
【０２６４】
［６．２．２  動作］
次に、第６の実施の形態における電子辞書装置１００の動作について図を参照して説明する。図５０は、第６復号処理に係る電子辞書装置１００の動作を説明するためのフローチャートである。この第６復号処理は、ＣＰＵ１１０が、辞書伸張処理のステップＣ１８において第１復号処理を実行する代わりに、ＲＯＭ１２０ｆの第６復号プログラム１２０６ｆを実行することによって実現される処理である。
【０２６５】
まず、ＣＰＵ１１０は、符号列先頭の１単位分の符号列から通常の方法で文字列を復号する（ステップＱ１０）。続いて、復号対象となるビット位置の符号（フラグ）が「０」の場合には（ステップＱ１２；Ｙｅｓ）、ＣＰＵ１１０は直前に復号した文字列を直前文字列として記憶する（ステップＱ１４）。続いて、リンクテーブル１２６０の第１文字列に直前文字列が記憶されている場合には（ステップＱ１６；Ｙｅｓ）、ＣＰＵ１１０は第１文字列に直前文字列が、第２文字列に参照文字列が含まれる組を適合組として抽出し、適合組格納領域１３６０に記憶する（ステップＱ１８）。
【０２６６】
さらに、ＣＰＵ１１０は、抽出した組数をＮの値として代入し（ステップＱ２０）、符号列からｌｏｇ2Ｎビット分の符号列から表される値を変数ｍの値として代入する（ステップＱ２２）。そして、適合組格納領域１３６０に記憶されているｍ行目の適合組から、第２文字列を複写して復号する（ステップＱ２４）。そして、符号列の処理が総て終了していない場合には（ステップＱ２８；Ｎｏ）、次の符号列を選択して（ステップＱ３０）、ステップＱ１２から処理を繰り返し実行する。また、総ての符号列の処理が終了した場合には、第６復号処理を終了する（ステップＱ２８；Ｙｅｓ）。
【０２６７】
ここで、図を用いて第６復号処理について具体的に説明する。第６復号処理は、図４７に示した符号化の処理を逆の手順で実行することによって実現される処理である。
【０２６８】
図４７を用いて具体的に説明する。なお、この場合「…する」までが復号されているものとする。まず、ＣＰＵ１１０は、フラグが「０」であることから、直前文字列として「する」を記憶する（図５０のステップＱ１４）。そして、リンクテーブル１２６０（図４５）の第１文字列に直前文字列「する」が記憶されており、第２文字列に参照文字列が記憶されている組（１組目と２組目）を抽出する（ステップＱ１８）。そして、抽出した組数は２組であることから、ｌｏｇ2２ビット分として１ビットの符号を符号列「０」から選択する（ステップＱ２２）。従って、「０」に対応する１番目の第２文字列「確率」を複写して復号する（ステップＱ２４）。
【０２６９】
このように、本実施の形態によれば、参照テーブルとリンクテーブルを組み合わせることにより更に効率よく符号化及び復号を行うことができ、さらに辞書データの圧縮効率を向上させることが可能となる。また、リンクテーブルに基づいて符号化・復号を行うことにより、参照部に記憶されている文字列のみに基づいて符号化・復号する場合に比べて、高速に動作させることが可能となる。
【０２７０】
なお、本実施の形態においては、リンクテーブルを１つずつとして説明したが、これに限定されるものではなく、複数記憶していることとしても良いことは勿論である。リンクテーブルを複数記憶している場合には、主データ部に含まれている文字列が、リンクテーブルに記憶されている可能性が高くなることにより、効率よく符号化を行うことができる。しかし、リンクテーブルが１つの場合に比べて、リンクテーブルを特定するための符号が必要となり、またリンクテーブル自体の記憶領域も必要となってしまう。
【０２７１】
また、本実施の形態おいて、リンクテーブルの第２文字列に記憶する文字列は、参照文字列に記憶される文字列のみから構成されるものであっても良い。この場合、リンクテーブルに含まれる文字列が総て適合組となるため、適合組格納領域は不要となる。しかし、本実施の形態の場合は、参照テーブルに比べて適合組の数が少ないことから、少ないビット数で符号化を実行することができる。
【０２７２】
［７．変形例］
上述した実施の形態では、電子辞書、電子辞典は専用機としての電子辞書装置として説明したが、このような製品に限定されるものではなく、例えば携帯電話携帯電話やＰＤＡ（Personal Digital Assistant）、パソコン等のこれらの装置内に電子辞書装置を構築（ソフトウェア的に組み込まれることも含む。）することとしてもよいことは、勿論である。
【図面の簡単な説明】
【０２７３】
【図１】コンピュータ及び電子辞書装置の概観図。
【図２】第１の実施形態におけるコンピュータの構成図。
【図３】第１の実施形態における元英和辞典データのデータ構造の一例を示した図。
【図４】第１の実施形態における見出語テーブルのデータ構造の一例を示した図。
【図５】第１の実施形態における参照テーブルのデータ構造の一例を示した図。
【図６】第１辞書圧縮処理のフローチャートを示した図。
【図７】第１符号化処理の動作を説明した図。
【図８】第１の実施形態における動作を説明した図。
【図９】第１の実施形態における電子辞書の構成図。
【図１０】第１の実施の形態における検索テーブルの一例を示した図。
【図１１】辞書伸張処理のフローチャートを示した図。
【図１２】第１復号処理のフローチャートを示した図。
【図１３】第２の実施形態におけるコンピュータのハードディスクの構成を示した図。
【図１４】参照頻度テーブルの一例を示した図。
【図１５】符号系統。
【図１６】第２符号化処理のフローチャートを示した図。
【図１７】第２の実施形態における動作を説明した図。
【図１８】第２の実施の形態における電子辞書装置のＲＯＭを示した図。
【図１９】第２復号処理のフローチャートを示した図。
【図２０】第３の実施形態におけるコンピュータのハードディスクの構成を示した図。
【図２１】第２辞書圧縮処理のフローチャートを示した図。
【図２２】第３符号化処理のフローチャートを示した図。
【図２３】第３の実施形態における元英和辞典データのデータ構造の一例を示した図。
【図２４】第３の実施形態における動作を説明した図。
【図２５】第３の実施形態における電子辞書装置のＲＯＭを示した図。
【図２６】第３復号処理のフローチャートを示した図。
【図２７】第４の実施形態におけるコンピュータのハードディスクの構成を示した図。
【図２８】第４の実施形態におけるコンピュータのＲＡＭの構成を示した図。
【図２９】文字列蓄積記憶領域のデータ構成の一例を示した図。
【図３０】第４符号化処理のフローチャートを示した図。
【図３１】第４の実施形態における元英和辞典データのデータ構造の一例を示した図。
【図３２】第４の実施形態における動作を説明した図。
【図３３】第４の実施形態における電子辞書装置のＲＯＭの構成を示した図。
【図３４】第４の実施形態における電子辞書装置のＲＡＭの構成を示した図。
【図３５】第４復号処理のフローチャートを示した図。
【図３６】第５の実施形態におけるコンピュータのハードディスクの構成を示した図。
【図３７】第５の実施形態におけるコンピュータのＲＡＭの構成を示した図。
【図３８】第３辞書圧縮処理のフローチャートを示した図。
【図３９】第５の実施形態における動作を説明した図。
【図４０】第５の実施形態における電子辞書装置のＲＯＭの構成を示した図。
【図４１】第５の実施形態における電子辞書装置のＲＡＭの構成を示した図。
【図４２】第５復号処理のフローチャートを示した図。
【図４３】第６の実施形態におけるコンピュータのハードディスクの構成を示した図。
【図４４】第６の実施形態におけるコンピュータのＲＡＭの構成を示した図。
【図４５】第６の実施形態におけるリンクテーブルのデータ構成の一例を示した図。
【図４６】第４辞書圧縮処理のフローチャートを示した図。
【図４７】第６の実施形態における動作を説明した図。
【図４８】第６の実施形態における電子辞書装置のＲＯＭの構成を示した図。
【図４９】第６の実施形態における電子辞書装置のＲＡＭの構成を示した図。
【図５０】第６復号処理のフローチャートを示した図。
【符号の説明】
【０２７４】
１    コンピュータ
１０    ＣＰＵ
２０、２０ｂ、２０ｃ、２０ｄ、２０ｅ、２０ｆ    ハードディスク
２００    辞書データ
２０２  参照部
２０４  主データ部
２０６    参照テーブル
２０６ｂ  参照頻度テーブル
２０８    第１辞書圧縮プログラム
２０８ｃ  第２辞書圧縮プログラム
２０８ｅ  第３辞書圧縮プログラム
２０８ｆ  第４辞書圧縮プログラム
２１０    第１符号化プログラム
２１０ｂ  第２符号化プログラム
２１０ｃ  第３符号化プログラム
２１０ｄ  第４符号化プログラム
２６０    リンクテーブル
３０、３０ｄ、３０ｅ、３０ｆ    ＲＡＭ
３００    圧縮後辞書データ
３０２    圧縮後参照部
３０４    圧縮後主データ部
３４０    文字列蓄積記憶領域
３５０    抽出文字列格納領域
３６０    適合組格納領域
４０    ＲＯＭ
５０    入力部
６０    表示部
７０    バス
１００    電子辞書装置
１１０    ＣＰＵ
１２０、１２０ｂ、１２０ｃ、１２０ｄ、１２０ｅ、１２０ｆ    ＲＯＭ
１２０２  参照テーブル
１２０２ｂ  参照頻度テーブル
１２０４  辞書伸張プログラム
１２０６  第１復号プログラム
１２０６ｂ  第２復号プログラム
１２０６ｃ  第３復号プログラム
１２０６ｄ  第４復号プログラム
１２０６ｅ  第５復号プログラム
１２０６ｆ  第６復号プログラム
１２２０  可変長符号決定プログラム
１２６０  リンクテーブル
１３０、１３０ｄ、１３０ｅ、１３０ｆ    ＲＡＭ
１３００  参照部伸張領域
１３０２  参照部
１３０４  検索テーブル
１３４０  文字列蓄積記憶領域
１３５０  抽出文字列格納領域
１３６０  適合組格納領域
１４０    ＥＥＰＲＯＭ
１４００  圧縮後辞書データ
１４０２  圧縮後参照部
１４０４  圧縮後主データ部
１５０    入力部
１６０    表示部
１７０    バス
【図１】
2005284616.tif 000003
【図２】
2005284616.tif 000004
【図３】
2005284616.tif 000005
【図４】
2005284616.tif 000006
【図５】
2005284616.tif 000007
【図６】
2005284616.tif 000008
【図７】
2005284616.tif 000009
【図８】
2005284616.tif 000010
【図９】
2005284616.tif 000011
【図１０】
2005284616.tif 000012
【図１１】
2005284616.tif 000013
【図１２】
2005284616.tif 000014
【図１３】
2005284616.tif 000015
【図１４】
2005284616.tif 000016
【図１５】
2005284616.tif 000017
【図１６】
2005284616.tif 000018
【図１７】
2005284616.tif 000019
【図１８】
2005284616.tif 000020
【図１９】
2005284616.tif 000021
【図２０】
2005284616.tif 000022
【図２１】
2005284616.tif 000023
【図２２】
2005284616.tif 000024
【図２３】
2005284616.tif 000025
【図２４】
2005284616.tif 000026
【図２５】
2005284616.tif 000027
【図２６】
2005284616.tif 000028
【図２７】
2005284616.tif 000029
【図２８】
2005284616.tif 000030
【図２９】
2005284616.tif 000031
【図３０】
2005284616.tif 000032
【図３１】
2005284616.tif 000033
【図３２】
2005284616.tif 000034
【図３３】
2005284616.tif 000035
【図３４】
2005284616.tif 000036
【図３５】
2005284616.tif 000037
【図３６】
2005284616.tif 000038
【図３７】
2005284616.tif 000039
【図３８】
2005284616.tif 000040
【図３９】
2005284616.tif 000041
【図４０】
2005284616.tif 000042
【図４１】
2005284616.tif 000043
【図４２】
2005284616.tif 000044
【図４３】
2005284616.tif 000045
【図４４】
2005284616.tif 000046
【図４５】
2005284616.tif 000047
【図４６】
2005284616.tif 000048
【図４７】
2005284616.tif 000049
【図４８】
2005284616.tif 000050
【図４９】
2005284616.tif 000051
【図５０】
2005284616.tif 000052