JP3115066B2 - 辞書検索方法 - Google Patents
辞書検索方法Info
- Publication number
- JP3115066B2 JP3115066B2 JP03324706A JP32470691A JP3115066B2 JP 3115066 B2 JP3115066 B2 JP 3115066B2 JP 03324706 A JP03324706 A JP 03324706A JP 32470691 A JP32470691 A JP 32470691A JP 3115066 B2 JP3115066 B2 JP 3115066B2
- Authority
- JP
- Japan
- Prior art keywords
- character
- address
- dictionary
- character string
- candidate
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
【0001】
【産業上の利用分野】本発明はデータ圧縮における辞書
検索方法に係わり、特に既に符号化済みの文字列を相異
なる部分文字列に分け、該部分文字列を辞書に登録して
おき、入力文字列と最長に一致する部分文字列を辞書か
ら検索し、該最長一致文字列の番号を指定して符号化す
るデータ圧縮における辞書検索方法に関する。
検索方法に係わり、特に既に符号化済みの文字列を相異
なる部分文字列に分け、該部分文字列を辞書に登録して
おき、入力文字列と最長に一致する部分文字列を辞書か
ら検索し、該最長一致文字列の番号を指定して符号化す
るデータ圧縮における辞書検索方法に関する。
【0002】近年、文字コード、ベクトル情報、画像な
どの様々な種類のデータがコンピュータで扱われるよう
になっており、扱われるデータ量も急速に増加してきて
いる。大量のデータを扱う時は、データの中の冗長な部
分を省いてデータ量を圧縮することで、記憶容量を減ら
したり、速く伝送したりできるようになる。様々なデー
タを1つの方式でデータ圧縮できる方法としてユニバー
サル符号化が提案されている。
どの様々な種類のデータがコンピュータで扱われるよう
になっており、扱われるデータ量も急速に増加してきて
いる。大量のデータを扱う時は、データの中の冗長な部
分を省いてデータ量を圧縮することで、記憶容量を減ら
したり、速く伝送したりできるようになる。様々なデー
タを1つの方式でデータ圧縮できる方法としてユニバー
サル符号化が提案されている。
【0003】
【従来の技術】このユニバーサル符号は、情報保存型の
データ圧縮方法であり、データ圧縮時に情報源の統計的
な性質を予め仮定しないため、種々のタイプ(文字コー
ド、オブジェクトコードなど)のデータに適用すること
ができる。文書画像では、文字の輪郭等や文字間隔に類
似性があり、又、網点画像は網点周期性、網点形状の同
一性等が類似している。この類似性の持つ冗長性をユニ
バーサル符号により削減し、有効な圧縮を行うことがで
きる。尚、以下では、情報理論で用いられている呼称を
踏襲し、データの1ワード単位を文字と呼び、データが
任意ワードつながったものを文字列と呼ぶことにする。
データ圧縮方法であり、データ圧縮時に情報源の統計的
な性質を予め仮定しないため、種々のタイプ(文字コー
ド、オブジェクトコードなど)のデータに適用すること
ができる。文書画像では、文字の輪郭等や文字間隔に類
似性があり、又、網点画像は網点周期性、網点形状の同
一性等が類似している。この類似性の持つ冗長性をユニ
バーサル符号により削減し、有効な圧縮を行うことがで
きる。尚、以下では、情報理論で用いられている呼称を
踏襲し、データの1ワード単位を文字と呼び、データが
任意ワードつながったものを文字列と呼ぶことにする。
【0004】ユニバーサル符号の代表的な方法として、
ジブ−レンペル(Ziv-Lempel)符号がある。例えば、宗像
「Ziv-Lempelのデータ圧縮法」、情報処理、Vol.26,No.
1,1985年参照。このZiv-Lempel符号では、ユニバーサ
ル型と、増分分解型(Incremental parsing) の2つの
アルゴリズムが提案されており、ユニバーサル型アルゴ
リズムを用いた実用的な方法として、LZSS符号(T.
C. Bell,"Better OMP/LText Compression", IEEE Tran
s. on Commun., Vol. COM-34, No.12, Dec.1986)があ
り、又、増分分解型アルゴリズムを用いた実用的な方法
として、LZW(Lempel- Ziv- Welch)符号がある(T.A.
Welch, " A Technique for High-Performance Data Co
mpression" , Computer, June 1984)。これらの符号の
内、高速処理できることと、アルゴリズムの簡単さから
LZW符号が記憶装置のファイル圧縮などで使われるよ
うになっている。
ジブ−レンペル(Ziv-Lempel)符号がある。例えば、宗像
「Ziv-Lempelのデータ圧縮法」、情報処理、Vol.26,No.
1,1985年参照。このZiv-Lempel符号では、ユニバーサ
ル型と、増分分解型(Incremental parsing) の2つの
アルゴリズムが提案されており、ユニバーサル型アルゴ
リズムを用いた実用的な方法として、LZSS符号(T.
C. Bell,"Better OMP/LText Compression", IEEE Tran
s. on Commun., Vol. COM-34, No.12, Dec.1986)があ
り、又、増分分解型アルゴリズムを用いた実用的な方法
として、LZW(Lempel- Ziv- Welch)符号がある(T.A.
Welch, " A Technique for High-Performance Data Co
mpression" , Computer, June 1984)。これらの符号の
内、高速処理できることと、アルゴリズムの簡単さから
LZW符号が記憶装置のファイル圧縮などで使われるよ
うになっている。
【0005】LZW符号化 LZW符号化においては、書き換え可能な辞書を設け、
入力文字列を相異なる文字列に分け、この文字列を出現
した順に番号を付けて辞書に登録すると共に、現在入力
している文字列を辞書に登録してある最長一致文字列の
辞書番号だけで表して符号化する。
入力文字列を相異なる文字列に分け、この文字列を出現
した順に番号を付けて辞書に登録すると共に、現在入力
している文字列を辞書に登録してある最長一致文字列の
辞書番号だけで表して符号化する。
【0006】図8はLZW符号化説明図、図9は辞書構
成の説明図、図10はLZW符号化処理の流れ図であ
る。尚、説明を簡単にするために、a,b,c3文字か
らなる文字列をLZW符号化してデータ圧縮するものと
する。予め、全文字につき一文字からなる文字列(a,
b,c)に登録番号を付して辞書に初期登録すると共
に、辞書の登録数Nを文字種数Mとする(M→N)。・
・ステップ101
成の説明図、図10はLZW符号化処理の流れ図であ
る。尚、説明を簡単にするために、a,b,c3文字か
らなる文字列をLZW符号化してデータ圧縮するものと
する。予め、全文字につき一文字からなる文字列(a,
b,c)に登録番号を付して辞書に初期登録すると共
に、辞書の登録数Nを文字種数Mとする(M→N)。・
・ステップ101
【0007】かかる状態で、最初の文字Kを入力し、該
文字の登録番号を参照番号ωとし、これを語頭文字列(p
refix string)とする(ステップ102)。ついで、入
力データの次の文字Kを読み込み(ステップ103)、
ステップ102で求めた語等文字列ωにステップ103
で読み込んだ文字Kを加えた文字列(ωK)が現在の辞
書にあるか否かを検索する(ステップ104)。
文字の登録番号を参照番号ωとし、これを語頭文字列(p
refix string)とする(ステップ102)。ついで、入
力データの次の文字Kを読み込み(ステップ103)、
ステップ102で求めた語等文字列ωにステップ103
で読み込んだ文字Kを加えた文字列(ωK)が現在の辞
書にあるか否かを検索する(ステップ104)。
【0008】文字列(ωK)が辞書に存在すれば、文字
列(ωK)をωに置き換え(ステップ105)、しかる
後、入力データが終了したか判断し(ステップ10
6)、データが終了してなければステップ103に戻り
以降の処理を繰返し、文字列(ωK)が辞書から捜せな
くなるまで最大一致長文字列の検索を続ける。一方、ス
テップ106において、入力データが終了していれば、
参照番号ωを符号語 code(ω)として出力して(ステ
ップ107)、符号化処理を終了する。
列(ωK)をωに置き換え(ステップ105)、しかる
後、入力データが終了したか判断し(ステップ10
6)、データが終了してなければステップ103に戻り
以降の処理を繰返し、文字列(ωK)が辞書から捜せな
くなるまで最大一致長文字列の検索を続ける。一方、ス
テップ106において、入力データが終了していれば、
参照番号ωを符号語 code(ω)として出力して(ステ
ップ107)、符号化処理を終了する。
【0009】最長一致文字列の検索が続行して、ステッ
プ104において、文字列(ωK)が辞書に存在しなく
なれば、参照番号ωを符号語 code(ω)として出力
し、又、文字列(ωK)を辞書アドレスNに登録し、更
にステップ103で読み込んだ文字Kを参照番号ωに置
き換えると共に、辞書アドレスNを1インクリメントす
る(ステップ108)。次いで、ステップ106により
入力データが終了したか判断し、判断結果に応じて以降
の処理を繰り返す。
プ104において、文字列(ωK)が辞書に存在しなく
なれば、参照番号ωを符号語 code(ω)として出力
し、又、文字列(ωK)を辞書アドレスNに登録し、更
にステップ103で読み込んだ文字Kを参照番号ωに置
き換えると共に、辞書アドレスNを1インクリメントす
る(ステップ108)。次いで、ステップ106により
入力データが終了したか判断し、判断結果に応じて以降
の処理を繰り返す。
【0010】図8及び図9を参照してLZW符号化を具
体的に説明すると、以下のようになる。すなわち、図8
の入力データを左から右に向けて1文字づつ読み込む。
最初の文字aを読み込んだ時、辞書にはaの他に一致す
る文字列はないから、aの登録番号「1」(参照番号ω
=1)を符号語(code(ω))として出力する。そし
て、拡張した文字列abに登録番号4を付けて辞書に登
録する。実際の登録は文字列「1b」の形となる。続い
て、2番目の文字bが入力文字列の先頭になる。辞書に
はbの他に一致する文字列がないので、bの登録番号
(参照番号)2を符号語として出力し、拡張した文字列
baを実際には2aの形で登録番号5を付けて辞書に登
録する。
体的に説明すると、以下のようになる。すなわち、図8
の入力データを左から右に向けて1文字づつ読み込む。
最初の文字aを読み込んだ時、辞書にはaの他に一致す
る文字列はないから、aの登録番号「1」(参照番号ω
=1)を符号語(code(ω))として出力する。そし
て、拡張した文字列abに登録番号4を付けて辞書に登
録する。実際の登録は文字列「1b」の形となる。続い
て、2番目の文字bが入力文字列の先頭になる。辞書に
はbの他に一致する文字列がないので、bの登録番号
(参照番号)2を符号語として出力し、拡張した文字列
baを実際には2aの形で登録番号5を付けて辞書に登
録する。
【0011】以上により、3番目の文字aが入力文字列
の先頭になる。辞書には先頭文字aが存在するから、該
文字の登録番号1に次の文字bを付した文字列「1b」
が存在するか調べる。文字列「1b」が存在するから、
該文字列の登録番号4に次の文字cを付した文字列「4
c」が存在するか調べる。文字列「4c」は存在しない
から、最長一致文字列「1b」の登録番号「4」を符号
語として出力し、拡張した文字列「4c」を登録番号6
に辞書登録し、以後同様に符号化と辞書登録を繰り返し
て全入力文字のLZW符号化処理を実行する。
の先頭になる。辞書には先頭文字aが存在するから、該
文字の登録番号1に次の文字bを付した文字列「1b」
が存在するか調べる。文字列「1b」が存在するから、
該文字列の登録番号4に次の文字cを付した文字列「4
c」が存在するか調べる。文字列「4c」は存在しない
から、最長一致文字列「1b」の登録番号「4」を符号
語として出力し、拡張した文字列「4c」を登録番号6
に辞書登録し、以後同様に符号化と辞書登録を繰り返し
て全入力文字のLZW符号化処理を実行する。
【0012】図11はLZW復号化処理の流れ図であ
り、復号化処理では、符号化の逆の操作が行われる。す
なわち、復号化に際しては、符号化と同様に、全文字に
つき一文字からなる文字列(a,b,c)に登録番号を
付して辞書に初期登録すると共に、辞書の登録数Nを文
字種数Mとする(M→N)。・・ステップ201 ついで、最初の符号CODEを読み込み、該符号CODEをOLDc
odeとする。又、最初の符号は既に辞書に登録された一
文字の登録番号のいずれかに該当することから、入力符
号CODE(=登録番号)が示す文字Kを出力する。又、出力
した文字Kは後の例外処理のためにcharとして設定す
る。・・以上ステップ202
り、復号化処理では、符号化の逆の操作が行われる。す
なわち、復号化に際しては、符号化と同様に、全文字に
つき一文字からなる文字列(a,b,c)に登録番号を
付して辞書に初期登録すると共に、辞書の登録数Nを文
字種数Mとする(M→N)。・・ステップ201 ついで、最初の符号CODEを読み込み、該符号CODEをOLDc
odeとする。又、最初の符号は既に辞書に登録された一
文字の登録番号のいずれかに該当することから、入力符
号CODE(=登録番号)が示す文字Kを出力する。又、出力
した文字Kは後の例外処理のためにcharとして設定す
る。・・以上ステップ202
【0013】しかる後、次の符号CODEを読み込んでNEWc
odeとしてセットすると共に(ステップ203)、符号CO
DE(=登録番号)が辞書に定義(登録)されているか否かを
チェックする(ステップ204)。通常、入力した符号C
ODE(=登録番号)は前回までの処理で辞書に登録されて
いるから、ステップ204において「NO」となるか
ら、次に、符号CODE(=登録番号)が指示する辞書の登録
文字列が(ωK)か判断する。すなわち、符号CODEが指
示する辞書の登録文字列が(ωK)のように、参照番号
ωと文字Kの結合文字列であるか判断する(ステップ2
05)。
odeとしてセットすると共に(ステップ203)、符号CO
DE(=登録番号)が辞書に定義(登録)されているか否かを
チェックする(ステップ204)。通常、入力した符号C
ODE(=登録番号)は前回までの処理で辞書に登録されて
いるから、ステップ204において「NO」となるか
ら、次に、符号CODE(=登録番号)が指示する辞書の登録
文字列が(ωK)か判断する。すなわち、符号CODEが指
示する辞書の登録文字列が(ωK)のように、参照番号
ωと文字Kの結合文字列であるか判断する(ステップ2
05)。
【0014】参照番号ωと文字Kの結合文字列であれ
ば、文字Kを一時的にスタックし、参照番号ωの符号語
code(ω)(実際にはcode(ω)=ω)を新たなCODEと
し、かつ文字数Cを1カウントアップし(ステップ20
6)、ステップ205に戻る。以後、ステップ205、
206の処理をCODEが示す登録文字列が一文字に至るま
で再帰的に繰り返す。
ば、文字Kを一時的にスタックし、参照番号ωの符号語
code(ω)(実際にはcode(ω)=ω)を新たなCODEと
し、かつ文字数Cを1カウントアップし(ステップ20
6)、ステップ205に戻る。以後、ステップ205、
206の処理をCODEが示す登録文字列が一文字に至るま
で再帰的に繰り返す。
【0015】ステップ205において、CODEが示す文字
列が一文字の場合には、すなわち、符号CODEが指示する
辞書の登録文字列が(K)の場合には、Kを出力し、し
かる後、スタックしたC個の文字列をLIFO(Last i
n Fast Out)形式でポップアップして出力する。又、前
回の復号化において使用した符号OLDcodeに、今回復号
した文字列の先頭文字Kを付加した文字列(OLDcode,
K)を登録番号Nとして辞書に登録し、次にNを1イン
クリメントする(N+1→N)。更に、復号文字列の先
頭文字Kをcharとし、かつNEWcodeをOLDcodeとする。・
・以上ステップ207
列が一文字の場合には、すなわち、符号CODEが指示する
辞書の登録文字列が(K)の場合には、Kを出力し、し
かる後、スタックしたC個の文字列をLIFO(Last i
n Fast Out)形式でポップアップして出力する。又、前
回の復号化において使用した符号OLDcodeに、今回復号
した文字列の先頭文字Kを付加した文字列(OLDcode,
K)を登録番号Nとして辞書に登録し、次にNを1イン
クリメントする(N+1→N)。更に、復号文字列の先
頭文字Kをcharとし、かつNEWcodeをOLDcodeとする。・
・以上ステップ207
【0016】以後、符号入力が終了したか判断し(ステ
ップ208)、終了してなければステップ203に戻り
次の符号を読み込んで復号処理を繰り返す。ところで、
符号化処理においては、ある文字列の符号化と、該文字
列に次の先頭文字を付加した文字列の辞書登録とを同時
に行うため、次の符号化処理において直前に符号化した
文字列の符号語を使用できる。しかし、復号化処理にお
いては、直前に復号した文字列に、今回復号した文字列
の先頭文字列を付加した文字列を辞書登録するため、辞
書登録が符号化処理に比べて1回遅れる。このため、符
号化処理において、直前に符号化した文字列の符号語を
使用すると、復号化処理において、該符号語が登録(定
義)されていない場合を生じる。この場合がステップ2
04においてCODEが定義されていない状態になり、「Y
ES」となる。
ップ208)、終了してなければステップ203に戻り
次の符号を読み込んで復号処理を繰り返す。ところで、
符号化処理においては、ある文字列の符号化と、該文字
列に次の先頭文字を付加した文字列の辞書登録とを同時
に行うため、次の符号化処理において直前に符号化した
文字列の符号語を使用できる。しかし、復号化処理にお
いては、直前に復号した文字列に、今回復号した文字列
の先頭文字列を付加した文字列を辞書登録するため、辞
書登録が符号化処理に比べて1回遅れる。このため、符
号化処理において、直前に符号化した文字列の符号語を
使用すると、復号化処理において、該符号語が登録(定
義)されていない場合を生じる。この場合がステップ2
04においてCODEが定義されていない状態になり、「Y
ES」となる。
【0017】例えば、図12に示すように符号化に際し
て、文字列「a・・・z」に対してOLDcodeを出力する
と共に、文字列「a・・・za」をNEWcodeとして辞書
登録し、次の文字列「a・・・za」をNEWcodeで出力
し、文字列「a・・・zab」を辞書登録する。さて、
復号側で符号語NEWcodeを読み込んだ時、該符号語は復
号側で辞書登録されていないので、復号ができない。し
かし、NEWcodeとOLDcodeを比較すると、以下の関係 NEWcodeの文字列=OLDcodeの文字列+OLDcodeの文字列
の先頭文字(char) がある。このため、ステップ204で「NO」となれ
ば、セットされているcharをスタックすると共に、OLDc
odeをCODEとみなし、かつ、OLDcodeにcharを付加した文
字列をNEWcodeとし(ステップ209)、以後CODEを用い
てステップ205以降の処理を行う。
て、文字列「a・・・z」に対してOLDcodeを出力する
と共に、文字列「a・・・za」をNEWcodeとして辞書
登録し、次の文字列「a・・・za」をNEWcodeで出力
し、文字列「a・・・zab」を辞書登録する。さて、
復号側で符号語NEWcodeを読み込んだ時、該符号語は復
号側で辞書登録されていないので、復号ができない。し
かし、NEWcodeとOLDcodeを比較すると、以下の関係 NEWcodeの文字列=OLDcodeの文字列+OLDcodeの文字列
の先頭文字(char) がある。このため、ステップ204で「NO」となれ
ば、セットされているcharをスタックすると共に、OLDc
odeをCODEとみなし、かつ、OLDcodeにcharを付加した文
字列をNEWcodeとし(ステップ209)、以後CODEを用い
てステップ205以降の処理を行う。
【0018】図13を参照して復号化処理を具体的に説
明すると以下のようになる。最初の入力符号は「1」で
あり、一文字a,b,cについては既に登録番号1、
2、3として辞書登録されているから(図9と同様)、
辞書の参照により符号「1」に一致する登録番号の文字
列aに置き換えて出力する。次に、符号「2」について
も同様にして文字bに置き換えて出力する。この時、前
回処理した符号「1」と今回復号した最初の一文字bと
を組み合わせた「1b」を新たな登録番号4に辞書登録
する。
明すると以下のようになる。最初の入力符号は「1」で
あり、一文字a,b,cについては既に登録番号1、
2、3として辞書登録されているから(図9と同様)、
辞書の参照により符号「1」に一致する登録番号の文字
列aに置き換えて出力する。次に、符号「2」について
も同様にして文字bに置き換えて出力する。この時、前
回処理した符号「1」と今回復号した最初の一文字bと
を組み合わせた「1b」を新たな登録番号4に辞書登録
する。
【0019】3番目の符号「4」は辞書の検索により、
「1b」から「ab」と置き換えて文字列「ab」を出
力する。同時に、前回処理した符号「2」と今回復号し
た1番目の文字aとを組み合わせた文字列「2a(=a
b)」を新たな登録番号5に辞書登録する。以下、同様
に、復号処理を繰り返す。尚、図11のステップ209
の例外処理は、第6番目の入力符号「8」の復号で生じ
る。符号「8」は復号時に辞書に定義されておらず、復
号できない。この場合には、前回処理した符号「5」に
前回復号した文字列「ba」の最初の一文字bを加えた
文字列「5b」を求め、更に「2ab」、「bab」と
置き換えられて出力される。そして、前回の符号語
「5」に今回復号した文字列の文字bを加えた文字列
「5b」に登録番号「8」を付加して辞書登録する。
「1b」から「ab」と置き換えて文字列「ab」を出
力する。同時に、前回処理した符号「2」と今回復号し
た1番目の文字aとを組み合わせた文字列「2a(=a
b)」を新たな登録番号5に辞書登録する。以下、同様
に、復号処理を繰り返す。尚、図11のステップ209
の例外処理は、第6番目の入力符号「8」の復号で生じ
る。符号「8」は復号時に辞書に定義されておらず、復
号できない。この場合には、前回処理した符号「5」に
前回復号した文字列「ba」の最初の一文字bを加えた
文字列「5b」を求め、更に「2ab」、「bab」と
置き換えられて出力される。そして、前回の符号語
「5」に今回復号した文字列の文字bを加えた文字列
「5b」に登録番号「8」を付加して辞書登録する。
【0020】以上のように、ユニバーサル符号は、符号
化対象の性質が未知でも、それを学習しながら符号化し
てゆく圧縮法であり、既出のデータ列を辞書に登録して
行き、同じデータ列が表れた時には、その登録番号を符
号化データ(符号語)として送出するというシンプルな
ものである。しかし、図10の流れ図に従って符号化す
ると、1つの文字列を辞書検索する際、最悪、辞書全体
をサーチしなければならず、このため、符号化処理に時
間がかかる問題があった。そこで、従来は、辞書検索に
外部ハッシュ法(open hashingまたはchaining)を用い
て処理速度を上げている(例えば、オーム社刊、情報処
理学会編、情報処理ハンドブック参照)。
化対象の性質が未知でも、それを学習しながら符号化し
てゆく圧縮法であり、既出のデータ列を辞書に登録して
行き、同じデータ列が表れた時には、その登録番号を符
号化データ(符号語)として送出するというシンプルな
ものである。しかし、図10の流れ図に従って符号化す
ると、1つの文字列を辞書検索する際、最悪、辞書全体
をサーチしなければならず、このため、符号化処理に時
間がかかる問題があった。そこで、従来は、辞書検索に
外部ハッシュ法(open hashingまたはchaining)を用い
て処理速度を上げている(例えば、オーム社刊、情報処
理学会編、情報処理ハンドブック参照)。
【0021】外部ハッシュ法 文字列からなる集合Sを考えた時、集合Sにおける文字
列xの格納位置のアドレスを文字列xより直接計算でき
る仕組になっていると高速の検索ができる。これを実現
するのがハッシュ法である。記憶場所(ハッシュ表)に
0〜(m-1)までのアドレスが付加されているとすると、
ハッシュ法では、関数 h:S→[0,1,2,・・・(m-1)] を1つ定めて、Sの文字列xのアドレスをh(x)で求め
る。関数hをハッシュ関数、値h(x)をxのハッシュ・
アドレスといっている。ハッシュ法は、通常、文字列の
集合Sの大きさがアドレス数mに比べて遥かに大きい場
合に用いられる。そこで、ハッシュ関数hをどのように
選んだとしても、集合Sにおける相異なる文字列x1,
x2に対してh(x1)=h(x2)となる場合が起こり得る。
これを衝突と呼び、衝突に対する対策の一つとして外部
ハッシュ法が用いられる。外部ハッシュ法は、図14に
示すように、ハッシュアドレスi毎に連結リスト(name
next)LSTを用意し、h(x)=iとなるxはその連結リ
ストの先頭から順に格納する。尚、同じハッシュアドレ
スを有するそれぞれのリストはバケット(bucket)と呼ば
れる。
列xの格納位置のアドレスを文字列xより直接計算でき
る仕組になっていると高速の検索ができる。これを実現
するのがハッシュ法である。記憶場所(ハッシュ表)に
0〜(m-1)までのアドレスが付加されているとすると、
ハッシュ法では、関数 h:S→[0,1,2,・・・(m-1)] を1つ定めて、Sの文字列xのアドレスをh(x)で求め
る。関数hをハッシュ関数、値h(x)をxのハッシュ・
アドレスといっている。ハッシュ法は、通常、文字列の
集合Sの大きさがアドレス数mに比べて遥かに大きい場
合に用いられる。そこで、ハッシュ関数hをどのように
選んだとしても、集合Sにおける相異なる文字列x1,
x2に対してh(x1)=h(x2)となる場合が起こり得る。
これを衝突と呼び、衝突に対する対策の一つとして外部
ハッシュ法が用いられる。外部ハッシュ法は、図14に
示すように、ハッシュアドレスi毎に連結リスト(name
next)LSTを用意し、h(x)=iとなるxはその連結リ
ストの先頭から順に格納する。尚、同じハッシュアドレ
スを有するそれぞれのリストはバケット(bucket)と呼ば
れる。
【0022】図15はLZW符号の辞書作成及び辞書検
索に外部ハッシュ法を採用した時のハッシュ表(辞書)
のデータ構造であり、ある文字列xにより指定されるハ
ッシュアドレスiに、文字列xに続く文字K(イクステ
ンションextension)と、文字列xに続く文字K以外の文
字を格納するアドレス(nextアドレス)と、文字Kに更
に続く文字の格納アドレス(firstアドレス)が記憶さ
れるようになっている。尚、firstアドレスは図14の
索引dictionaryに対応し、nextアドレスは連結リスト(n
ame next) に対応する。
索に外部ハッシュ法を採用した時のハッシュ表(辞書)
のデータ構造であり、ある文字列xにより指定されるハ
ッシュアドレスiに、文字列xに続く文字K(イクステ
ンションextension)と、文字列xに続く文字K以外の文
字を格納するアドレス(nextアドレス)と、文字Kに更
に続く文字の格納アドレス(firstアドレス)が記憶さ
れるようになっている。尚、firstアドレスは図14の
索引dictionaryに対応し、nextアドレスは連結リスト(n
ame next) に対応する。
【0023】図16は外部ハッシュ法による辞書構造説
明図で、(a)は従来のLZW符号化による辞書、(b)は外
部ハッシュ法による辞書、(c)は外部ハッシュ法を用い
た辞書の木構造図であり、それぞれ図8に示す順序で、
a,b,cの3文字よりなる入力文字列が発生した場合
である。図16(b)のアドレスiにはfirst欄、next欄、
extension欄が対応付けされており、図15で示した構
造でデータを記憶するようになっている。すなわち、ア
ドレスiのextension欄にはアドレスiを指示する文字
列xに連結する文字Kが書き込まれ、next欄には文字列
xに連結する文字K以外の文字を格納するアドレスが書
き込まれ、first欄には文字Kに更に連結する文字の格
納アドレス(firstアドレス)が記憶されるようになっ
ている。例えば、アドレス4の文字bに着目すると、該
アドレス4はアドレス1の文字(1文字からなる文字
列)aのfirstアドレスにより指示され、アドレス4のe
xtension欄には文字列aに連結する文字bが書き込ま
れ、next欄には文字列aに連結する別の文字aを格納す
るアドレス10が書き込まれ、first欄には文字bに更
に続く文字cのアドレス6が書き込まれている。
明図で、(a)は従来のLZW符号化による辞書、(b)は外
部ハッシュ法による辞書、(c)は外部ハッシュ法を用い
た辞書の木構造図であり、それぞれ図8に示す順序で、
a,b,cの3文字よりなる入力文字列が発生した場合
である。図16(b)のアドレスiにはfirst欄、next欄、
extension欄が対応付けされており、図15で示した構
造でデータを記憶するようになっている。すなわち、ア
ドレスiのextension欄にはアドレスiを指示する文字
列xに連結する文字Kが書き込まれ、next欄には文字列
xに連結する文字K以外の文字を格納するアドレスが書
き込まれ、first欄には文字Kに更に連結する文字の格
納アドレス(firstアドレス)が記憶されるようになっ
ている。例えば、アドレス4の文字bに着目すると、該
アドレス4はアドレス1の文字(1文字からなる文字
列)aのfirstアドレスにより指示され、アドレス4のe
xtension欄には文字列aに連結する文字bが書き込ま
れ、next欄には文字列aに連結する別の文字aを格納す
るアドレス10が書き込まれ、first欄には文字bに更
に続く文字cのアドレス6が書き込まれている。
【0024】初期時、アドレス1、2、3のextension
欄には全1文字列a,b,cが初期登録され、その他の
欄は「空(=0)」になっており、以後、後述する外部ハ
ッシュ法による符号処理が行われ、図16(c)に示す木
構造状に辞書(図16(b))が作成される。尚、(c)におい
て、□で囲んだ番号はアドレスである。以上により、例
えば、アドレス1の文字aを参照すると、該文字aに
は、アドレス4の文字bがfirst方向に連結し、該文字
bにはfirst方向に更にアドレス6の文字cが連結し、
更に、前記文字aにはアドレス10の文字aが連結し、
アドレス10の文字aには順次アドレス11、12の文
字aが連結していることが示される。また、アドレス2
の文字bに着目すると、該文字bにはアドレス5の文字
aがfirst方向に連結し、以後、アドレス8、9の文字
b,aが順次連結していることが示される。更に、アド
レス3の文字cに着目すると、該文字cにはアドレス7
の文字bがfirst方向に連結していることが示される。
欄には全1文字列a,b,cが初期登録され、その他の
欄は「空(=0)」になっており、以後、後述する外部ハ
ッシュ法による符号処理が行われ、図16(c)に示す木
構造状に辞書(図16(b))が作成される。尚、(c)におい
て、□で囲んだ番号はアドレスである。以上により、例
えば、アドレス1の文字aを参照すると、該文字aに
は、アドレス4の文字bがfirst方向に連結し、該文字
bにはfirst方向に更にアドレス6の文字cが連結し、
更に、前記文字aにはアドレス10の文字aが連結し、
アドレス10の文字aには順次アドレス11、12の文
字aが連結していることが示される。また、アドレス2
の文字bに着目すると、該文字bにはアドレス5の文字
aがfirst方向に連結し、以後、アドレス8、9の文字
b,aが順次連結していることが示される。更に、アド
レス3の文字cに着目すると、該文字cにはアドレス7
の文字bがfirst方向に連結していることが示される。
【0025】外部ハッシュ法による符号化処理 図17は外部ハッシュ法によるLZW符号化処理の流れ
図である。この符号化処理においては、外部ハッシュ法
により参照番号iの文字列に一文字を付加した文字列の
アドレスをハッシュアドレス(索引)として引く。連結
リストには、参照番号iの文字列に付加される文字を格
納するfirst,nextアドレスが格納してあり、該文字と入
力文字Kの一致を検査し、不一致ならば逐次連結リスト
を手繰ることによって、これまで出現した全ての一文字
付加文字列を検索することができる。もし、バケット中
に付加した文字列が存在しない場合には、最終的にリス
トの連結アドレスから0が得られ、該当する文字列が登
録されていないことを知ることができる。
図である。この符号化処理においては、外部ハッシュ法
により参照番号iの文字列に一文字を付加した文字列の
アドレスをハッシュアドレス(索引)として引く。連結
リストには、参照番号iの文字列に付加される文字を格
納するfirst,nextアドレスが格納してあり、該文字と入
力文字Kの一致を検査し、不一致ならば逐次連結リスト
を手繰ることによって、これまで出現した全ての一文字
付加文字列を検索することができる。もし、バケット中
に付加した文字列が存在しない場合には、最終的にリス
トの連結アドレスから0が得られ、該当する文字列が登
録されていないことを知ることができる。
【0026】予め、全文字につき一文字からなる文字列
(a,b,c,・・・)を、辞書アドレス1〜Mのextension欄に初
期登録すると共に(Mは文字種数)、辞書の先頭アドレ
スnを文字種数M+1とする(M+1→n)。また、最
初の文字Kを入力して該文字を記憶するアドレス(該文
字の参照番号)をiとし、これを語頭文字列(prefix st
ring)とする。更に、辞書における全アドレスのfirst欄
の内容first[1,NMAX]、next欄の内容next[1,NMAX]及び
アドレスM+1〜NMAXのextension欄の内容を全て
0に初期化する。・・ステップ301
(a,b,c,・・・)を、辞書アドレス1〜Mのextension欄に初
期登録すると共に(Mは文字種数)、辞書の先頭アドレ
スnを文字種数M+1とする(M+1→n)。また、最
初の文字Kを入力して該文字を記憶するアドレス(該文
字の参照番号)をiとし、これを語頭文字列(prefix st
ring)とする。更に、辞書における全アドレスのfirst欄
の内容first[1,NMAX]、next欄の内容next[1,NMAX]及び
アドレスM+1〜NMAXのextension欄の内容を全て
0に初期化する。・・ステップ301
【0027】かかる状態で、次の文字Kを入力し(ステ
ップ302)、ωにiを代入すると共に(i→ω、Kの
直前までの文字列の参照番号をωとする)、j=0とす
る(ステップ303)。また、現アドレスiの候補文字
ext(i)にfirst方向に連結する候補文字を格納するアド
レスを示すデータfirst(i)をiとする(ステップ30
4)。尚、現アドレスiの候補文字ext(i)にfirst方向
に連結する文字がなければfirst(i)=0であり、i=0
となる。
ップ302)、ωにiを代入すると共に(i→ω、Kの
直前までの文字列の参照番号をωとする)、j=0とす
る(ステップ303)。また、現アドレスiの候補文字
ext(i)にfirst方向に連結する候補文字を格納するアド
レスを示すデータfirst(i)をiとする(ステップ30
4)。尚、現アドレスiの候補文字ext(i)にfirst方向
に連結する文字がなければfirst(i)=0であり、i=0
となる。
【0028】ついで、i=0であるか判断し、換言すれ
ば、first方向に連結する候補文字が存在するかチェッ
クし(ステップ305)、存在しなければステップ30
3で保存した参照番号(アドレス)ωを符号語 code
(ω)として出力する(ステップ306)。
ば、first方向に連結する候補文字が存在するかチェッ
クし(ステップ305)、存在しなければステップ30
3で保存した参照番号(アドレス)ωを符号語 code
(ω)として出力する(ステップ306)。
【0029】しかる後、i=nとすると共に、nを1イ
ンクリメントし(n+1→n)、更にステップ302で
入力した文字Kをアドレスiのexstension欄に書き込む
(K→ext(i))。すなわち、続き文字Kを辞書登録する
(ステップ307)。次いで、j=0であるかチェック
し(ステップ308)、j=0であれば、i→first
(ω)とする(ステップ309)。これにより、Kの直前
に入力した文字を記憶するアドレス(=Kの直前に入力
した文字迄の参照番号ωが指示するアドレス)のfirst欄
にi(今回の文字Kを格納するアドレス)が書き込まれ
ることになる。
ンクリメントし(n+1→n)、更にステップ302で
入力した文字Kをアドレスiのexstension欄に書き込む
(K→ext(i))。すなわち、続き文字Kを辞書登録する
(ステップ307)。次いで、j=0であるかチェック
し(ステップ308)、j=0であれば、i→first
(ω)とする(ステップ309)。これにより、Kの直前
に入力した文字を記憶するアドレス(=Kの直前に入力
した文字迄の参照番号ωが指示するアドレス)のfirst欄
にi(今回の文字Kを格納するアドレス)が書き込まれ
ることになる。
【0030】以後、ステップ302で入力した文字Kの
アドレスをiとし(ステップ310)、データが終了し
たかチェックし(ステップ311)、終了していればi
→ωとした後、ωを符号語 code(ω)として出力して
(ステップ312)、符号化処理を終了し、データが終
了してなければステップ302に戻り以降の処理を繰り
返す。
アドレスをiとし(ステップ310)、データが終了し
たかチェックし(ステップ311)、終了していればi
→ωとした後、ωを符号語 code(ω)として出力して
(ステップ312)、符号化処理を終了し、データが終
了してなければステップ302に戻り以降の処理を繰り
返す。
【0031】一方、ステップ305においてi≠0であ
れば、換言すればfirst方向に連結する候補文字が存在
すれば、該文字(アドレスiのextension欄に書き込ま
れている文字ext(i))がステップ302で入力した文字
Kと一致するか調べる(ステップ313)。一致してい
ればステップ311に飛び、データ終了していれば、i
→ωとした後、ωを符号語 code(ω)として出力して
(ステップ312)、符号化処理を終了し、データが終
了してなければステップ302に戻り、更に次の文字を
入力して以降の最長一致文字列の検索処理を繰り返す。
れば、換言すればfirst方向に連結する候補文字が存在
すれば、該文字(アドレスiのextension欄に書き込ま
れている文字ext(i))がステップ302で入力した文字
Kと一致するか調べる(ステップ313)。一致してい
ればステップ311に飛び、データ終了していれば、i
→ωとした後、ωを符号語 code(ω)として出力して
(ステップ312)、符号化処理を終了し、データが終
了してなければステップ302に戻り、更に次の文字を
入力して以降の最長一致文字列の検索処理を繰り返す。
【0032】ステップ313において、first方向に連
結する候補文字がステップ302で入力した文字Kと一
致してなければ、jにiを代入すると共に、アドレスi
のnext欄に書き込まれているアドレスデータnext(i)を
新たなiとし(ステップ314)、ステップ305に戻
る。尚、next方向に連結する文字がなければアドレスi
のnext欄には0が書き込まれており、i=0となる。
結する候補文字がステップ302で入力した文字Kと一
致してなければ、jにiを代入すると共に、アドレスi
のnext欄に書き込まれているアドレスデータnext(i)を
新たなiとし(ステップ314)、ステップ305に戻
る。尚、next方向に連結する文字がなければアドレスi
のnext欄には0が書き込まれており、i=0となる。
【0033】以後、i≠0であればステップ313に移
行し同様の最長一致文字列の検索処理が繰り返えされ、
最早一致文字が存在しなくなるとステップ305におい
てi=0となり、ステップ303で保存した参照番号
(アドレス)ωを符号語 code(ω)として出力し、前
述の処理を繰り返す。尚、ステップ314の処理の直後
のステップ305でi=0が判断されると、ステップ3
08においてj≠0となり、i→next(ω)とされる(ス
テップ315)。これにより、Kの直前に入力した文字
迄の参照番号ωが指示するアドレスのnext欄にi(今回
の文字Kを格納するアドレス)が書き込まれることにな
る。
行し同様の最長一致文字列の検索処理が繰り返えされ、
最早一致文字が存在しなくなるとステップ305におい
てi=0となり、ステップ303で保存した参照番号
(アドレス)ωを符号語 code(ω)として出力し、前
述の処理を繰り返す。尚、ステップ314の処理の直後
のステップ305でi=0が判断されると、ステップ3
08においてj≠0となり、i→next(ω)とされる(ス
テップ315)。これにより、Kの直前に入力した文字
迄の参照番号ωが指示するアドレスのnext欄にi(今回
の文字Kを格納するアドレス)が書き込まれることにな
る。
【0034】以上要約すれば、新たな文字Kを入力した
時、それ迄の文字列に連結する候補文字をfirst方向に
求め、見つかればfirst方向に同様に求めて行き、見つ
からなくなればnext方向に調べ、見つかれば、再びfirs
t方向に調べて行き、以後同様な処理を繰り返して見つ
からなくなった時の参照番号iをωとして最長一致文字
列の符号語code(ω)を出力すると共に、アドレスiに最
新の入力文字についてのfirst, next, extension等を登
録するものである。以上の流れ図に従って、図8の最上
段に示す文字列を符号化出力してゆくと、最下段の如く
文字列が辞書登録されて行き、図18、図19、図20
の斜線で示すように辞書登録量が増加して行く。尚、図
18(a)は初期化された後の状態である。
時、それ迄の文字列に連結する候補文字をfirst方向に
求め、見つかればfirst方向に同様に求めて行き、見つ
からなくなればnext方向に調べ、見つかれば、再びfirs
t方向に調べて行き、以後同様な処理を繰り返して見つ
からなくなった時の参照番号iをωとして最長一致文字
列の符号語code(ω)を出力すると共に、アドレスiに最
新の入力文字についてのfirst, next, extension等を登
録するものである。以上の流れ図に従って、図8の最上
段に示す文字列を符号化出力してゆくと、最下段の如く
文字列が辞書登録されて行き、図18、図19、図20
の斜線で示すように辞書登録量が増加して行く。尚、図
18(a)は初期化された後の状態である。
【0035】図21は従来の外部ハッシュ法による辞書
検索回路の構成図である。MPU(マイクロ・プロセッ
サ・ユニット)1は入力文字Kを読み込んで一致検査部
2のレジスタ2aに格納すると共に、辞書メモリ3より
候補文字K′とそれに繋がるfirstアドレスfωとnext
アドレスnωを読み出し、それぞれ読み込み部4のレジ
スタ4a,4b,4cにラッチする。一致検査部2の比
較回路2bは入力文字Kとレジスタ4aにラッチされた
候補文字K′が一致するか比較検査を行う。一致しない
場合には、コントローラ5をしてマルチプレクサ(MP
X)4dにより、レジスタ4cにラッチされているnext
アドレスnωを選択させる。これにより、MPU1はne
xtアドレスnωで辞書検索を行い、新たな候補文字K′
とそれに繋がるfirstアドレスfωとnextアドレスnω
を読み出し、それぞれ読み込み部4のレジスタ4a,4
b,4cにラッチして比較検査を行う。
検索回路の構成図である。MPU(マイクロ・プロセッ
サ・ユニット)1は入力文字Kを読み込んで一致検査部
2のレジスタ2aに格納すると共に、辞書メモリ3より
候補文字K′とそれに繋がるfirstアドレスfωとnext
アドレスnωを読み出し、それぞれ読み込み部4のレジ
スタ4a,4b,4cにラッチする。一致検査部2の比
較回路2bは入力文字Kとレジスタ4aにラッチされた
候補文字K′が一致するか比較検査を行う。一致しない
場合には、コントローラ5をしてマルチプレクサ(MP
X)4dにより、レジスタ4cにラッチされているnext
アドレスnωを選択させる。これにより、MPU1はne
xtアドレスnωで辞書検索を行い、新たな候補文字K′
とそれに繋がるfirstアドレスfωとnextアドレスnω
を読み出し、それぞれ読み込み部4のレジスタ4a,4
b,4cにラッチして比較検査を行う。
【0036】一方、比較回路2bにおいて、入力文字K
と候補K′が一致した場合には、コントローラ5をして
マルチプレクサ4dにより、レジスタ4bにラッチされ
ているfirstアドレスfω選択させる。これにより、M
PU1はfirstアドレスfωで辞書検索を行い、新たな
候補文字K′とそれに繋がるfirstアドレスfωとnext
アドレスnωを読み出し、それぞれ読み込み部4のレジ
スタ4a,4b,4cにラッチすると共に、次の入力文
字Kを読み取ってレジスタ2aに格納し、以後上記の比
較検査を行う。
と候補K′が一致した場合には、コントローラ5をして
マルチプレクサ4dにより、レジスタ4bにラッチされ
ているfirstアドレスfω選択させる。これにより、M
PU1はfirstアドレスfωで辞書検索を行い、新たな
候補文字K′とそれに繋がるfirstアドレスfωとnext
アドレスnωを読み出し、それぞれ読み込み部4のレジ
スタ4a,4b,4cにラッチすると共に、次の入力文
字Kを読み取ってレジスタ2aに格納し、以後上記の比
較検査を行う。
【0037】以後、上記処理が行われ、比較回路2bで
一致が取れず、しかも、マルチプレクサ4dの出力が0
となれば、換言すれば連結検出部6において検索すべき
firstアドレスfωとnextアドレスnωがもうないと確
認されると、最長一致文字列の検索が終了し、この時点
で辞書検索をストップし、以後次の入力文字に対して最
長一致文字列の検索を行う。
一致が取れず、しかも、マルチプレクサ4dの出力が0
となれば、換言すれば連結検出部6において検索すべき
firstアドレスfωとnextアドレスnωがもうないと確
認されると、最長一致文字列の検索が終了し、この時点
で辞書検索をストップし、以後次の入力文字に対して最
長一致文字列の検索を行う。
【0038】
【発明が解決しようとする課題】以上のように、外部ハ
ッシュ法によるLZW符号化処理においては、ある文字
列の末尾に連結する候補文字K′のアドレスが指定さ
れ、該アドレスに候補文字K′とfirstアドレスとnext
アドレスが格納されているため、従来の外部ハッシュ法
によらないLZW符号化に比べて辞書検索を高速に行え
る利点がある。しかし、上記外部ハッシュ法による辞書
検索では、1度の辞書アクセスに対して1つの候補文字
K′と1組のfirstアドレスとnextアドレスしか読み出
すことができないため、候補文字が多い場合検索一致に
時間が掛かる問題がある。
ッシュ法によるLZW符号化処理においては、ある文字
列の末尾に連結する候補文字K′のアドレスが指定さ
れ、該アドレスに候補文字K′とfirstアドレスとnext
アドレスが格納されているため、従来の外部ハッシュ法
によらないLZW符号化に比べて辞書検索を高速に行え
る利点がある。しかし、上記外部ハッシュ法による辞書
検索では、1度の辞書アクセスに対して1つの候補文字
K′と1組のfirstアドレスとnextアドレスしか読み出
すことができないため、候補文字が多い場合検索一致に
時間が掛かる問題がある。
【0039】以上から本発明の目的は、外部ハッシュ法
による辞書検索を高速に行える辞書検索方法を提供する
ことである。本発明の別の目的は、外部ハッシュ法によ
るLZW符号化の辞書検索において、一度の辞書検索に
より複数の候補文字を読み出し、複数の候補文字と1つ
の入力文字とを一度に照合して辞書検索を高速に行える
辞書検索方法を提供することである。
による辞書検索を高速に行える辞書検索方法を提供する
ことである。本発明の別の目的は、外部ハッシュ法によ
るLZW符号化の辞書検索において、一度の辞書検索に
より複数の候補文字を読み出し、複数の候補文字と1つ
の入力文字とを一度に照合して辞書検索を高速に行える
辞書検索方法を提供することである。
【0040】本発明の更に別の目的は、一度の辞書検索
により複数の候補文字と共に、複数のアドレスを読み出
し、複数の候補文字と1つの入力文字との比較照合結果
(第1候補と一致、第2候補と一致、いずれの候補とも
一致せず等)に基づいて次に参照すべき複数の候補文字
を直ちに前記所定アドレスから読み出して比較照合して
辞書検索を高速に行える辞書検索方法を提供することで
ある。
により複数の候補文字と共に、複数のアドレスを読み出
し、複数の候補文字と1つの入力文字との比較照合結果
(第1候補と一致、第2候補と一致、いずれの候補とも
一致せず等)に基づいて次に参照すべき複数の候補文字
を直ちに前記所定アドレスから読み出して比較照合して
辞書検索を高速に行える辞書検索方法を提供することで
ある。
【0041】
【課題を解決するための手段】図1は本発明の原理説明
図である。11は検索済文字列に連結する複数の候補文
字が検索可能となるように複数のデータ要素を前記検索
済文字列が指定するアドレスに格納して符号化済みの部
分文字列を記憶する辞書メモリ、12は入力文字を読み
込んだり、辞書メモリより候補文字、アドレス等を読み
出したり、新規文字列を辞書メモリに登録するMPU
(プロセッサ)、13は辞書メモリより同時に読み出し
た複数のデータを記憶するレジスタ部、14は1つの入
力文字と複数の候補文字との一致照合を行う比較照合
部、15は比較結果に基づいて次の複数の候補文字のア
ドレスを選択するアドレス選択部(マルチプレクサMP
X)である。前記複数のデータ要素は、例えば、 (1) 検索済文字列に連結する第1文字(ext1)と、(2) 第
1文字迄の文字列の番号(ω1)と、(3) 前記検索済文
字列に連結する文字であって第1文字とは別の第2文字
(ext 2)と、 (4) 第2文字までの文字列の番号(ω2)
と、(5) 前記検索済文字列に連結する第1、第2文字と
は別の第3文字の格納アドレス(next2)と、(6) 第1文
字に連結する第4文字の格納アドレス(first1)と、(7)
第2文字に連結する第5文字の格納アドレス(first2)
と、(8) 第1、第2文字のうち幾つ記憶されているかを
示すフラグ(flag)を有している。
図である。11は検索済文字列に連結する複数の候補文
字が検索可能となるように複数のデータ要素を前記検索
済文字列が指定するアドレスに格納して符号化済みの部
分文字列を記憶する辞書メモリ、12は入力文字を読み
込んだり、辞書メモリより候補文字、アドレス等を読み
出したり、新規文字列を辞書メモリに登録するMPU
(プロセッサ)、13は辞書メモリより同時に読み出し
た複数のデータを記憶するレジスタ部、14は1つの入
力文字と複数の候補文字との一致照合を行う比較照合
部、15は比較結果に基づいて次の複数の候補文字のア
ドレスを選択するアドレス選択部(マルチプレクサMP
X)である。前記複数のデータ要素は、例えば、 (1) 検索済文字列に連結する第1文字(ext1)と、(2) 第
1文字迄の文字列の番号(ω1)と、(3) 前記検索済文
字列に連結する文字であって第1文字とは別の第2文字
(ext 2)と、 (4) 第2文字までの文字列の番号(ω2)
と、(5) 前記検索済文字列に連結する第1、第2文字と
は別の第3文字の格納アドレス(next2)と、(6) 第1文
字に連結する第4文字の格納アドレス(first1)と、(7)
第2文字に連結する第5文字の格納アドレス(first2)
と、(8) 第1、第2文字のうち幾つ記憶されているかを
示すフラグ(flag)を有している。
【0042】
【作用】検索済文字列に連結する複数の候補文字が検索
可能となるように複数のデータ要素を前記検索済文字列
が指定する辞書メモリ11のアドレスに記憶して辞書を
作成し、最長一致文字列の検索に際して、MPU12は
検索済文字列の次の1つの入力文字を読み込むと共に、
該検索済文字列に連結する複数の候補文字及び次の候補
文字の位置を指定するアドレスデータを含むデータ要素
を辞書メモリ11より一括して読み出してレジスタ部1
3に格納する。比較照合部14は、複数個の候補文字と
1つの入力文字とを比較して一致照合を行い、一致する
候補文字が存在する場合には、アドレスデータに基づい
て次の複数の候補文字を含むデータ要素を辞書メモリか
ら読み出してレジスタ部13に格納し、以後次の入力文
字と次の複数の候補文字とを比較して最長一致検索処理
を続行する。このように、一度の辞書検索により複数の
候補文字を読み出し、複数の候補文字と1つの入力文字
とを一度に照合して辞書検索を行うようにしたから、辞
書検索を高速に行うことができる。又、一度の辞書検索
により複数の候補文字と共に、複数のアドレスを読み出
し、複数の候補文字と1つの入力文字との比較照合結果
(第1候補と一致、第2候補と一致、いずれの候補とも
一致せず等)に基づいて次に参照すべき複数の候補文字
を直ちに前記所定アドレスから読み出して比較照合して
辞書検索を高速に行うことができる。
可能となるように複数のデータ要素を前記検索済文字列
が指定する辞書メモリ11のアドレスに記憶して辞書を
作成し、最長一致文字列の検索に際して、MPU12は
検索済文字列の次の1つの入力文字を読み込むと共に、
該検索済文字列に連結する複数の候補文字及び次の候補
文字の位置を指定するアドレスデータを含むデータ要素
を辞書メモリ11より一括して読み出してレジスタ部1
3に格納する。比較照合部14は、複数個の候補文字と
1つの入力文字とを比較して一致照合を行い、一致する
候補文字が存在する場合には、アドレスデータに基づい
て次の複数の候補文字を含むデータ要素を辞書メモリか
ら読み出してレジスタ部13に格納し、以後次の入力文
字と次の複数の候補文字とを比較して最長一致検索処理
を続行する。このように、一度の辞書検索により複数の
候補文字を読み出し、複数の候補文字と1つの入力文字
とを一度に照合して辞書検索を行うようにしたから、辞
書検索を高速に行うことができる。又、一度の辞書検索
により複数の候補文字と共に、複数のアドレスを読み出
し、複数の候補文字と1つの入力文字との比較照合結果
(第1候補と一致、第2候補と一致、いずれの候補とも
一致せず等)に基づいて次に参照すべき複数の候補文字
を直ちに前記所定アドレスから読み出して比較照合して
辞書検索を高速に行うことができる。
【0043】更に、前記データ要素は、検索済文字列に
連結する第1文字(ext1)と、前記検索文字に連結する文
字であって第1文字とは別の第2文字(ext2)と、前記
検索文字列に連結する第1、第2文字とは別の第3文字
の格納アドレス(next2)と、第1文字に連結する第4文
字の格納アドレス(first1)と、第2文字に連結する第5
文字の格納アドレス(first2)と、第1、第2文字のうち
幾つ記憶されているかを示すフラグ(flag)を少なくとも
有し、(1)1つの入力文字と複数の候補文字である前記
第1、第2文字の一致照合に際して、入力文字と第1、
第2文字が共に異なる場合にはアドレス(next2)に基づ
き次のデータ要素を読み出して該データ要素が指示する
複数の候補文字と入力文字との一致照合を行い、(2)入
力文字と第1文字が一致する場合には、アドレス(firs
t1)に基づいて次の入力文字に対するデータ要素を読み
出し、該データ要素が指示する複数の候補文字と次の入
力文字との一致照合を行い、(3)入力文字と第2文字が
一致する場合には、アドレス(first2)に基づいて次の入
力文字に対するデータ要素を読み出し、該データ要素が
指示する複数の候補文字と次の入力文字との一致照合を
行って最長一致検索処理を続行する。このようにすれ
ば、一度の辞書検索により複数の候補文字と共に、複数
のアドレスを読み出し、複数の候補文字と1つの入力文
字との比較照合結果(第1候補と一致、第2候補と一
致、いずれの候補とも一致せず等)に基づいて次に参照
すべき複数の候補文字を直ちに前記所定アドレスから読
み出して比較照合を連続的に行え、辞書検索を高速に行
うことができる。
連結する第1文字(ext1)と、前記検索文字に連結する文
字であって第1文字とは別の第2文字(ext2)と、前記
検索文字列に連結する第1、第2文字とは別の第3文字
の格納アドレス(next2)と、第1文字に連結する第4文
字の格納アドレス(first1)と、第2文字に連結する第5
文字の格納アドレス(first2)と、第1、第2文字のうち
幾つ記憶されているかを示すフラグ(flag)を少なくとも
有し、(1)1つの入力文字と複数の候補文字である前記
第1、第2文字の一致照合に際して、入力文字と第1、
第2文字が共に異なる場合にはアドレス(next2)に基づ
き次のデータ要素を読み出して該データ要素が指示する
複数の候補文字と入力文字との一致照合を行い、(2)入
力文字と第1文字が一致する場合には、アドレス(firs
t1)に基づいて次の入力文字に対するデータ要素を読み
出し、該データ要素が指示する複数の候補文字と次の入
力文字との一致照合を行い、(3)入力文字と第2文字が
一致する場合には、アドレス(first2)に基づいて次の入
力文字に対するデータ要素を読み出し、該データ要素が
指示する複数の候補文字と次の入力文字との一致照合を
行って最長一致検索処理を続行する。このようにすれ
ば、一度の辞書検索により複数の候補文字と共に、複数
のアドレスを読み出し、複数の候補文字と1つの入力文
字との比較照合結果(第1候補と一致、第2候補と一
致、いずれの候補とも一致せず等)に基づいて次に参照
すべき複数の候補文字を直ちに前記所定アドレスから読
み出して比較照合を連続的に行え、辞書検索を高速に行
うことができる。
【0044】
【実施例】図2は本発明に係わる辞書メモリの1つのア
ドレスに格納されるデータの構造説明図である。ある文
字列xにより指定されるアドレスi(=ω1)には、 (1) 文字列xの最終文字に連結する第1文字(ext1)と、
(2) 第1文字迄の文字列の番号(ω1)と、(3) 前記最
終文字に連結する文字であって第1文字とは別の第2文
字(ext2)と、 (4) 第2文字までの文字列の番号
(ω2)と、(5) 前記最終文字に連結する第1、第2文
字とは別の第3文字の格納アドレス(next2)と、(6) 第
1文字に連結する第4文字の格納アドレス(first1)と、
(7) 第2文字に連結する第5文字の格納アドレス(first
2)と、(8) 第1、第2文字のうち幾つ記憶されているか
を示すフラグ(flag)が記憶されて、辞書が作成される。
ドレスに格納されるデータの構造説明図である。ある文
字列xにより指定されるアドレスi(=ω1)には、 (1) 文字列xの最終文字に連結する第1文字(ext1)と、
(2) 第1文字迄の文字列の番号(ω1)と、(3) 前記最
終文字に連結する文字であって第1文字とは別の第2文
字(ext2)と、 (4) 第2文字までの文字列の番号
(ω2)と、(5) 前記最終文字に連結する第1、第2文
字とは別の第3文字の格納アドレス(next2)と、(6) 第
1文字に連結する第4文字の格納アドレス(first1)と、
(7) 第2文字に連結する第5文字の格納アドレス(first
2)と、(8) 第1、第2文字のうち幾つ記憶されているか
を示すフラグ(flag)が記憶されて、辞書が作成される。
【0045】図3は本発明による辞書メモリの内容説明
図であり、(a)は符号化説明図、(b)は本発明の辞書であ
り、辞書メモリの各アドレスにはにはflag欄、first
1欄、first2欄、next2欄、ext1欄、ext2欄、ω1欄、ω2
欄が設けられている。図3(a)の上段に示す順序でa,
b,cの3文字よりなる入力文字列が発生すると、後述
する符号化処理により符号語が中段に示すように出力さ
れ、又、下段に示すように文字列が辞書登録される。こ
の辞書登録において、文字列は図2のデータ構造で辞書
メモリの各アドレスに登録され、その内容は図3(b)に
示すようになり、図2の表記法により表現すると図3
(c)に示す木構造状になる。
図であり、(a)は符号化説明図、(b)は本発明の辞書であ
り、辞書メモリの各アドレスにはにはflag欄、first
1欄、first2欄、next2欄、ext1欄、ext2欄、ω1欄、ω2
欄が設けられている。図3(a)の上段に示す順序でa,
b,cの3文字よりなる入力文字列が発生すると、後述
する符号化処理により符号語が中段に示すように出力さ
れ、又、下段に示すように文字列が辞書登録される。こ
の辞書登録において、文字列は図2のデータ構造で辞書
メモリの各アドレスに登録され、その内容は図3(b)に
示すようになり、図2の表記法により表現すると図3
(c)に示す木構造状になる。
【0046】例えば、アドレス1の第1文字a(ext1)
を参照すると、該第1文字aはfirst 1方向にアドレス4
(first1アドレス)のext1欄、ext2欄に格納された文字
等に連結し、該第1文字aまでの文字列(1文字列a)
の参照番号(=1)がω1欄に格納されていることが示
される。
を参照すると、該第1文字aはfirst 1方向にアドレス4
(first1アドレス)のext1欄、ext2欄に格納された文字
等に連結し、該第1文字aまでの文字列(1文字列a)
の参照番号(=1)がω1欄に格納されていることが示
される。
【0047】又、アドレス1のfirst1欄で指示された第
4アドレスのext1欄には、アドレス1のext1欄の文字a
(1文字列aの最終文字)に連結する第1文字bが書き
込まれ、第4アドレスのext2欄には、アドレス1のext1
欄の文字aに連結する第2文字aが書き込まれ、第1文
字bにはfirst1方向にアドレス6(first1アドレス)の
ext1欄に格納された文字が連結し、第2文字aにはfirs
t2方向にアドレス11(first2アドレス)のext1欄に格
納された文字が連結し、第1文字bまでの文字列(2文
字列ab)の参照番号(=4)がω1欄に格納され、第
2文字a迄の文字列(2文字列aa)の参照番号(=1
0)がω2欄に格納されていることが示される。尚、第
4アドレスのnext2欄は「空(=0)」であるから、アドレス
1の文字a(ext1)には第1、第2文字b,a以外に連
結する文字列は存在しないことがわかる。
4アドレスのext1欄には、アドレス1のext1欄の文字a
(1文字列aの最終文字)に連結する第1文字bが書き
込まれ、第4アドレスのext2欄には、アドレス1のext1
欄の文字aに連結する第2文字aが書き込まれ、第1文
字bにはfirst1方向にアドレス6(first1アドレス)の
ext1欄に格納された文字が連結し、第2文字aにはfirs
t2方向にアドレス11(first2アドレス)のext1欄に格
納された文字が連結し、第1文字bまでの文字列(2文
字列ab)の参照番号(=4)がω1欄に格納され、第
2文字a迄の文字列(2文字列aa)の参照番号(=1
0)がω2欄に格納されていることが示される。尚、第
4アドレスのnext2欄は「空(=0)」であるから、アドレス
1の文字a(ext1)には第1、第2文字b,a以外に連
結する文字列は存在しないことがわかる。
【0048】アドレス4のfirst1欄で指示された第6ア
ドレスのext1欄には、アドレス4のext1欄の文字b(2
文字列abの最終文字)に連結する第1文字cが書き込
まれ、該第1文字cまでの文字列(3文字列abc)の
参照番号(=6)がω1欄に格納されていることが示さ
れる。尚、第6アドレスのflag欄の内容は1-0であるか
ら、アドレス4の第1文字b(ext1)には文字c以外に
連結する文字は存在しないことがわかる。又、第6アド
レスのfirst1欄は「空(=0)」であるから、3文字列abc
に連結する文字がないことがわかる。
ドレスのext1欄には、アドレス4のext1欄の文字b(2
文字列abの最終文字)に連結する第1文字cが書き込
まれ、該第1文字cまでの文字列(3文字列abc)の
参照番号(=6)がω1欄に格納されていることが示さ
れる。尚、第6アドレスのflag欄の内容は1-0であるか
ら、アドレス4の第1文字b(ext1)には文字c以外に
連結する文字は存在しないことがわかる。又、第6アド
レスのfirst1欄は「空(=0)」であるから、3文字列abc
に連結する文字がないことがわかる。
【0049】アドレス4のfirst2欄で指示された第11
アドレスのext1欄には、アドレス4のext2欄の文字a
(2文字列aaの最終文字)に連結する第1文字aが書
き込まれ、該第1文字aにはfirst1方向にアドレス12
(first1アドレス)のext1欄に格納された文字が連結
し、該第1文字aまでの文字列(3文字列aaa)の参
照番号(=11)がω1欄に格納されていることが示さ
れる。尚、第6アドレスのflag欄の内容は1-0であるか
ら、アドレス4の第2文字a(ext2)には他に連結する
文字は存在しないことがわかる。
アドレスのext1欄には、アドレス4のext2欄の文字a
(2文字列aaの最終文字)に連結する第1文字aが書
き込まれ、該第1文字aにはfirst1方向にアドレス12
(first1アドレス)のext1欄に格納された文字が連結
し、該第1文字aまでの文字列(3文字列aaa)の参
照番号(=11)がω1欄に格納されていることが示さ
れる。尚、第6アドレスのflag欄の内容は1-0であるか
ら、アドレス4の第2文字a(ext2)には他に連結する
文字は存在しないことがわかる。
【0050】アドレス11のfirst1欄で指示された第1
2アドレスのext1欄には、アドレス11のext1欄の文字
a(3文字列aaaの最終文字)に連結する第1文字a
が書き込まれ、第1文字aまでの文字列(4文字列aa
aa)の参照番号(=12)がω1欄に格納されている
ことが示される。尚、第12アドレスのflag欄の内容は
1-0であるから、アドレス11の第1文字a(ext1)には
他に連結する文字は存在しないことがわかる。又、第1
2アドレスのfirst1欄は「空(=0)」であるから、4文字列
aaaaに連結する文字がないことがわかる。以下同様
に、アドレス2の文字b,アドレス3の文字cに連結す
る文字列が辞書登録されている。
2アドレスのext1欄には、アドレス11のext1欄の文字
a(3文字列aaaの最終文字)に連結する第1文字a
が書き込まれ、第1文字aまでの文字列(4文字列aa
aa)の参照番号(=12)がω1欄に格納されている
ことが示される。尚、第12アドレスのflag欄の内容は
1-0であるから、アドレス11の第1文字a(ext1)には
他に連結する文字は存在しないことがわかる。又、第1
2アドレスのfirst1欄は「空(=0)」であるから、4文字列
aaaaに連結する文字がないことがわかる。以下同様
に、アドレス2の文字b,アドレス3の文字cに連結す
る文字列が辞書登録されている。
【0051】図4及び図5は本発明による符号化処理
(辞書検索、辞書登録)の流れ図である。予め、辞書メ
モリのアドレス1〜Mのext1欄(ext1[1,M])に文字コ
ード(a,b,c,・・・)を初期登録すると共に(Mは文字種
数)、ω1欄(ω1[1,M])に文字コードに対応するアド
レス(参照番号)を初期登録し、更に、flag欄(flag
[1,M])に1-0(ext1欄のみに文字が登録されいることを
示す)を初期登録する。
(辞書検索、辞書登録)の流れ図である。予め、辞書メ
モリのアドレス1〜Mのext1欄(ext1[1,M])に文字コ
ード(a,b,c,・・・)を初期登録すると共に(Mは文字種
数)、ω1欄(ω1[1,M])に文字コードに対応するアド
レス(参照番号)を初期登録し、更に、flag欄(flag
[1,M])に1-0(ext1欄のみに文字が登録されいることを
示す)を初期登録する。
【0052】又、辞書の先頭アドレスnをM+1とする
(M+1→n)。更に、辞書における全アドレスの (1)first1欄の内容first1[1,NMAX]、(2)first2欄の内容
first2[1,NMAX]、(3)next2欄の内容next2[1,NMAX]、(4)
ext2欄の内容ext2[1,NMAX]、(5)ω2欄の内容ω2[1,NMA
X]を全て0に初期化すると共に、アドレスM+1〜NMA
Xの(6)ext1欄の内容ext1[M+1,NMAX]、(7)ω1欄の内容
ω1[N+1,NMAX]を全て0に初期化し、又、(8)flag欄flag
[N+1,NMAX]を全て0-0(ext1欄、ext2欄に文字が登録され
いないことを示す)に初期化する。
(M+1→n)。更に、辞書における全アドレスの (1)first1欄の内容first1[1,NMAX]、(2)first2欄の内容
first2[1,NMAX]、(3)next2欄の内容next2[1,NMAX]、(4)
ext2欄の内容ext2[1,NMAX]、(5)ω2欄の内容ω2[1,NMA
X]を全て0に初期化すると共に、アドレスM+1〜NMA
Xの(6)ext1欄の内容ext1[M+1,NMAX]、(7)ω1欄の内容
ω1[N+1,NMAX]を全て0に初期化し、又、(8)flag欄flag
[N+1,NMAX]を全て0-0(ext1欄、ext2欄に文字が登録され
いないことを示す)に初期化する。
【0053】更に、検索切り替えパラメータT及び登録
切り替えパラメータUをそれぞれ0にし、又、最初の入
力文字Kを入力して該文字の参照番号をiとし、これを
語頭文字列(prefix string)とする。尚、T=0は、fir
st1欄のアドレスデータが示すアドレスから次の複数の
候補文字を読み出すこと及び符号語出力に際して第1候
補文字の参照番号を出力することを意味し、T=1は、
first2欄のアドレスデータが示すアドレスから次の複数
の候補文字を読み出すこと及び符号語出力に際して第1
候補文字の参照番号を出力することを意味する。また、
U=0は、辞書登録時に文字をext1欄に登録すること
を、U=1は、ext2欄に登録することを意味する。・・
以上ステップ401
切り替えパラメータUをそれぞれ0にし、又、最初の入
力文字Kを入力して該文字の参照番号をiとし、これを
語頭文字列(prefix string)とする。尚、T=0は、fir
st1欄のアドレスデータが示すアドレスから次の複数の
候補文字を読み出すこと及び符号語出力に際して第1候
補文字の参照番号を出力することを意味し、T=1は、
first2欄のアドレスデータが示すアドレスから次の複数
の候補文字を読み出すこと及び符号語出力に際して第1
候補文字の参照番号を出力することを意味する。また、
U=0は、辞書登録時に文字をext1欄に登録すること
を、U=1は、ext2欄に登録することを意味する。・・
以上ステップ401
【0054】かかる状態で、次の入力文字Kを入力し
(ステップ402)、ついで、iをωに代入すると共に
(i→ω、入力文字Kの直前の文字迄の参照番号をωと
する)、j=0とする(ステップ403)。ついで、T
=0かチェックし(ステップ404)、T=0であれ
ば、直前の文字を格納するアドレスiにおけるfirst1ア
ドレス(first1(i))を新たなiとし(ステップ40
5)、T=1であれば、直前の文字を格納するアドレス
iにおけるfirst2アドレス(first2(i))を新たにiとす
る(ステップ406)。
(ステップ402)、ついで、iをωに代入すると共に
(i→ω、入力文字Kの直前の文字迄の参照番号をωと
する)、j=0とする(ステップ403)。ついで、T
=0かチェックし(ステップ404)、T=0であれ
ば、直前の文字を格納するアドレスiにおけるfirst1ア
ドレス(first1(i))を新たなiとし(ステップ40
5)、T=1であれば、直前の文字を格納するアドレス
iにおけるfirst2アドレス(first2(i))を新たにiとす
る(ステップ406)。
【0055】しかる後、i=0であるかチェックする
(ステップ407)。i≠0であれば、第iアドレスの
ext1欄の第1候補文字ext1(i)が入力文字Kと一致する
かチェックし(ステップ408)、一致すればT=0と
し(ステップ409)、ステップ410に飛ぶ。尚、一
致しない場合には後述するステップ421に飛び、入力
文字と第2候補文字との比較照合を行う。
(ステップ407)。i≠0であれば、第iアドレスの
ext1欄の第1候補文字ext1(i)が入力文字Kと一致する
かチェックし(ステップ408)、一致すればT=0と
し(ステップ409)、ステップ410に飛ぶ。尚、一
致しない場合には後述するステップ421に飛び、入力
文字と第2候補文字との比較照合を行う。
【0056】ステップ409でT=0とした後、iをω
に代入する(ステップ410)。すなわち、入力文字と
一致する第1候補文字を記憶するアドレスiをωとす
る。ついで、データが終了したチェックする(ステップ
411)。データが終了してなければステップ402に
戻り、次の文字Kを入力して以降の処理を繰り返し、最
長一致文字列の検索を行う。一方、データが終了してい
れば、T=0かチェックし(ステップ412)、T=0
であればステップ410で保持した第1候補文字の参照
番号ωを符号語 code(ω)として出力し(ステップ4
13)、符号化処理を終了する。
に代入する(ステップ410)。すなわち、入力文字と
一致する第1候補文字を記憶するアドレスiをωとす
る。ついで、データが終了したチェックする(ステップ
411)。データが終了してなければステップ402に
戻り、次の文字Kを入力して以降の処理を繰り返し、最
長一致文字列の検索を行う。一方、データが終了してい
れば、T=0かチェックし(ステップ412)、T=0
であればステップ410で保持した第1候補文字の参照
番号ωを符号語 code(ω)として出力し(ステップ4
13)、符号化処理を終了する。
【0057】一方、ステップ408で、第iアドレスの
ext1欄の第1候補文字ext1(i)が入力文字Kと一致しな
ければ、第iアドレスのflag(i)が1-0か、すなわち、第
2候補文字が存在するかチェックする(ステップ42
1)。第2候補文字が存在すれば、第iアドレスのext2
欄の第2候補文字ext2(i)が入力文字Kと一致するかチ
ェックし(ステップ422)、一致すればT=1とし
(ステップ423)、ステップ410に飛ぶ。尚、一致
しない場合には後述するステップ425に飛び、入力文
字と更に別の候補文字との比較照合を行う。
ext1欄の第1候補文字ext1(i)が入力文字Kと一致しな
ければ、第iアドレスのflag(i)が1-0か、すなわち、第
2候補文字が存在するかチェックする(ステップ42
1)。第2候補文字が存在すれば、第iアドレスのext2
欄の第2候補文字ext2(i)が入力文字Kと一致するかチ
ェックし(ステップ422)、一致すればT=1とし
(ステップ423)、ステップ410に飛ぶ。尚、一致
しない場合には後述するステップ425に飛び、入力文
字と更に別の候補文字との比較照合を行う。
【0058】ステップ423でT=1とした後、iをω
に代入する(ステップ410)。すなわち、入力文字と
一致する第2候補文字を記憶するアドレスiをωとす
る。ついで、データが終了したチェックする(ステップ
411)。データが終了してなければステップ402に
戻り、次の文字Kを入力して以降の処理を繰り返し、最
長一致文字列の検索を行う。一方、データが終了してい
れば、T=0かチェックし(ステップ412)、T=1
であれば第2候補文字の参照番号ω2(ω)を符号語cod
e(ω2(ω))として出力し(ステップ414)、符号化
処理を終了する。
に代入する(ステップ410)。すなわち、入力文字と
一致する第2候補文字を記憶するアドレスiをωとす
る。ついで、データが終了したチェックする(ステップ
411)。データが終了してなければステップ402に
戻り、次の文字Kを入力して以降の処理を繰り返し、最
長一致文字列の検索を行う。一方、データが終了してい
れば、T=0かチェックし(ステップ412)、T=1
であれば第2候補文字の参照番号ω2(ω)を符号語cod
e(ω2(ω))として出力し(ステップ414)、符号化
処理を終了する。
【0059】又、ステップ421で、第iアドレスのfl
ag(i)が1-0であれば、換言すれば、第2候補文字が存在
しなければ、入力文字と一致する候補文字は存在しない
ことになり、U=1とし(ステップ424)、以後、ス
テップ426以降の符号語の出力及び辞書登録処理を行
う。一方、ステップ422で第iアドレスのext2欄の第
2候補文字ext2(i)が入力文字Kと一致しなければ、換
言すれば、第1、第2候補文字が入力文字と一致しなけ
れば、iをjに代入すると共に、U=0とし、かつ、第
1、第2候補文字以外の候補文字の格納アドレスnext
2(i)を新たなiとする(next2(i)→i)。尚、別の候補
文字(next2方向に連結する候補文字)が存在しない場
合にはnext2(i)=0となり、i=0となる。・・ステッ
プ425
ag(i)が1-0であれば、換言すれば、第2候補文字が存在
しなければ、入力文字と一致する候補文字は存在しない
ことになり、U=1とし(ステップ424)、以後、ス
テップ426以降の符号語の出力及び辞書登録処理を行
う。一方、ステップ422で第iアドレスのext2欄の第
2候補文字ext2(i)が入力文字Kと一致しなければ、換
言すれば、第1、第2候補文字が入力文字と一致しなけ
れば、iをjに代入すると共に、U=0とし、かつ、第
1、第2候補文字以外の候補文字の格納アドレスnext
2(i)を新たなiとする(next2(i)→i)。尚、別の候補
文字(next2方向に連結する候補文字)が存在しない場
合にはnext2(i)=0となり、i=0となる。・・ステッ
プ425
【0060】以後、ステップ407に戻って、i=0か
チェックし、i≠0であれば、別の候補文字が存在する
から前述のステップ408以降の処理を繰り返す。しか
し、別の候補文字が存在しなければ、i=0となり、以
後、ステップ426以降の符号語の出力及び辞書登録処
理を行う。入力文字と一致する候補文字が存在しなくな
れば、ステップ426でT=0かチェックする。T=0
であれば、ステップ403で保持した第1候補文字の参
照番号ωを符号語 code(ω)として出力し(ステップ
427)、T=1であれば第2候補文字の参照番号ω2
(ω)を符号語 code(ω2(ω))として出力する(ステ
ップ428)。
チェックし、i≠0であれば、別の候補文字が存在する
から前述のステップ408以降の処理を繰り返す。しか
し、別の候補文字が存在しなければ、i=0となり、以
後、ステップ426以降の符号語の出力及び辞書登録処
理を行う。入力文字と一致する候補文字が存在しなくな
れば、ステップ426でT=0かチェックする。T=0
であれば、ステップ403で保持した第1候補文字の参
照番号ωを符号語 code(ω)として出力し(ステップ
427)、T=1であれば第2候補文字の参照番号ω2
(ω)を符号語 code(ω2(ω))として出力する(ステ
ップ428)。
【0061】符号語を出力後、iをpに代入し、又、n
をiに代入し、更にnを1インクリメントし(ステップ
429)、U=0であるかチェックする(ステップ43
0)。尚、flagが1-0で、第1候補文字のみが対象アド
レスに記憶されている場合のみ、U=1となる。ステッ
プ430でU=1であれば、入力文字Kを第pアドレス
(直前の入力文字が記憶されていたアドレス)のext2欄
に書き込み(K→ext2(p))、そのflag欄に1-1を書き込む
(1-1→flag(p))。これにより、直前の文字に入力文字
Kが連結していることが登録される。・・・ステップ4
31
をiに代入し、更にnを1インクリメントし(ステップ
429)、U=0であるかチェックする(ステップ43
0)。尚、flagが1-0で、第1候補文字のみが対象アド
レスに記憶されている場合のみ、U=1となる。ステッ
プ430でU=1であれば、入力文字Kを第pアドレス
(直前の入力文字が記憶されていたアドレス)のext2欄
に書き込み(K→ext2(p))、そのflag欄に1-1を書き込む
(1-1→flag(p))。これにより、直前の文字に入力文字
Kが連結していることが登録される。・・・ステップ4
31
【0062】ついで、iを第pアドレス(直前の文字が
記憶されていたアドレス)のω2欄に書き込む(i→ω
2(p))。これにより、今回の入力文字K迄の文字列の参
照番号がω2欄に登録されたことになる(ステップ43
2)。以後、今回の文字Kの参照番号をiにし、又、i
をωに代入し、更に、T,Uを0にし(ステップ43
3)、しかる後、データが終了したチェックする(ステ
ップ411)。データが終了してなければステップ40
2に戻り、次の入力文字を読み込んで以降の処理を繰り
返す。一方、データが終了していれば、T=0かチェッ
クし(ステップ412)、T=0であるからステップ4
33で保持した最終文字のωを符号語 code(ω)とし
て出力して(ステップ413)、符号化処理を終了す
る。
記憶されていたアドレス)のω2欄に書き込む(i→ω
2(p))。これにより、今回の入力文字K迄の文字列の参
照番号がω2欄に登録されたことになる(ステップ43
2)。以後、今回の文字Kの参照番号をiにし、又、i
をωに代入し、更に、T,Uを0にし(ステップ43
3)、しかる後、データが終了したチェックする(ステ
ップ411)。データが終了してなければステップ40
2に戻り、次の入力文字を読み込んで以降の処理を繰り
返す。一方、データが終了していれば、T=0かチェッ
クし(ステップ412)、T=0であるからステップ4
33で保持した最終文字のωを符号語 code(ω)とし
て出力して(ステップ413)、符号化処理を終了す
る。
【0063】一方、ステップ430でU=0であれば、
今回の入力文字Kを第iアドレス(何も記憶されていな
い新たなアドレス)のext1欄に書き込み(K→ext
1(i))、そのflag欄に1-0を書き込む(1-0→flag(i))。
これにより、それ迄の文字列の最終文字(直前の入力文
字)に今回の入力文字Kを連結した文字列が登録され
る。・・・ステップ441 ついで、j=0かチェックする(ステップ442)。
尚、ステップ425の処理後にi=0となれば、すなわ
ち、第1、第2候補が存在し、いずれとも一致せず、ne
xt2欄が0の場合にj≠0となり、それ以外はj=0と
なる。
今回の入力文字Kを第iアドレス(何も記憶されていな
い新たなアドレス)のext1欄に書き込み(K→ext
1(i))、そのflag欄に1-0を書き込む(1-0→flag(i))。
これにより、それ迄の文字列の最終文字(直前の入力文
字)に今回の入力文字Kを連結した文字列が登録され
る。・・・ステップ441 ついで、j=0かチェックする(ステップ442)。
尚、ステップ425の処理後にi=0となれば、すなわ
ち、第1、第2候補が存在し、いずれとも一致せず、ne
xt2欄が0の場合にj≠0となり、それ以外はj=0と
なる。
【0064】j≠0の場合には、i(今回の文字の格納
アドレス)を、アドレスjのnext2欄に書き込み(i→ne
xt2(j)、ステップ443)、以後ステップ433以降の
処理を繰り返す。j=0であれば、すなわち、第1候補
文字が存在しない場合、又は第1又は第2候補文字と一
致し、これら一致候補文字に連結する文字が存在しない
場合には、T=0かチェックし(ステップ444)、T
=0であれば、i(今回の文字の格納アドレス)を直前
の入力文字の格納アドレスωのfirst1欄に書き込み(i
→fitst1(ω)、ステップ445)、T=1であれば、i
(今回の文字の格納アドレス)を直前の入力文字の格納
アドレスωのfirst2欄に書き込み(i→fitst2(ω)、ス
テップ446)、以後ステップ433以降の処理を繰り
返す。
アドレス)を、アドレスjのnext2欄に書き込み(i→ne
xt2(j)、ステップ443)、以後ステップ433以降の
処理を繰り返す。j=0であれば、すなわち、第1候補
文字が存在しない場合、又は第1又は第2候補文字と一
致し、これら一致候補文字に連結する文字が存在しない
場合には、T=0かチェックし(ステップ444)、T
=0であれば、i(今回の文字の格納アドレス)を直前
の入力文字の格納アドレスωのfirst1欄に書き込み(i
→fitst1(ω)、ステップ445)、T=1であれば、i
(今回の文字の格納アドレス)を直前の入力文字の格納
アドレスωのfirst2欄に書き込み(i→fitst2(ω)、ス
テップ446)、以後ステップ433以降の処理を繰り
返す。
【0065】以上要約すれば、一度の辞書検索により第
1、第2候補文字ext1、ext2と共に、複数の次に参照す
べき候補文字が格納されているアドレスnext2,first1,f
irst 2を読み出しておき、(1) 入力文字が第1候補文字
と一致した場合にはfirst1アドレスより次に参照すべき
複数の候補文字とアドレスを直ちに読み出して次の入力
文字との比較照合を行い、又、(2)入力文字が第2候補
文字と一致した場合にはfirst2アドレスより次に参照す
べき複数の候補文字とアドレスを直ちに読み出して次の
入力文字との比較照合を行い、更に、(3)入力文字が第
1、第2候補文字の両方と一致しない場合には、next2
アドレスより次に参照すべき複数候補文字とアドレスを
直ちに読み出して今回の入力文字との比較照合を行い、
first,next方向に一致文字が見つからなくなると、辞書
検索を終了して最長一致文字列の符号語を出力し、つい
で辞書登録し、しかる後、次の入力文字から再び辞書検
索を開始する。以上の流れ図に従って、図3(a)の最上
段に示す文字列を符号化出力してゆくと図3(b)の辞書
が作成される。
1、第2候補文字ext1、ext2と共に、複数の次に参照す
べき候補文字が格納されているアドレスnext2,first1,f
irst 2を読み出しておき、(1) 入力文字が第1候補文字
と一致した場合にはfirst1アドレスより次に参照すべき
複数の候補文字とアドレスを直ちに読み出して次の入力
文字との比較照合を行い、又、(2)入力文字が第2候補
文字と一致した場合にはfirst2アドレスより次に参照す
べき複数の候補文字とアドレスを直ちに読み出して次の
入力文字との比較照合を行い、更に、(3)入力文字が第
1、第2候補文字の両方と一致しない場合には、next2
アドレスより次に参照すべき複数候補文字とアドレスを
直ちに読み出して今回の入力文字との比較照合を行い、
first,next方向に一致文字が見つからなくなると、辞書
検索を終了して最長一致文字列の符号語を出力し、つい
で辞書登録し、しかる後、次の入力文字から再び辞書検
索を開始する。以上の流れ図に従って、図3(a)の最上
段に示す文字列を符号化出力してゆくと図3(b)の辞書
が作成される。
【0066】図6は本発明に係わる辞書検索回路の第1
の実施例である。MPU(マイクロ・プロセッサ・ユニ
ット)12は図示しないDMA回路を介して入力文字K
を読み込んで比較照合部14の第1レジスタ14aに格
納すると共に、直前の入力文字の参照番号をアドレスと
して辞書メモリ11をアクセスし、以下のデータ (1) 所定文字に連結する第1文字(ext1)と、(2) 第1文
字迄の文字列の番号(ω1)と、(3) 前記所定文字に連
結する文字であって第1文字とは別の第2文字(ext2)
と、 (4) 第2文字までの文字列の番号(ω2)と、(5)
前記所定文字に連結する第1、第2文字とは別の第3文
字の格納アドレス(next2)と、(6) 第1文字に連結する
第4文字の格納アドレス(first1)と、(7) 第2文字に連
結する第5文字の格納アドレス(first2)と、(8) 第1、
第2文字のうち幾つ記憶されているかを示すフラグ(fla
g)を取り込むと共にコントローラ16に辞書検索の命令
を出す。これにより、コントローラ16は、上記データ
のうち所定のデータをレジスタ部13に一括して格納す
る。すなわち、flagデータをレジスタ13aに、first1
アドレスをレジスタ13bに、first2アドレスをレジス
タ13cに、next2アドレスをレジスタ13dに、第1
候補文字ext1(=K1)をレジスタ13eに、第2候補
文字ext2(=K2)をレジスタ13fに一度にラッチす
る。
の実施例である。MPU(マイクロ・プロセッサ・ユニ
ット)12は図示しないDMA回路を介して入力文字K
を読み込んで比較照合部14の第1レジスタ14aに格
納すると共に、直前の入力文字の参照番号をアドレスと
して辞書メモリ11をアクセスし、以下のデータ (1) 所定文字に連結する第1文字(ext1)と、(2) 第1文
字迄の文字列の番号(ω1)と、(3) 前記所定文字に連
結する文字であって第1文字とは別の第2文字(ext2)
と、 (4) 第2文字までの文字列の番号(ω2)と、(5)
前記所定文字に連結する第1、第2文字とは別の第3文
字の格納アドレス(next2)と、(6) 第1文字に連結する
第4文字の格納アドレス(first1)と、(7) 第2文字に連
結する第5文字の格納アドレス(first2)と、(8) 第1、
第2文字のうち幾つ記憶されているかを示すフラグ(fla
g)を取り込むと共にコントローラ16に辞書検索の命令
を出す。これにより、コントローラ16は、上記データ
のうち所定のデータをレジスタ部13に一括して格納す
る。すなわち、flagデータをレジスタ13aに、first1
アドレスをレジスタ13bに、first2アドレスをレジス
タ13cに、next2アドレスをレジスタ13dに、第1
候補文字ext1(=K1)をレジスタ13eに、第2候補
文字ext2(=K2)をレジスタ13fに一度にラッチす
る。
【0067】ついで、コントローラ16の制御で、比較
照合部14の第1、第2比較回路14b,14cは、第
1、第2の候補文字K1,K2とレジスタ14aにラッチ
してある入力文字Kを同時に比較照合する。尚、比較回
路14b,14cは、flagデータが入力されており、
(1)第1、第2候補文字の両方が共に存在するか、(2)第
1候補文字のみが存在するか、(3)第1、第2候補文字
の両方共存在しないかを認識している。
照合部14の第1、第2比較回路14b,14cは、第
1、第2の候補文字K1,K2とレジスタ14aにラッチ
してある入力文字Kを同時に比較照合する。尚、比較回
路14b,14cは、flagデータが入力されており、
(1)第1、第2候補文字の両方が共に存在するか、(2)第
1候補文字のみが存在するか、(3)第1、第2候補文字
の両方共存在しないかを認識している。
【0068】比較照合の結果、入力文字と第1候補文字
が一致する場合には、コントローラ16はアドレス選択
部(マルチプレクサ)15により、レジスタ13bに記
憶されているfirst1アドレスを選択・出力させる。
が一致する場合には、コントローラ16はアドレス選択
部(マルチプレクサ)15により、レジスタ13bに記
憶されているfirst1アドレスを選択・出力させる。
【0069】連結検出部17はfirst1アドレスが0であ
るかどうかを判断し、0であれば最早first1方向に候補
文字は存在しないから、候補文字無しをMPU12に通
知し、first1アドレスが0でなければ、該アドレスをM
PU12に通知する。MPU12はfirst1アドレスが通
知されれば、次の入力文字を読み取ってレジスタ14a
に格納すると共に、前記first1アドレスを用いて辞書メ
モリ11をアクセスし、読み取ったデータをコントロー
ラ16の制御でレジスタ部13に格納し、以後前述の比
較照合動作を繰り返す。
るかどうかを判断し、0であれば最早first1方向に候補
文字は存在しないから、候補文字無しをMPU12に通
知し、first1アドレスが0でなければ、該アドレスをM
PU12に通知する。MPU12はfirst1アドレスが通
知されれば、次の入力文字を読み取ってレジスタ14a
に格納すると共に、前記first1アドレスを用いて辞書メ
モリ11をアクセスし、読み取ったデータをコントロー
ラ16の制御でレジスタ部13に格納し、以後前述の比
較照合動作を繰り返す。
【0070】一方、MPU12は連結検出部17より、
候補文字無しを受信すれば、コントローラ16に最長一
致文字列の検索が終了した旨を通知すると共に、符号語
を作成して図示しないI/Oポートより出力し、又、辞
書メモリ11に辞書登録を行う。しかる後、入力データ
が終了してなければ、コントローラ16に辞書検索を指
令して次の入力文字列に対して同様の動作を繰り返す。
候補文字無しを受信すれば、コントローラ16に最長一
致文字列の検索が終了した旨を通知すると共に、符号語
を作成して図示しないI/Oポートより出力し、又、辞
書メモリ11に辞書登録を行う。しかる後、入力データ
が終了してなければ、コントローラ16に辞書検索を指
令して次の入力文字列に対して同様の動作を繰り返す。
【0071】以上は、比較照合部14による比較動作に
おいて、入力文字と第1候補文字が一致した場合である
が、入力文字と第2候補文字が一致した場合には、コン
トローラ16はアドレス選択部15をしてレジスタ13
cに記憶されているfirst2アドレスを選択・出力させ
る。連結検出部17はfirst2アドレスが0であるかどう
かを判断し、0であれば最早first2方向に候補文字は存
在しないから、候補文字無しをMPU12に通知し、fi
rst2アドレスが0でなければ、該アドレスをMPU12
に通知する。MPU12はfirst2アドレスが通知されれ
ば、次の入力文字を読み取ってレジスタ14aに格納す
ると共に、前記first2アドレスを用いて辞書メモリ11
をアクセスし、読み取ったデータをコントローラ16の
制御でレジスタ部13に格納し、以後前述の比較照合動
作を繰り返す。
おいて、入力文字と第1候補文字が一致した場合である
が、入力文字と第2候補文字が一致した場合には、コン
トローラ16はアドレス選択部15をしてレジスタ13
cに記憶されているfirst2アドレスを選択・出力させ
る。連結検出部17はfirst2アドレスが0であるかどう
かを判断し、0であれば最早first2方向に候補文字は存
在しないから、候補文字無しをMPU12に通知し、fi
rst2アドレスが0でなければ、該アドレスをMPU12
に通知する。MPU12はfirst2アドレスが通知されれ
ば、次の入力文字を読み取ってレジスタ14aに格納す
ると共に、前記first2アドレスを用いて辞書メモリ11
をアクセスし、読み取ったデータをコントローラ16の
制御でレジスタ部13に格納し、以後前述の比較照合動
作を繰り返す。
【0072】一方、MPU12は連結検出部17より、
候補文字無しを受信すれば、コントローラ16に最長一
致文字列の検索が終了した旨を通知すると共に、符号語
を作成して図示しないI/Oポートより出力し、又、辞
書メモリ11に辞書登録を行う。しかる後、入力データ
が終了してなければ、コントローラ16に辞書検索を指
令して次の入力文字列に対して同様の動作を繰り返す。
候補文字無しを受信すれば、コントローラ16に最長一
致文字列の検索が終了した旨を通知すると共に、符号語
を作成して図示しないI/Oポートより出力し、又、辞
書メモリ11に辞書登録を行う。しかる後、入力データ
が終了してなければ、コントローラ16に辞書検索を指
令して次の入力文字列に対して同様の動作を繰り返す。
【0073】又、比較照合の結果、入力文字が第1、第
2候補文字の両方に一致しない場合には、コントローラ
16はアドレス選択部15をしてレジスタ13dに記憶
されているnext2アドレスを選択・出力させる。連結検
出部17はnext2アドレスが0であるかどうかを判断
し、0であれば最早next2方向に候補文字は存在しない
から、候補文字無しをMPU12に通知し、next2アド
レスが0でなければ、該next2アドレスをMPU12に
通知する。MPU12はnext2アドレスが通知されれ
ば、該アドレスを用いて辞書メモリ11をアクセスし、
読み取ったデータをコントローラ16の制御でレジスタ
部13に格納し、以後前述の照合動作を繰り返す。
2候補文字の両方に一致しない場合には、コントローラ
16はアドレス選択部15をしてレジスタ13dに記憶
されているnext2アドレスを選択・出力させる。連結検
出部17はnext2アドレスが0であるかどうかを判断
し、0であれば最早next2方向に候補文字は存在しない
から、候補文字無しをMPU12に通知し、next2アド
レスが0でなければ、該next2アドレスをMPU12に
通知する。MPU12はnext2アドレスが通知されれ
ば、該アドレスを用いて辞書メモリ11をアクセスし、
読み取ったデータをコントローラ16の制御でレジスタ
部13に格納し、以後前述の照合動作を繰り返す。
【0074】一方、MPU12は連結検出部17より、
候補文字無しを受信すれば、コントローラ16に最長一
致文字列の検索が終了した旨を通知すると共に、符号語
を作成・出力し、又、辞書メモリ11に辞書登録を行
う。しかる後、入力データが終了してなければ、コント
ローラ16に辞書検索を指令して以上の動作を繰り返
す。
候補文字無しを受信すれば、コントローラ16に最長一
致文字列の検索が終了した旨を通知すると共に、符号語
を作成・出力し、又、辞書メモリ11に辞書登録を行
う。しかる後、入力データが終了してなければ、コント
ローラ16に辞書検索を指令して以上の動作を繰り返
す。
【0075】図7は本発明に係わる辞書検索回路の別の
実施例で、図6と同一部分には同一符号を付している。
図6の構成と異なる点は、(1) 辞書メモリ11に第1候
補文字、第2候補文字の参照番号ω1,ω2を記憶しない
点、(2) firstアドレスから参照番号(アドレス)への変
換メモリ21が設けられている点、(3) MPU12の符
号語出力処理が楽になっている点である。first1欄に書
き込まれているアドレスデータ(first1(i))と、該アド
レスデータで指定される第1候補文字の参照番号
(ω1)は一致し、又、first2欄に書き込まれているア
ドレスデータ(first2(i))と、該アドレスデータで指定
される第2候補文字の参照番号(ω2)は一致してい
る。従って、辞書メモリ11に第1候補文字、第2候補
文字の参照番号ω1,ω2を記憶しなくてもアドレスデー
タfirst1(i),first2(i)より求めることができる。
実施例で、図6と同一部分には同一符号を付している。
図6の構成と異なる点は、(1) 辞書メモリ11に第1候
補文字、第2候補文字の参照番号ω1,ω2を記憶しない
点、(2) firstアドレスから参照番号(アドレス)への変
換メモリ21が設けられている点、(3) MPU12の符
号語出力処理が楽になっている点である。first1欄に書
き込まれているアドレスデータ(first1(i))と、該アド
レスデータで指定される第1候補文字の参照番号
(ω1)は一致し、又、first2欄に書き込まれているア
ドレスデータ(first2(i))と、該アドレスデータで指定
される第2候補文字の参照番号(ω2)は一致してい
る。従って、辞書メモリ11に第1候補文字、第2候補
文字の参照番号ω1,ω2を記憶しなくてもアドレスデー
タfirst1(i),first2(i)より求めることができる。
【0076】このため、入力文字が第1候補文字と一致
した場合には変換メモリにfirst1(i)を第1参照番号W1
として格納し、入力文字が第2候補文字と一致した場合
にはfirst2(i)を第1参照番号W1として格納する。そし
て、第1参照番号W1で指示された第1又は第2候補文
字が次の入力文字と一致した場合には、第1参照番号W
1を第2参照番号W2にし(W1→W2)、しかる後、前述
のやり方で新たな第1参照番号W1を求めて記憶する。
しかし、第1参照番号W1で指示された第1又は第2候
補文字が次の入力文字と一致しない場合には、それまで
の第2参照番号W 2を検索した最長一致文字列の符号語
としてMPU12に入力する。このようにすれば、MP
U12が毎回一致した参照番号ωを覚えておかなくて済
み、一致後の次の検索のための文字入力迄の時間を短縮
することができる。
した場合には変換メモリにfirst1(i)を第1参照番号W1
として格納し、入力文字が第2候補文字と一致した場合
にはfirst2(i)を第1参照番号W1として格納する。そし
て、第1参照番号W1で指示された第1又は第2候補文
字が次の入力文字と一致した場合には、第1参照番号W
1を第2参照番号W2にし(W1→W2)、しかる後、前述
のやり方で新たな第1参照番号W1を求めて記憶する。
しかし、第1参照番号W1で指示された第1又は第2候
補文字が次の入力文字と一致しない場合には、それまで
の第2参照番号W 2を検索した最長一致文字列の符号語
としてMPU12に入力する。このようにすれば、MP
U12が毎回一致した参照番号ωを覚えておかなくて済
み、一致後の次の検索のための文字入力迄の時間を短縮
することができる。
【0077】以上、本発明を実施例により説明したが、
本発明は請求の範囲に記載した本発明の主旨に従い種々
の変形が可能であり、本発明はこれらを排除するもので
はない。
本発明は請求の範囲に記載した本発明の主旨に従い種々
の変形が可能であり、本発明はこれらを排除するもので
はない。
【0078】
【発明の効果】以上、本発明によれば、一度の辞書検索
により複数の候補文字を読み出し、複数の候補文字と1
つの入力文字とを一度に照合して辞書検索を行うように
したから、辞書検索を高速に行うことができる。又、本
発明によれば、一度の辞書検索により複数の候補文字と
共に、複数のアドレスを読み出し、複数の候補文字と1
つの入力文字との比較照合結果(第1候補と一致、第2
候補と一致、いずれの候補とも一致せず等)に基づいて
次に参照すべき複数の候補文字を直ちに前記所定アドレ
スから読み出して比較照合するように構成したから、連
続して動作が可能で辞書検索を高速に行うことができ
る。
により複数の候補文字を読み出し、複数の候補文字と1
つの入力文字とを一度に照合して辞書検索を行うように
したから、辞書検索を高速に行うことができる。又、本
発明によれば、一度の辞書検索により複数の候補文字と
共に、複数のアドレスを読み出し、複数の候補文字と1
つの入力文字との比較照合結果(第1候補と一致、第2
候補と一致、いずれの候補とも一致せず等)に基づいて
次に参照すべき複数の候補文字を直ちに前記所定アドレ
スから読み出して比較照合するように構成したから、連
続して動作が可能で辞書検索を高速に行うことができ
る。
【図1】本発明の原理説明図である。
【図2】本発明による辞書メモリの構造説明図である。
【図3】本発明による辞書内容説明図である。
【図4】本発明の符号化処理の第1の流れ図である。
【図5】本発明の符号化処理の第2の流れ図である。
【図6】本発明による辞書検索回路の第1の構成図であ
る。
る。
【図7】本発明による辞書検索回路の別の構成図であ
る。
る。
【図8】LZW符号化説明図である。
【図9】辞書構成の説明図である。
【図10】LZW符号化のフローチャートである。
【図11】LZW復号化のフローチャートである。
【図12】LZW復号化の例外時における説明図であ
る。
る。
【図13】LZW復号化説明図である。
【図14】外部ハッシュ法の説明図
【図15】外部ハッシュ法によるデータ構造説明図であ
る。
る。
【図16】外部ハッシュ法による辞書構造説明図であ
る。
る。
【図17】外部ハッシュ法によるLZW復号化の辞書検
索、辞書登録のフローチャートである。
索、辞書登録のフローチャートである。
【図18】辞書登録の様子を示す第1の説明図表であ
る。
る。
【図19】辞書登録の様子を示す第2の説明図表であ
る。
る。
【図20】辞書登録の様子を示す第3の説明図表であ
る。
る。
【図21】従来の外部ハッシュ法による辞書検索回路の
構成図である。
構成図である。
11 辞書メモリ 12 MPU 13 レジスタ部 14 比較照合部 15 アドレス選択部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 千葉 広隆 神奈川県川崎市中原区上小田中1015番地 富士通株式会社内 (56)参考文献 特開 昭60−116228(JP,A) 特開 平3−68219(JP,A) 特開 平3−204233(JP,A) 特開 昭59−231683(JP,A) 特開 昭58−155589(JP,A) 特開 昭61−13340(JP,A) (58)調査した分野(Int.Cl.7,DB名) H03M 7/40
Claims (2)
- 【請求項1】 既に符号化済みの文字列を相異なる部分
文字列に分け、該部分文字列を辞書に登録しておき、入
力文字列と最長に一致する部分文字列を辞書から検索
し、該最長一致文字列の番号を指定して符号化するデー
タ圧縮における辞書検索方法において、 検索済文字列に連結する複数の候補文字が検索可能とな
るように複数のデータ要素を前記検索済文字列が指定す
る記憶域に記憶して部分文字列を辞書に登録し、 最長一致文字列の検索に際して、検索済文字列に応じた
前記データ要素を辞書より一括して読み出し、 前記データ要素に含まれる複数の候補文字と1つの入力
文字とを比較して一致照合を行い、 入力文字と一致する候補文字が存在する場合には、該候
補文字が指定する記憶域からデータ要素を読み出し、次
の入力文字と該データ要素に含まれる複数の候補文字と
を比較して最長一致検索処理を続行することを特徴とす
る辞書検索方法。 - 【請求項2】 前記データ要素は、検索済文字列に連結
する第1文字(ext1)と、前記検索済文字列に連結する文
字であって第1文字とは別の第2文字(ext2)と、前記
検索済文字列に連結する第1、第2文字とは別の第3文
字の格納アドレス(next2)と、第1文字に連結する第4
文字の格納アドレス(first1)と、第2文字に連結する第
5文字の格納アドレス(first2)と、第1、第2文字のう
ち幾つ記憶されているかを示すフラグ(flag)を有し、 1つの入力文字と複数の候補文字となる前記2つの第
1、第2文字の一致照合に際して、入力文字と第1、第
2文字が共に異なる場合にはアドレス(next2)に基づい
次のデータ要素を読み出して一致照合を行い、入力文字
と第1文字が一致する場合には、アドレス(first1)に
基づいて次の入力文字に対するデータ要素を読み出して
最長一致検索処理を続行し、入力文字と第2文字が一致
する場合には、アドレス(first2)に基づいて次の入力文
字に対するデータ要素を読み出して最長一致検索処理を
続行することを特徴とする請求項1記載の辞書検索方
法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP03324706A JP3115066B2 (ja) | 1991-12-09 | 1991-12-09 | 辞書検索方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP03324706A JP3115066B2 (ja) | 1991-12-09 | 1991-12-09 | 辞書検索方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH05158987A JPH05158987A (ja) | 1993-06-25 |
JP3115066B2 true JP3115066B2 (ja) | 2000-12-04 |
Family
ID=18168804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP03324706A Expired - Fee Related JP3115066B2 (ja) | 1991-12-09 | 1991-12-09 | 辞書検索方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3115066B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0551787U (ja) * | 1991-12-13 | 1993-07-09 | 株式会社三谷バルブ | 噴出器用ポンプ |
-
1991
- 1991-12-09 JP JP03324706A patent/JP3115066B2/ja not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0551787U (ja) * | 1991-12-13 | 1993-07-09 | 株式会社三谷バルブ | 噴出器用ポンプ |
Also Published As
Publication number | Publication date |
---|---|
JPH05158987A (ja) | 1993-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4099257A (en) | Markov processor for context encoding from given characters and for character decoding from given contexts | |
JP3038223B2 (ja) | データ圧縮方式 | |
JP3115066B2 (ja) | 辞書検索方法 | |
JP3103172B2 (ja) | 辞書検索方法 | |
JP3038234B2 (ja) | データ圧縮装置の辞書検索方式 | |
JP3038233B2 (ja) | データ圧縮及び復元装置 | |
JP3130324B2 (ja) | データ圧縮方式 | |
JP2954749B2 (ja) | データ圧縮方式 | |
JPH0628149A (ja) | 複数種類データのデータ圧縮方法 | |
JP2952067B2 (ja) | データ圧縮方式 | |
JP2774350B2 (ja) | データ圧縮方法および圧縮データのデータ復元方法 | |
JP3388768B2 (ja) | データ圧縮及び復元方式 | |
JP3053656B2 (ja) | データ圧縮における辞書登録方式 | |
JPH05152971A (ja) | データ圧縮・復元方法 | |
JP2952068B2 (ja) | データ圧縮及び復元方式 | |
JP3236747B2 (ja) | データ伸長方式 | |
JP2825960B2 (ja) | データ圧縮方法及び復元方法 | |
JPH05341953A (ja) | データ圧縮方法及び装置 | |
JP2535655B2 (ja) | 辞書検索方式 | |
JP3083550B2 (ja) | データ圧縮及び復元方法 | |
JP3088740B2 (ja) | データ圧縮及び復元方式 | |
JP2999561B2 (ja) | データ圧縮及び復元装置 | |
JP3012677B2 (ja) | Zl符号化方法 | |
JP3012678B2 (ja) | データ圧縮方法 | |
JP3058711B2 (ja) | データ圧縮及び復元方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20000912 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080929 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080929 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090929 Year of fee payment: 9 |
|
LAPS | Cancellation because of no payment of annual fees |