(57)【特許請求の範囲】
【請求項１】
漢字と仮名の混在した文字列を入力する入力手段と、
単語内の漢字にそれぞれ読みを対応させたデータからなる単語候補が登録された辞書本体、単語の先頭漢字の読みと、先頭漢字の読みを同じにする単語群の辞書本体上の記憶位置とを対応づけて記憶した読みインデックス、および単語の先頭漢字と、先頭漢字を同じにする単語群の辞書本体上の記憶位置とを対応づけて記憶した先頭漢字インデックスを含む単語辞書と、
前記入力手段から入力された文字列の先頭文字種を判断し、先頭文字が仮名の場合には前記読みインデックスから辞書本体を参照して前記単語候補を検索する一方、先頭文字が漢字の場合には前記先頭漢字インデックスから辞書本体を参照して前記単語候補を検索し、前記何れか一方のインデックスで検索された前記単語候補と入力手段から入力された文字列とを、入力文字列の漢字部分は前記単語候補の漢字で、入力文字列の仮名部分は前記単語候補の読みで照合し、入力文字列の漢字部分および仮名部分が共に一致する前記単語候補を漢字表記で出力する変換手段と、
変換手段によって変換された漢字候補を出力する出力手段を備えたことを特徴とする文字変換装置。
【請求項２】
単語辞書の辞書本体は、先頭漢字の読みが１文字である前記単語候補と、２文字以上である前記単語候補をグループで記憶し、読みインデックスは入力された文字の仮名が１文字の場合と、２文字以上の場合に応じて対応する候補グループの先頭アドレスを指示することを特徴とする請求項１記載の文字変換装置。
【請求項３】
単語辞書の辞書本体への登録において、読みの割り振りのできない単語が登録される場合には、読みの割り振りのできる単位で漢字と読みが対応づけされて単語が登録されることを特徴とする請求項１記載の文字変換装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、例えば日本語ワードプロセッサなどに用いられる文字変換装置に関し、漢字と仮名が混在した文字列を正規の漢字仮名交じり文に変換したり、正規の漢字仮名交じり文を仮名文字列に変換することが可能な文字変換装置に関する。
【０００２】
【従来の技術】
従来、手書き入力の可能なペン入力装置などにより、漢字文字列を直接入力するという技術が知られている。しかしながら、直接漢字を入力する際にも漢字を忘れてしまって思い出せない時や、書くのに面倒な漢字があり、その文字は仮名で書きたいという場合がある。また、手書き入力の可能なペン入力装置で仮名を入力し、仮名漢字変換によって漢字に変換する技術も知られているが、この場合も簡単な漢字は平仮名で書くよりも入力しやすいとか、仮名の文字によっては認識されにくいので漢字に書きたいという場合がある。例えば「片りん」と入力して「片鱗」と変換したいというものである。このように漢字仮名交じりの文字列を入力して適切な漢字文字列に変換する方法として、主として次の２つの方法が知られている。
【０００３】
第１の方法は、特開昭６２−２０９６６７号公報に記載されているように、漢字仮名交じりの見出しとそれに対応する漢字の表記の辞書を持つことによって、漢字仮名交じり文の仮名漢字変換を行うというものである。例えば「片りん」の場合は「片りん」という見出しとそれに対応する漢字の表記「片鱗」が入っている辞書を持つという方法である。
【０００４】
第２の方法は、特開昭６３−０３７４６５号公報に記載されているように、漢字を仮名に直す辞書を持つことにより、入力された文字列の漢字をいったん仮名に直し、その直された仮名文字列に対して通常の仮名漢字変換を行なうというものである。例えば「片りん」の場合は「片」を仮名の「へん、かた」に直し、「へんりん、かたりん」を仮名漢字変換し、入力文字列と一致する「片鱗」を候補とする方法である。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記第１の方法では、任意の漢字と仮名の交ぜ書きによる変換を実現しようとすると、すべての組み合わせを辞書に持たなければならない。例えば「会議」という単語に対しては、図９に示すように４（２の２乗）通りの見出しを必要とする。
【０００６】
また、「小学校」のように漢字が３文字ある場合は、図１０に示すように８（２の３乗）通りの見出しを必要とする。このため辞書の容量が非常に大きくなるという問題と、見出しが多くなるため辞書検索にかかる時間も多くなるという問題がある。
【０００７】
また、交ぜ書きを制限する事によって見出しの数を減らすことはできるが、人によって書きやすい字（認識も含めて）が異なり、どの字を漢字で書くか分からないので、交ぜ書きに制限を加えることは自由度をなくすこととなり、使い勝手が悪化する。
【０００８】
また、上記第２の方法では、入力された文字列が漢字を含む場合、漢字それぞれを読みに直し、それらを組み合わせて読みの候補を作り、仮名漢字変換を行なうのであるが、仮名漢字変換の処理はボリュームが大きく、比較的時間を要するので、組み合わせの候補が多い場合には処理時間の増大という問題が起こる。
【０００９】
この発明は、このような事情を考慮してなされたもので、辞書本体に単語を登録するに際しては、従来のような見出しと表記の区別をなくし、単語内の漢字にそれぞれ読みを対応させたデータを登録し、その辞書を検索するための読みのインデックスと漢字のインデックスを持つことにより、辞書検索時間の短縮を図るとともに、辞書容量の削減を図るようにした文字変換装置を提供するものである。
【００１０】
【課題を解決するための手段】
図１はこの発明の構成を示すブロック図であり、この図に示すように、この発明は、漢字と仮名の混在した文字列を入力する入力手段２と、単語内の漢字にそれぞれ読みを対応させたデータからなる単語候補が登録された辞書本体、単語の先頭漢字の読みと、先頭漢字の読みを同じにする単語群の辞書本体上の記憶位置とを対応づけて記憶した読みインデックス、および単語の先頭漢字と、先頭漢字を同じにする単語群の辞書本体上の記憶位置とを対応づけて記憶した先頭漢字インデックスを含む単語辞書１と、前記入力手段２から入力された文字列の先頭文字種を判断し、先頭文字が仮名の場合には前記読みインデックスから辞書本体を参照して前記単語候補を検索する一方、先頭文字が漢字の場合には前記先頭漢字インデックスから辞書本体を参照して前記単語候補を検索し、前記何れか一方のインデックスで検索された前記単語候補と入力手段２から入力された文字列とを、入力文字列の漢字部分は前記単語候補の漢字で、入力文字列の仮名部分は前記単語候補の読みで照合し、入力文字列の漢字部分および仮名部分が共に一致する前記単語候補を漢字表記で出力する変換手段３と、変換手段３によって変換された漢字候補を出力する出力手段４を備えたことを特徴とする文字変換装置である。
【００１１】
上記構成においては、単語辞書１に、読みと表記とが対応づけられたデータを記憶した読み／表記テーブルを設け、単語辞書１の辞書本体を、読み／表記テーブルのアドレスを指定するためのポインタで構成することが好ましい。
【００１２】
また、単語辞書１の辞書本体への登録において、カタカナ語を登録する場合には、カタカナ語であるという識別マークと読みだけを登録するのが望ましい。
さらに、単語辞書１の辞書本体への登録において、読みの割り振りのできない単語を登録する場合には、読みの割り振りのできる単位で漢字と読みを対応づけして単語を登録するようにしたほうがよい。
【００１３】
そして、単語辞書１の辞書本体に登録する単語は、表記の１文字目に対応する読みの順に配置するのがよい。
【００１４】
この発明においては、単語辞書１の辞書本体に、見出しと表記の区別をなくし、単語内の各漢字について、漢字と読みの対応したデータを持つようにする。例えば「会議」という単語であれば、「会（かい）議（ぎ）」あるいは、「かい（会）ぎ（議）」、というようなデータを登録するようにする。このようにすることにより、組み合わせをすべて登録する必要がなく、自由な交ぜ書きが実現できる。
【００１５】
ただし、この場合、辞書検索が問題となるので、漢字と仮名の混在した文字列の読みから辞書本体を検索するための読みインデックスと、漢字と仮名の混在した文字列の先頭の文字が漢字であった場合にその先頭の漢字から辞書本体を検索するための先頭漢字インデックスとを設ける。
【００１６】
また、辞書本体には、単語内の漢字にそれぞれ読みを対応させたデータを登録するのであるが、さらに読みと漢字のデータを読み／表記テーブルというテーブルにし、辞書本体はそのテーブルへのポインタとする。これにより同じデータを効率良くまとめることができ、辞書容量のより一層の削減が可能となる。
【００１７】
さらに、漢字からの検索速度を向上させるため、辞書本体の単語の配置順を単純な読みの五十音順（ＪＩＳコード順）にせず、単語の第１文字目の漢字に着目し、第１文字目の漢字の読みが五十音順となるように配置する。そして、第１文字目の漢字が同じであれば、第２文字目以降の読みが五十音順となるように順次配置し、漢字の組み合わせが近くなるようにする。なお、第１文字目の漢字が同じ読みで表記が異なる漢字の単語については、単語の読み全体が五十音順となるように配置する。
【００１８】
例えば、「子牛」、「公私」、「子馬」という単語があるとすると、従来のように単なる単語の読み順であれば、「子牛（こうし）」、「公私（こうし）」、「子馬（こうま）」という配置であるが（同音の漢字はＪＩＳコード順に配置）、この発明の辞書本体では、「子（こ）牛（うし）」、「子（こ）馬（うま）」、「公（こう）私（し）」の順に配置する。
【００１９】
そして、単語がカタカナだけの場合、表記と読みをそれぞれ持たなくても対応が取れるので、辞書データとしてカタカナ語であるという識別マークを持ち、読みだけを登録するようにすることにより、辞書容量の削減を図る。
【００２０】
また、読みの振り分けのできないような単語に対しては、無理に読みの割り振りをせず、漢字と読みが対応する単位でデータを持つようにする。例えば「梅雨」であれば、「梅雨（つゆ）」というデータにし、「烏龍茶」であれば「烏龍（うーろん）茶（ちゃ）」というデータにする。このような構造にすることにより、「つ雨」→「梅雨」のような不自然な交ぜ書きの変換を許さず、「うーろん茶」→「烏龍茶」のような変換は可能とすることができ、これにより、誤変換を少なくする。
【００２１】
この発明において、単語辞書１としては、ＲＯＭのような内部メモリや、フロッピーディスク装置や磁気ディスク装置のような外部メモリを用いることができる。
【００２２】
入力手段２としては、キーボードや手書き入力が可能なペン入力装置などの各種の入力装置を用いることができる。
変換手段３としては、ＣＰＵ，ＲＯＭ，ＲＡＭ，Ｉ／Ｏポートからなるマイクロコンピュータを用いるのが便利である。
【００２３】
出力手段４としては、ＣＲＴディスプレイ装置や液晶ディスプレイ装置のような各種の表示装置や、熱転写型のドットプリンタやレーザープリンタのような各種の印刷装置を用いることができる。
【００２４】
【作用】
この発明によれば、単語辞書１が、単語内の漢字にそれぞれ読みを対応させたデータが登録された辞書本体と、読みインデックスと、先頭漢字インデックスから構成されているので、漢字仮名交じり文字列の組み合わせをすべて辞書本体に登録する必要がなくなり、辞書容量を削減できる。また、漢字と仮名の自由な交ぜ書きが可能となる。
【００２５】
また、単語辞書１に読み／表記テーブルを設けて、単語辞書１の辞書本体を読み／表記テーブルのアドレスを指定するためのポインタで構成した場合には、同じデータを効率良くまとめることができるので、辞書容量をさらに削減することができる。
【００２６】
さらに、単語辞書１の辞書本体への登録において、カタカナ語を登録する場合に、カタカナ語であるという識別マークと読みだけを登録するようにした場合には、辞書容量をより一層削減することができる。
【００２７】
そして、単語辞書１の辞書本体への登録において、読みの割り振りのできない単語を登録するに際し、読みの割り振りのできる単位で漢字と読みを対応づけして単語を登録するようにした場合には、不自然な交ぜ書きの変換ができないので、誤変換を少なくすることができる。
【００２８】
また、単語辞書１の辞書本体に登録する単語を、表記の１文字目に対応する読みの順に配置した場合には、漢字の組み合わせが近くなるので、漢字から辞書本体を検索する場合の検索速度を向上させることができる。
【００２９】
【実施例】
以下、図面に示す実施例に基づいてこの発明を詳述する。なお、これによってこの発明が限定されるものではない。
【００３０】
この実施例においては、主として、漢字と仮名が混在した文字列を正規の漢字仮名交じり文に変換する文字変換機能について説明するが、このような文字変換機能を達成するに必要な装置群を、ここでは文字変換装置として説明する。なお、この文字変換装置では、正規の漢字仮名交じり文を仮名文字列に変換することも可能である。
【００３１】
図２はこの発明による文字変換装置を日本語ワードプロセッサに適用した一実施例の構成を示すブロック図である。
この図において、１は装置全体を制御するＣＰＵである。２はＣＰＵ１を制御する制御プログラムを記憶したプログラム用ＲＯＭである。３は辞書用ＲＯＭであり、この辞書用ＲＯＭ３には、読みと表記とが対応づけられて記憶された単語辞書や、仮名漢字変換や漢字仮名変換の際に必要な文法テーブル、あるいは用例辞書が格納されている。文法テーブルは、付属語テーブルや接続テーブル、品詞テーブルなどから構成されている。用例辞書は、文章の用例を記憶したものであり、変換率を上げるために仮名漢字変換の際に使用される。
【００３２】
４は各種データを一時的に記憶するＲＡＭである。このＲＡＭ４には、入力文字列を記憶したり、辞書検索の結果や、変換結果などを記憶する。
５はタブレットであり、透明なパネルで構成され、ペンなどにより手書きされた文字を座標データとして検出する座標検出機能を有している。このタブレット５から、手書き入力で漢字と仮名の混在した文字列を入力することが可能である。
【００３３】
６はＬＣＤ（液晶表示装置）であり、文章作成、編集画面や文字入力結果などを表示する。７はコントローラーであり、タブレット５及びＬＣＤ６を制御する。タブレット５とコントローラ７から入力手段が構成され、ＬＣＤ６とコントローラー７から出力手段が構成される。
【００３４】
ＣＰＵ１は、タブレット５から漢字と仮名の混在した文字列が入力された場合には、辞書用ＲＯＭ３の単語辞書を検索し、検索結果として単語番号を得る。そして、検索された単語を用いて、タブレット５から入力された漢字と仮名の混在した文字列を正規の漢字仮名交じり文に変換する。
【００３５】
図３，図４，図５及び図６は辞書用ＲＯＭ３に記憶された単語辞書の構造を示す説明図である。図３は読みインデックスを示し、図４は先頭漢字インデックスを示し、図５は辞書本体を示し、図６は読み／表記テーブルを示している。
【００３６】
単語辞書は、単語内の漢字にそれぞれ読みを対応させたデータが登録された辞書本体と、漢字と仮名の混在した文字列の読みから辞書本体を検索するための読みインデックスと、漢字と仮名の混在した文字列の先頭の文字が漢字であった場合にその先頭の漢字から辞書本体を検索するための先頭漢字インデックスから構成されている。
【００３７】
この単語辞書には、読みと表記とが対応づけられたデータを記憶した読み／表記テーブルが設けられており、辞書本体は、読み／表記テーブルのアドレスを指定するためのポインタで構成されている。なお、これらの図は説明の便宜上単語登録数を少なくして示している。
【００３８】
読みインデックスは、図３に示すように、１次インデックスと２次インデックスの２段階の構造になっている。１段階目の１次インデックスは、平仮名１文字に１体１に対応しており、２段階目の２次インデックスへのポインタとなっている。２次インデックスは、単語の読み２文字目と対応しており、辞書本体へのポインタになっている。
【００３９】
２次インデックス中に書き込まれた「Ｘ」は、単語の漢字１文字目の読みが１文字であることを示している。例えば、１次インデックスが「こ」であり、２次インデックスが「Ｘ」である場合は、「子（こ）」や、「子（こ）牛（うし）」のように、漢字１文字目の読みが１文字である単語の集まりの先頭を示している。
【００４０】
また、１次インデックスが「こ」であり、２次インデックスが「う」である場合は、「公（こう）私（し）」のように、漢字１文字目の読みが２文字以上の単語の集まりの先頭を示している。この読みインデックスは、検索文字列の先頭が仮名の場合に使用する。
【００４１】
先頭漢字インデックスには、図４の左端に示された漢字で始まる単語の単語番号が格納されている。例えば、先頭漢字インデックスが「子」の場合、「子（こ）」の単語番号のｎｕｍ（ナンバー）２１、「子（こ）牛（うし）」の単語番号のｎｕｍ２２、「子（こ）馬（うま）」の単語番号のｎｕｍ２３、「子（し）」の単語番号のｎｕｍ４１などの単語番号が格納されている。先頭漢字インデックスは、ＪＩＳコード順に並べられている。この先頭漢字インデックスは、検索文字列の先頭が漢字の場合に使用する。
【００４２】
読み／表記テーブルは、読みと表記の組み合わせが格納されたテーブルであり、基本的には漢字１文字とそれに対応する読みからなっているが、「梅雨（つゆ）」のように、漢字１文字単位で読みが振り分けられないものは複数の漢字で格納されている。テーブルの並びとしてはＪＩＳのコード順に並んでいる。また、通常は１つの漢字に対して読みが複数存在するが、この場合は読みの順に配置している。
【００４３】
辞書本体には、単語が記憶されているが、図５に示すように、読み／表記テーブルのアドレスを示すポインタの集合となっている。例えば、単語番号ｎｕｍ２２の「子（こ）牛（うし）」の場合、「ａｄｒ（アドレス）０５１，ａｄｒ０２１」となっている。また「梅雨（つゆ）入（い）り」のように、送り仮名や表記が漢字でなく仮名の場合は、読み／表記テーブルへのポインタでなく、そのままの表記（読みも兼ねる）を記憶している。この場合は、「ａｄｒ１０２，ａｄｒ０９１，り」のようなエントリーになる。
【００４４】
また、この辞書本体は、基本的には読みの五十音順（あいうえお順）で単語を配置しているが、部分的に漢字１文字目の読みの順に並び換えている。例えば「子（こ）牛（うし）」、「公（こう）私（し）」、「子（こ）馬（うま）」の場合、読みの五十音順という順序であれば、「子牛」、「公私」、「子馬」の順に配置するのであるが、一文字目の漢字の読みがそれぞれ「こ」、「こう」、「こ」であるので、「公私」と「子馬」を入れ替えて、「子（こ）牛（うし）」、「子（こ）馬（うま）」、「公（こう）私（し）」の順に配置している。こうすることによって、１文字目の漢字が近くなり、検索文字列の先頭が漢字の場合に検索速度が向上する。
【００４５】
また、単語番号ｎｕｍ６２に示すように、カタカナ語は、「＠ばいたりてぃ」として、カタカナ語を表す＠マークとその読みだけのエントリーにする。このような構造にすることにより、読みと表記とを１対１で持つ「バ（ば）イ（い）タ（た）リ（り）テ（て）ィ（ぃ）」という構造にするよりも容量を小さくできる。
【００４６】
以下、ＣＰＵ１による辞書検索処理の内容を図７及び図８に示すフローチャートに従い説明する。
【００４７】
図７は辞書検索の処理手順を示すフローチャートである。
まず、ステップ１０１は、入力文字列の先頭から１文字ずつ文字を取り出す処理である。ステップ１０２は、ステップ１０１で取り出した文字が仮名かどうかを判断する処理である。仮名の場合、ステップ１０３に処理を移し、仮名でない場合、ステップ１０４に処理を移す。
【００４８】
次に、ステップ１０３は、検索文字列の先頭が仮名である場合の処理であり、読みインデックスを検索する。検索した結果、辞書本体へのポインタがある場合は、検索開始ポインタと検索終了ポインタ（読みインデックスの２段階目の次の読みのデータ）をセットのデータとしてバッファ（ＲＡＭ４）に蓄える。
【００４９】
ステップ１０４は、検索文字列の先頭が漢字である場合の処理であり、先頭漢字インデックスを検索する。検索した結果、単語番号がある場合は、単語番号をデータとしてバッファ（ＲＡＭ４）に蓄える。
【００５０】
ステップ１０５は、ステップ１０３及びステップ１０４で検索した候補データ（ポインタ、または、単語番号）があるかどうかを判断する処理である。ここで、候補データが複数ある場合、１つずつステップ１０６で辞書本体を検索し、データが無くなるまでステップ１０６とのループを続ける。
【００５１】
ステップ１０６は、辞書本体を検索する処理である。ステップ１０５で判断されたデータがポインタの場合は検索開始ポインタと検索終了ポインタの範囲を検索する。検索した結果マッチする単語があれば、バッファ（ＲＡＭ４）に蓄える。ステップ１０５で判断されたデータが単語番号である場合、辞書本体を見てマッチすればバッファ（ＲＡＭ４）に蓄える。
【００５２】
ステップ１０７は、ステップ１０１で取り出した文字の次の文字があるかどうかを判断する処理である。次の文字がある場合は、ステップ１０１に処理を戻し、文字がない場合は、辞書検索処理を終了する。
【００５３】
図８は図７のステップ１０３における読みインデックス検索の詳細な処理手順（サブルーチン）を示すフローチャートである。
読みインデックスの検索においては、読み１次インデックスを検索し（ステップ２０１）、検索した結果、辞書本体へのポインタがある場合は（ステップ２０２）、次の文字が平仮名か否かを調べる（ステップ２０３）。
【００５４】
ここで、次の文字が平仮名であれば、読み２次インデックスの該当する仮名部を検索し（ステップ２０４）、読み２次インデックスの「Ｘ」部を検索する（ステップ２０５）。ステップ２０３で、次の文字が平仮名でなければ、読み２次インデックスの「Ｘ」部を検索する（ステップ２０５）。なお、ステップ２０２で辞書本体へのポインタがない場合は、辞書本体への検索は行わない。
【００５５】
このような辞書検索処理の内容について、実際の入力文字列を例に挙げて説明する。以下、「こ牛」，「子うし」，「こうし」と、それぞれ入力された場合を例に挙げて説明する。
【００５６】
まず、入力文字列として「こ牛」が入力された場合について説明する。
図７において、ステップ１０１で１文字目が取り出される。この場合は「こ」が取り出される。
【００５７】
ステップ１０２では、ステップ１０１で取り出された文字が仮名であるかどうかが判断される。この場合仮名であるので、ステップ１０３に処理を移す。
ステップ１０３で読みインデックスを検索する。取り出した文字が「こ」で次の文字が漢字の「牛」であるので、１文字目の漢字の読みが「こ」になる。そこで、読みインデックスの２段階目（２次インデックス）の「Ｘ」を検索すると「ｐｔｒ（ポインタ）２１」となっていることが分かる。次のポインタが「ｐｔｒ２２」であるので、読みインデックスの検索結果として「（ｐｔｒ２１，ｐｔｒ２２）」というデータを格納する。このデータは「（検索開始ポインタ，検索終了ポインタ）」の順とする。
【００５８】
すなわち、このステップ１０３を図８のサブルーチンで説明すると、ステップ２０１で、読み１次インデックスを検索する。今は取り出した文字が「こ」であるので、読み１次インデックスの「こ」の部分を検索する。
【００５９】
ステップ２０２では、ステップ２０１で検索したところに読み２次インデックスへのポインタがあるかどうかを判断する。いま、２次インデックスへのポインタがあるので、ステップ２０３に処理を進める。なお、取り出した文字が「ぁ」の場合は、２次インデックスへのポインタはない。
【００６０】
ステップ２０３で、次の文字が平仮名かどうかを判断する。いま、取り出した文字が「こ」であり、次の文字は「牛」であり、平仮名でないのでステップ２０５に処理を進める。
【００６１】
ステップ２０５で、１次インデックスの「こ」が指すポインタの２次インデックス「Ｘ」の部分を検索する。検索すると「ｐｔｒ２１」となっていることが分かる。次のポインタが「ｐｔｒ２２」であるので、読みインデックスの検索結果として「（ｐｔｒ２１，ｐｔｒ２２）」というデータが得られる。
【００６２】
図７に戻り、ステップ１０５で検索候補データがあるかどうかが判断される。この場合あるので、ステップ１０６に処理を移す。
ステップ１０６で辞書本体を検索する。まず、先頭であるｐｔｒ２１のデータとのマッチングを取る。このデータはａｄｒ０５１となっているので、読み／表記テーブルを見て、「子（こ）」という表記１文字の漢字ということが分かる。いま、検索文字列は「こ牛」であるが、それを分割する単語の候補として「こ」がマッチするので、ｎｕｍ２１をバッファに保存する。
【００６３】
次のデータを見ると「ａｄｒ０５１，ａｄｒ０２１」となっているので、読み／表記テーブルから「子（こ）牛（うし）」という単語ということが分かり、入力文字列とマッチするので、ｎｕｍ２２もバッファに保存する。
【００６４】
次のデータは「ａｄｒ０５１，ａｄｒ１２１」で「子（こ）馬（うま）」という単語と分かる。この場合、入力文字列とマッチしないのでバッファには保存しない。このようにして、検索終了位置のｐｔｒ２２の単語までマッチングを取る。この場合は、上記のほかにマッチするものがなかったとする。
【００６５】
ステップ１０５に処理を戻して、検索候補データが他にあるかをチェックする。この場合、検索候補データは１つであり、すでに検索を終えているので、ステップ１０７に処理を移す。
【００６６】
ステップ１０７で、ステップ１０１で取り出した文字の次の文字があるかどうかが判断される。この場合、「こ」の次の文字「牛」が有るので、ステップ１０１に処理を移す。
【００６７】
ステップ１０１で「牛」が取り出される。
ステップ１０２で、仮名でないと判断され、ステップ１０４に処理を移す。
ステップ１０４で、先頭漢字インデックスが検索される。この場合、説明の便宜上、単語の候補がｎｕｍ１１しかないものとする。単語の候補が複数ある場合は後ほど説明する。これにより、先頭漢字インデックスの検索結果として「ｎｕｍ１１」というデータが格納される。
【００６８】
ステップ１０５で検索候補データが有るかどうかが判断される。この場合有るので、ステップ１０６に処理を移す。
【００６９】
ステップ１０６で辞書本体を検索する。この場合、候補データが単語番号であるので、その単語番号が文字列とマッチするか否かを調べる。辞書本体の検索の結果、ｎｕｍ１１は「ａｄｒ０２１」であるので、読み／表記インデックスのａｄｒ０２１を見ると、「牛（うし）」ということが分かる。いま、注目している検索文字列は「牛」であるのでマッチし、ｎｕｍ１１をバッファに保存する。
【００７０】
ステップ１０５に処理を戻し、検索候補データが残っているかをチェックする。この場合、検索候補データはもう残っていないので、ステップ１０７に処理を移す。
【００７１】
ステップ１０７では、ステップ１０１で取り出した文字の次の文字があるかどうかが判断される。この場合、「牛」の次の文字はないので処理を終了する。
【００７２】
結果として、文字検索位置「こ」から「ｎｕｍ２１，ｎｕｍ２２」の単語がマッチし、文字検索位置「牛」から「ｎｕｍ１１」の単語がマッチしたことになる。
【００７３】
この結果をもとに仮名漢字変換の処理が行われる。仮名漢字変換は、単語番号、品詞などの文法情報や、各種の文法規則をもとに変換処理を行うが、この処理は通常の仮名漢字変換の処理でよい。この場合は、入力文字列は単語１個だけの文節と判断されて、「子牛」と変換され、ＬＣＤ６によって表示される。
【００７４】
次に、入力文字列として「子うし」が入力された場合について説明する。
図７において、ステップ１０１で１文字目が取り出される。この場合は「子」が取り出される。
【００７５】
ステップ１０２では、ステップ１０１で取り出された文字が仮名であるかどうかが判断される。この場合、漢字であるので、ステップ１０４に処理を移す。
ステップ１０４で先頭漢字インデックスを検索する。この検索の結果、「ｎｕｍ２１，ｎｕｍ２２，ｎｕｍ２３，ｎｕｍ４１」が候補データとしてバッファに保存される。
【００７６】
ステップ１０５で検索候補データがあるかどうか判断される。この場合、検索候補データがあるので、「ｎｕｍ２１」に注目して、ステップ１０６に処理を移す。
【００７７】
ステップ１０６で辞書本体を検索する。この場合、候補データが単語番号ｎｕｍ２１であるので、辞書本体のｎｕｍ２１に記憶されたデータ「ａｄｒ５１」から、「子（こ）」という単語であると分かる。いま、注目している文字列は「子うし」であり、それを分割する単語の候補として「子」がマッチするので、ｎｕｍ２１をバッファに保存する。
【００７８】
ステップ１０５に処理を戻し、検索候補データが有るかどうかを判断する。この場合あるので、次に「ｎｕｍ２２」に注目して、ステップ１０６に処理を移す。
【００７９】
ステップ１０６で辞書本体を検索する。ｎｕｍ２２のデータは「ａｄｒ０５１，ａｄｒ０２１」であるので、「子（こ）牛（うし）」という単語と分かる。注目文字列は「子うし」であり、マッチするので、ｎｕｍ２２をバッファに保存する。
【００８０】
ステップ１０５に処理を戻し、検索候補データが有るかどうかを判断する。この場合有るので、次に「ｎｕｍ２３」に注目して、ステップ１０６に処理を移す。
【００８１】
ステップ１０６で辞書本体を検索する。ｎｕｍ２３のデータは「ａｄｒ０５１，ａｄｒ１２１」であるので、「子（こ）馬（うま）」という単語と分かる。注目文字列は「子うし」であり、マッチしない。
【００８２】
ステップ１０５に処理を戻し、検索候補データが有るかどうかを判断する。この場合有るので、次に「ｎｕｍ４１」に注目して、ステップ１０６に処理を移す。
【００８３】
ステップ１０６で辞書本体を検索する。ｎｕｍ４１のデータは「ａｄｒ０５２」であるので、「子（し）」という単語と分かる。注目文字列は「子うし」であり、それを分割する単語の候補として「子」がマッチするので、ｎｕｍ４１をバッファに保存する。
【００８４】
ステップ１０５に処理を戻し、検索候補データが有るかどうかを判断する。この場合、検索候補データはもう残っていないので、ステップ１０７に処理を移す。
【００８５】
ステップ１０７では、ステップ１０１で取り出した文字の次の文字があるかどうかが判断される。この場合「子」の次の文字「う」があるので、ステップ１０１に処理を移す。
【００８６】
ステップ１０１で「う」が取り出される。
ステップ１０２で仮名であると判断され、ステップ１０３に処理を移す。
ステップ１０３で、読みインデックスを検索する。取り出した文字が「う」で次の文字が「し」であるので、１文字目の漢字の読みが「う」または「うし」である。そこで、１文字目の漢字の読みが「う」の候補として、読みインデックスの２段階目（２次インデックス）の「Ｘ」を検索すると、ポインタがないので、候補がないことが分かる。１文字目の漢字の読みが「うし」の候補として、読みインデックスの２段階目の「し」を検索すると、「ｐｔｒ１１」となっていることが分かる。次のポインタが「ｐｔｒ１２」であるので、読みインデックスの検索結果として「（ｐｔｒ１１，ｐｔｒ１２）」というデータを格納する。
【００８７】
すなわち、このステップ１０３を図８のサブルーチンで説明すると、ステップ２０１で、読み１次インデックスを検索する。今は取り出した文字が「う」であるので、読み１次インデックスの「う」の部分を検索する。
【００８８】
ステップ２０２では、ステップ２０１で検索したところに読み２次インデックスへのポインタがあると判断され、ステップ２０３に処理を進める。
ステップ２０３で、次の文字が平仮名か否かを判断する。この場合、次の文字は「し」であるので、ステップ２０４に処理を進める。
【００８９】
ステップ２０４で、読み１次インデックスの「う」が指すポインタの２次インデックスの「し」が含まれる部分を検索する。検索すると「ｐｔｒ１１」であるので、「（ｐｔｒ１１，ｐｔｒ１２）」というデータを得る。
【００９０】
ステップ２０５で、読み１次インデックスの「う」が指すポインタの２次インデックスの「Ｘ」の部分を検索する。検索すると候補がないことが分かる。
よって、読みインデックスの検索結果として「（ｐｔｒ１１，ｐｔｒ１２）」というデータが得られる。
【００９１】
図７に戻り、ステップ１０５で検索候補データが有るかどうかが判断される。この場合有るので、ステップ１０６に処理を移す。
ステップ１０６で辞書本体を検索する。まず、先頭であるｐｔｒ１１のデータとのマッチングを取る。このデータは「ａｄｒ０２１」であり、「牛（うし）」という単語と分かる。いま、検索文字列は「うし」であり、マッチするので、ｎｕｍ１１をバッファに保存する。次のデータが検索終了位置のｐｔｒ１２であるので、検索を終える。
【００９２】
ステップ１０５に処理を戻し、検索候補データが残っているかどうかをチェックする。この場合、検索候補データはもう残っていないので、ステップ１０７に処理を移す。
【００９３】
ステップ１０７では、ステップ１０１で取り出した文字の次の文字が有るかどうかが判断される。この場合「う」の次の文字「し」が有るので、ステップ１０１に処理を移す。
【００９４】
ステップ１０１で「し」が取り出される。
ステップ１０２で仮名であると判断され、ステップ１０３に処理を移す。
ステップ１０３で、読みインデックスを検索する。取り出した文字が「し」であり、次の文字がないので、１文字目の漢字の読みが「し」になる。そこで、読みインデックスの１段階目（１次インデックス）の「し」から、２段階目（２次インデックス）の「Ｘ」を検索すると、「ｐｔｒ３１」となっていることが分かる。次のポインタが「ｐｔｒ３２」であるので、読みインデックスの検索結果として「（ｐｔｒ３１，ｐｔｒ３２）」というデータを格納する。
【００９５】
すなわち、このステップ１０３を図８のサブルーチンで説明すると、ステップ２０１で、読み１次インデックスの「し」を検索する。
ステップ２０２では、ポインタがあると判断され、ステップ２０３に処理を進める。
【００９６】
ステップ２０３で、次の文字がないので平仮名でないと判断され、ステップ２０５に処理を進める。
ステップ２０５では、読み１次インデックスの「し」が指すポインタの２次インデックスの「Ｘ」の部分を検索する。検索すると、「ｐｔｒ３１」となっていることが分かり、「（ｐｔｒ３１，ｐｔｒ３２）」というデータが得られる。
【００９７】
図７に戻り、ステップ１０５で検索候補データが有ると判断され、ステップ１０６に処理を移す。
ステップ１０６で辞書本体を検索する。まず、先頭であるｐｔｒ３１のデータとのマッチングを取る。このデータは「ａｄｒ０５２」で「子（し）」であり、検索文字列とマッチするので、ｎｕｍ４１をバッファに保存する。次のデータは「ａｄｒ０６２」で「市（し）」であり、検索文字列とマッチするので、ｎｕｍ４２をバッファに保存する。次のデータは「ａｄｒ０７１」で「私（し）」であり、検索文字列とマッチするので、ｎｕｍ４３をバッファ保存する。
【００９８】
次のデータは「ａｄｒ０８３，ａｄｒ０４２」であり、「試（し）合（あい）」という単語と分かる。この場合、検索文字列とマッチしないことが分かる。また、検索文字列は「し」の一文字であり、これ以降にマッチするデータがないと分かるので、検索終了位置のｐｔｒ３２まで検索をせずに、ステップ１０６の処理を終了する。
【００９９】
ステップ１０５に処理を戻し、検索候補データがもうないのでステップ１０７に処理を移す。
ステップ１０７で「し」の次の文字がないと分かるので、処理を終了する。
【０１００】
結果として、文字検索位置「子」から「ｎｕｍ２１，ｎｕｍ２２，ｎｕｍ４２」の単語がマッチし、文字検索位置「う」から「ｎｕｍ１１」の単語がマッチし、文字検索位置「し」から「ｎｕｍ４１，ｎｕｍ４２，ｎｕｍ４３」の単語がマッチしたことになる。この結果をもとに漢字変換の処理が行われ、「子牛」と変換される。
【０１０１】
次に、入力文字列として「こうし」が入力された場合について説明する。
図７において、ステップ１０１で１文字目が取り出される。この場合は「こ」が取り出される。
【０１０２】
ステップ１０２で、仮名であると判断され、ステップ１０３に処理を移す。
ステップ１０３で読みインデックスを検索する。取り出した文字が「こ」で次の文字が「う」であるので、１文字目の漢字の読みが「こ」又は「こう」又はそれ以上ということになる。
【０１０３】
１文字目の漢字の読みが「こ」の候補として、読みインデックスの２段階目（２次インデックス）の「Ｘ」を検索すると、「ｐｔｒ２１」となっていることが分かる。次のポインタが「ｐｔｒ２２」であるので、「（ｐｔｒ２１，ｐｔｒ２２）」というデータになる。
【０１０４】
１文字目の漢字の読みが「こう」の候補として、読みインデックスの２段階目の「う」を検索すると、「ｐｔｒ２２」となっていることが分かる。次のポインタが「ｐｔｒ２３」であるので、「（ｐｔｒ２２，ｐｔｒ２３）」というデータになる。結局検索候補データとして、「（ｐｔｒ２１，ｐｔｒ２２），（ｐｔｒ２２，ｐｔｒ２３）」というデータが格納される。
【０１０５】
すなわち、このステップ１０３を図８のサブルーチンで説明すると、ステップ２０１で、読み１次インデックスの「こ」を検索する。
ステップ２０２ではポインタがあると判断され、ステップ２０３に処理を進める。ステップ２０３で、次の文字が平仮名かどうかが判断される。今の場合、次の文字は「う」であり、平仮名であるので、ステップ２０４に処理を進める。
【０１０６】
ステップ２０４では、読み１次インデックスの「こ」が指すポインタの２次インデックスの「う」が含まれている部分を検索する。検索すると「ｐｔｒ２２」であるので、「（ｐｔｒ２２，ｐｔｒ２３）」というデータを得る。
【０１０７】
ステップ２０５で、読み１次インデックスの「こ」が指すポインタの２次インデックスの「Ｘ」の部分を検索する。検索すると「ｐｔｒ２１」となっていることが分かり、「（ｐｔｒ２１，ｐｔｒ２２）」というデータを得る。
【０１０８】
よって、読みインデックスの検索結果として「（ｐｔｒ２１，ｐｔｒ２２）、（ｐｔｒ２２，ｐｔｒ２３）」というデータが得られる。
【０１０９】
図７に戻り、ステップ１０５で、検索候補データがあるかどうかが判断される。この場合有るので、「（ｐｔｒ２１，ｐｔｒ２２）」に注目して、ステップ１０６に処理を移す。
【０１１０】
ステップ１０６で辞書本体を検索するのであるが、この検索は「こ牛」の所で説明した通り、「ｎｕｍ２１，ｎｕｍ２２」が検索される。
ステップ１０５に処理を戻して、検索候補データが有るかどうかが判断される。この場合有るので、「（ｐｔｒ２２，ｐｔｒ２３）」に注目して、ステップ１０６に処理を移す。
【０１１１】
ステップ１０６で辞書本体を検索する。まず、先頭であるｐｔｒ２２のデータとのマッチングを取る。このデータは「ａｄｒ０３３，ａｄｒ０７１」であるのでり、「公（こう）私（し）」という単語と分かり、マッチするので、ｎｕｍ３１をバッファに保存する。次のデータを見ると、「ａｄｒ０３３，ａｄｒ１３２」となっているので、「公（こう）理（り）」という単語であり、検索文字列とマッチしないことが分かる。また、検索文字列が平仮名の「こうし」であり、検索データの候補の読みが「こうり」であるので、これ以降のデータにマッチするものがないと分かるので、検索終了位置ｐｔｒ２３まで検索せずに、ステップ１０６の処理を終了する。
【０１１２】
ステップ１０５に処理を戻し、検索候補データが有るか否かが判断されるが、もうないので、ステップ１０７に処理を移す。
ステップ１０７では、次の文字「う」があるので、ステップ１０１に処理を移す。これ以降の処理は「子うし」で説明した処理と同じ処理となる。
【０１１３】
結果として、文字検索位置「こ」から「ｎｕｍ２１，ｎｕｍ２２，ｎｕｍ３１」の単語がマッチし、文字検索位置「う」から「ｎｕｍ１１」の単語がマッチし、文字検索位置「し」から「ｎｕｍ４１，ｎｕｍ４２，ｎｕｍ４３」の単語がマッチしたことになる。
【０１１４】
この結果をもとに仮名漢字変換の処理が行われ、第１候補として「公私」、第２候補として「子牛」と変換される（「公私」の頻度が「子牛」より高いとする）。
【０１１５】
このようにして、単語がどのような文字で入力されても的確に単語を検索することができる。また、以上には、入力文字列として単語が入力されたときの例を説明したが、文章として入力されたときでも、入力文字列の先頭から順に単語検索を行い、検索結果をもとに仮名漢字変換を行うことにより、文章として入力された漢字仮名交じりの文字列を仮名漢字変換することができる。
本発明による辞書検索は、表記だけの単語も検索できるので、文章校正などにも利用することができる。
【０１１６】
【発明の効果】
この発明によれば、漢字仮名交じり文字列の組み合わせをすべて辞書本体に登録する必要がなくなり、辞書容量を削減することができる。また、漢字仮名交じりの制限のない自由な交ぜ書きが可能となる。
【０１１７】
また、単語辞書に読み／表記テーブルを設けて、単語辞書の辞書本体を読み／表記テーブルのアドレスを指定するためのポインタで構成した場合には、同じデータを効率良くまとめることができるので、辞書容量をさらに削減することができる。
【０１１８】
さらに、単語辞書の辞書本体への登録において、カタカナ語を登録する場合に、カタカナ語であるという識別マークと読みだけを登録するようにした場合には、辞書容量をより一層削減することができる。
【０１１９】
そして、単語辞書の辞書本体への登録において、読みの割り振りのできない単語を登録するに際し、読みの割り振りのできる単位で漢字と読みを対応づけして単語を登録するようにした場合には、不自然な交ぜ書きの変換ができないので、誤変換を少なくすることができ、快適な漢字仮名交じり文の仮名漢字変換が可能となる。
【０１２０】
また、単語辞書の辞書本体に登録する単語を、表記の１文字目に対応する読みの順に配置した場合には、漢字の組み合わせが近くなるので、漢字から辞書本体を検索する場合の検索速度を向上させることができる。
【図面の簡単な説明】
【図１】この発明の構成を示すブロック図である。
【図２】この発明による文字変換装置を日本語ワードプロセッサに適用した一実施例の構成を示すブロック図である。
【図３】この発明による読みインデックスの記憶内容を示す説明図である。
【図４】この発明による先頭漢字インデックスの記憶内容を示す説明図である。
【図５】この発明による辞書本体の記憶内容を示す説明図である。
【図６】この発明による読み／表記テーブルの記憶内容を示す説明図である。
【図７】この発明による辞書検索の処理手順を示すフローチャートである。
【図８】図７の読みインデックス検索の詳細な処理手順（サブルーチン）を示すフローチャートである。
【図９】従来の見出しの例を示す説明図である。
【図１０】従来の見出しの例を示す説明図である。
【符号の説明】
１  ＣＰＵ
２  プログラム用ＲＯＭ
３  辞書用ＲＯＭ
４  ＲＡＭ
５  タブレット
６  ＬＣＤ（液晶表示装置）
７  コントローラー
【図１】
0003888701.tif 000002
【図２】
0003888701.tif 000003
【図３】
0003888701.tif 000004
【図４】
0003888701.tif 000005
【図５】
0003888701.tif 000006
【図６】
0003888701.tif 000007
【図７】
0003888701.tif 000008
【図８】
0003888701.tif 000009
【図９】
0003888701.tif 000010
【図１０】
0003888701.tif 000011