(57)【特許請求の範囲】
【請求項１】
入力された文字列を正規化して格納する情報処理装置において、
入力された文字列に含まれている連続する同一文字種の文字群を規定の文字種の文字群に変換して正規化文字列を生成する正規化手段と、
前記正規化手段によって得られた正規化文字列を元の文字列に復元するための復元情報として、正規化の前後における文字種を特定するための情報と、連続する同一文字種の文字群の文字数を特定するための情報とを生成する復元情報生成手段と、
前記復元情報生成手段によって生成された復元情報と、前記正規化文字列とを対応付けて記憶する記憶手段と、
前記正規化文字列に対する処理の結果として、前記記憶手段に記憶されている所定の正規化文字列が特定された場合に、前記特定された正規化文字列に対応する復元情報を参照して元の文字列を復元する復元手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記復元情報生成手段は、正規化の前後における文字種が不変の場合であって、連続する同一文字種の文字群のバイト数が１バイトである場合には、その旨を示す１バイトの復元情報を生成することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記復元情報生成手段は、正規化の前後における文字種が不変の場合であって、連続する同一文字種の文字群のバイト数が２バイト以上である場合には、その旨を示す１バイトの情報と、文字群の文字数を特定する１バイトの情報を生成することを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記復元情報生成手段は、連続する同一文字種の文字群が半角英文字である場合には、その旨を示す所定の復元情報を生成し、
前記復元手段は、前記所定の復元情報に遭遇した場合には、連続する半角英文字のうち先頭の文字を半角英大文字に変換する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項５】
入力された文字列を正規化して格納する処理をコンピュータに実行させるプログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記コンピュータを、
前記入力された文字列に含まれている連続する同一文字種の文字群を規定の文字種の文字群に変換して正規化文字列を生成する正規化手段、
前記正規化手段によって得られた正規化文字列を元の文字列に復元するための復元情報として、正規化の前後における文字種を特定するための情報と、連続する同一文字種の文字群の文字数を特定するための情報とを生成する復元情報生成手段、
前記復元情報生成手段によって生成された復元情報と、前記正規化文字列とを対応付けて記憶する記憶手段、
前記正規化文字列に対する処理の結果として、前記記憶手段に記憶されている所定の正規化文字列が特定された場合に、前記特定された正規化文字列に対応する復元情報を参照して元の文字列を復元する復元手段、
として機能させるプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置に関し、特に、入力された文字列を正規化して格納する情報処理装置に関する。
【０００２】
【従来の技術】
例えば、データベース等においては、検索の結果得られたデータを所定の規則に従って並べ換えて出力するが、そのような規則はＯＳ（Operating System）やＤＢＭＳ（Data Base Management System）によって異なるため、同一のデータベースを対象として検索を実行した場合においても、システムによって検索結果の表示が異なる場合があった。
【０００３】
そこで、このようなシステムによる影響を受けないように、もとのデータを正規化し、この正規化されたデータともとのデータとを対応付けてデータベースに格納する。そして、正規化されたデータを対象として検索処理と並べ換え処理を実行し、得られた結果をもとのデータに変換して出力する方法を本発明者が先に提案している。
【０００４】
【発明が解決しようとする課題】
しかし、このような方法では、もとのデータのみならず、正規化データもデータベースに格納する必要があることから、データベースの必要な容量が増大するという問題点があった。
【０００５】
本発明は、以上のような点に鑑みてなされたものであり、正規化されたデータを格納するデータベースの必要な記憶容量を削減することが可能な情報処理装置を提供することを目的とする。
【０００６】
【課題を解決するための手段】
本発明では上記課題を解決するために、図１に示す、入力された文字列を正規化して格納する情報処理装置において、前記入力された文字列を正規化して正規化文字列を生成する正規化手段１と、前記正規化手段１によって得られた正規化文字列を、元の文字列に復元するための復元情報を生成する復元情報生成手段２と、前記復元情報生成手段２によって生成された復元情報と、前記正規化文字列とを対応付けて記憶する記憶手段３と、前記記憶手段３に記憶されている所定の正規化文字列が指定された場合には、対応する復元情報を参照してもとの文字列を復元する復元手段４と、を有することを特徴とする情報処理装置が提供される。
【０００７】
ここで、正規化手段１は、入力された文字列を正規化して正規化文字列を生成する。復元情報生成手段２は、正規化手段１によって得られた正規化文字列を、元の文字列に復元するための復元情報を生成する。記憶手段３は、復元情報生成手段２によって生成された復元情報と、正規化文字列とを対応付けて記憶する。復元手段４は、記憶手段３に記憶されている所定の正規化文字列が指定された場合には、対応する復元情報を参照してもとの文字列を復元する。
【０００８】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本発明の動作原理を説明するための原理図である。この図において、正規化手段１は、入力された文字列（以下、入力文字列と称す）を所定の規則に従って正規化し、正規化文字列を生成する。
【０００９】
復元情報生成手段２は、正規化手段１によって得られた正規化文字列を、元の文字列に復元するための復元情報を生成する。なお、復元情報にバイナリコードが含まれると、ＨＴＭＬ（Hyper Text Markup Language）や電子メールなどで参照する時にエンコードが必要になり、可搬性がよくないので、復元情報は表示可能文字とすることが望ましい。
【００１０】
記憶手段３は、復元情報生成手段２によって生成された復元情報と、正規化文字列とを対応付けて記憶する。
復元手段４は、記憶手段３に記憶されている所定の正規化文字列が指定された場合には、対応する復元情報を参照してもとの文字列を復元する。
【００１１】
次に、以上の原理図の動作について説明する。
いま、文字列として「サイクリング同好会」が与えられたとすると、正規化手段１は、入力された文字列を規則に基づいて正規化する。なお、正規化の規則の一例を以下に示す。
（１）全角カタカナおよび半角カタカナを全角ひらがなに変換する。
（２）全角英大文字、全角英小文字、および、半角英大文字を全て半角英小文字に変換する。
（３）全角記号を半角記号に変換する。
【００１２】
従って、正規化手段１は、規則（１）に従って、「サイクリング」を「さいくりんぐ」に変換する。「同好会」には適用する規則がないのでそのままとされる。従って、正規化手段１からは、正規化文字列「さいくりんぐ同好会」が出力され、復元情報生成手段２に供給される。
【００１３】
復元情報生成手段２は、正規化手段１から供給された正規化文字列「さいくりんぐ同好会」と、入力文字列「サイクリング同好会」とから復元情報を生成する。ここで、復元情報としては、正規化により文字種が変化しない場合と、変化する場合に分けてそれぞれ該当する復元情報を生成する。
【００１４】
先ず、文字種が変化する場合には、正規化の前後の文字種を特定するための３ビットの情報を上位ビットとし、変換の対象となる文字の連続する文字数を示す５ビットの情報を下位ビットとして連結した１バイトの復元情報を生成する。
【００１５】
また、文字種が変化しない場合であって、連続する文字のバイト数が１バイトである場合には半角文字「?」を復元情報とする。
連続する文字のバイト数が２バイト以上である場合には、半角文字「@」に、連続する文字のバイト数ｎに「２０ｈ」（ｈは１６進数を示す）を加算して得られた値に対応するアスキー文字を付加した２文字を復元情報とする。
【００１６】
更に、特別な場合として、英文の文章の場合には、センテンスの最初の文字が大文字で表現されるので、このような情報を保存するために、半角文字「＿」に対して連続する文字のバイト数ｎに「２０ｈ」を加算して得られた値に対応するアスキー文字を付加した２文字を復元情報とする。
【００１７】
「サイクリング同好会」の「サイクリング」については、文字種が全角カタカナから全角ひらがなに正規化されているので、正規化の前後の文字を特定するための３ビットの情報が“０１０”であるとすると、これを上位３ビットとし、連続する文字の文字数“６”に対応する“００１１０”を下位ビットとして付加した“０１０００１１０”を生成する。これは、１６進法では“４６ｈ”となり、これに対応するアスキー文字は「F」となる。
【００１８】
また、「同好会」に関しては変換が施されていないので、復元情報としては、無変換を示す「@」と、連続する文字のバイト数“６”に対して“２０ｈ”を加算して得られた“２６ｈ”に対応するアスキー文字「&」が付加された「@&」が生成される。
【００１９】
従って、正規化文字列「さいくりんぐ同好会」の復元情報としては、「F@&」が得られるので、記憶手段３は得られた復元情報「F@&」と、正規化文字列「さいくりんぐ同好会」とを対応付けて記憶する。
【００２０】
このような状態において、記憶手段３に記憶されている正規化文字列「さいくりんぐ同好会」が指定された場合（例えば、検索処理において指定された場合）には、復元手段４は、正規化文字列「さいくりんぐ同好会」と復元情報である「F@&」を記憶手段３から取得する。
【００２１】
そして、以上の場合とは逆の処理を実行することにより、入力文字列である「サイクリング同好会」を得る。
即ち、復元手段４は、先ず、復元情報の最初の情報である文字「F」を抽出する。この文字「F」は、前述のように、上位３ビット（“０１０”）が変換の前後の文字種を特定する情報であり、また、下位５ビット（“００１１０”）が連続する文字群の文字数を示す情報であるので、復元手段４は、これらを参照して「さいくりんぐ」を「サイクリング」に変換し、復元した文字列である復元文字列に複写する。
【００２２】
次に、復元手段４は、文字「@」を抽出する。文字「@」は連続する文字のバイト数を示す情報とともに格納されていることが分かっているので、復元手段４はその次の文字「&」を取得する。この文字のアスキーコードは“２６ｈ”であるので、その値から“２０ｈ”を減算して得られた“６”バイト分の情報「同好会」を正規化情報から抽出し、復元文字列に追加的に格納する。
【００２３】
その結果、復元文字列として「サイクリング同好会」を得ることになる。
以上に説明したように、本発明によれば、入力文字列から正規化文字列と復元情報とを生成して正規化文字列と復元情報のみを格納し、もとの入力文字列が必要になった場合には正規化文字列と復元情報とから生成するようにしたので、入力文字列に比べてデータ長が短い復元情報を入力文字列の代わりに格納することが可能となり、必要な記憶容量を削減することが可能となる。
【００２４】
具体的には、前述の例では、入力文字列「サイクリング同好会」は合計１８バイトの情報であるが、復元情報「F@&」は合計３バイトの情報であり、１５バイトの情報を削減することが可能となる。
【００２５】
図２は、本発明の実施の形態の構成例を示す図である。この図において、本発明の情報処理装置１０は、ネットワーク１２を介して接続されているクライアント１３（または、図示せぬ他のクライアント）から入力された文字列の登録の要求があった場合には、供給された入力文字列を正規化して正規化文字列を生成するとともに、正規化文字列を元の情報に復元するための復元情報を生成し、これらを相互に関連付けて登録する。そして、クライアント１３（または、図示せぬ他のクライアント）から情報の検索の要求があった場合には、該当する正規化文字列を検索し、得られた正規化文字列を復元情報を参照して復元し、要求を行ったクライアント１３に送信する。
【００２６】
データベース１１は、正規化文字列と復元情報とを対応付けて記憶する。
ネットワーク１２は、例えば、インターネットなどによって構成されている。クライアント１３は、例えば、パーソナルコンピュータなどによって構成されており、ネットワーク１２を介して情報処理装置１０に対して所定の文字列の登録や検索を要請する。
【００２７】
表示装置１４は、例えば、ＣＲＴ（Cathode Ray Tube）モニタ等によって構成されており、クライアント１３から供給された情報を表示出力する。
ここで、情報処理装置１０は、ＣＰＵ（Central Processing Unit）１０ａ、ＲＯＭ（Read Only Memory）１０ｂ、ＲＡＭ（Random Access Memory）１０ｃ、ＨＤＤ（Hard Disk Drive）１０ｄ、Ｉ／Ｆ（Interface）１０ｅ，１０ｆ、および、バス１０ｇによって構成されている。
【００２８】
ＣＰＵ１０ａは、装置の各部を制御するとともに、ＨＤＤ１０ｄに格納されているアプリケーションプログラム等に応じて各種演算処理を実行する。
ＲＯＭ１０ｂは、ＣＰＵ１０ａが実行する基本的なプログラムやデータ等を格納している。
【００２９】
ＲＡＭ１０ｃは、ＣＰＵ１０ａが演算の対象とするプログラムや、演算途中のデータを一時的に格納する。
ＨＤＤ１０ｄは、ＣＰＵ１０ａが実行する各種アプリケーションプログラムやデータ等を格納している。
【００３０】
Ｉ／Ｆ１０ｅは、ネットワーク１２との間でデータの授受が可能となるように、ネットワーク１２上のデータと、情報処理装置１０の内部のデータの表現形式等を適宜変換する。
【００３１】
Ｉ／Ｆ１０ｆは、データベース１１との間でデータを授受する際にデータの表現形式等の変換処理等を実行する。
バス１０ｇは、ＣＰＵ１０ａ、ＲＯＭ１０ｂ、ＲＡＭ１０ｃ、ＨＤＤ１０ｄ、および、Ｉ／Ｆ１０ｅ，１０ｆを相互に接続し、これらの間でデータの授受を可能とする。
【００３２】
なお、以上の実施の形態では、クライアント１３がネットワーク１２を介して接続され、情報を授受する形態としたが、例えば、情報処理装置１０に対してキーボード等の入力デバイスが接続されて直接的に情報を授受するようにしてもよい。
【００３３】
次に、以上の実施の形態の動作について説明する。
先ず、クライアント１３において入力された情報を、データベース１１に登録する際の処理について説明する。図３は、そのような処理を実行するためのフローチャートである。この処理が実行されると、以下の処理が実行される。
［Ｓ１］情報処理装置１０のＣＰＵ１０ａは、クライアント１３において入力され、ネットワーク１２を介して伝送されてきた入力文字列を取得する。
【００３４】
例えば、クライアント１３において「ＳＳＮニュース」が入力されたとすると、情報処理装置１０はこの文字列「ＳＳＮニュース」を入力文字列として取得する。
［Ｓ２］情報処理装置１０のＣＰＵ１０ａは、取得した文字列を正規化して正規化文字列を生成するとともに、正規化文字列を復元するための復元情報を生成する。なお、この処理の詳細は、図４を参照して後述する。
【００３５】
例えば、いまの例では、「ＳＳＮニュース」が正規化され、「ssnにゅーす」が生成され、また、復元情報としては「CD」が生成される。
［Ｓ３］情報処理装置１０のＣＰＵ１０ａは、正規化文字列と復元情報とを、データベース１１に対応付けて格納する。
【００３６】
いまの例では、「ssnにゅーす」と「CD」とがデータベース１１に対応付けて格納されることになる。
次に、図４を参照して、図３に示す「正規化および復元情報生成処理」の詳細について説明する。なお、このフローチャートの詳細について説明する前に、図５を参照して本実施の形態における正規化処理の詳細について説明する。
【００３７】
図５は、正規化処理における規則の概要を示すコード変換表の一例である。この図において、「エントリ」は、文字を正規化する際に検索の対象となる部分であり、そのシステムにおいて使用可能な文字種が一覧形式で示されている。なお、エントリの欄の下に示されている数字は、各エントリのシフトＪＩＳコードを示している。
【００３８】
エントリの欄の右隣の「例」は、各エントリの一例を示している。例えば、半角英大文字の例としては、「A」が示されている。
その右隣の「変換先」は、各エントリが正規化先を有する場合にはその正規化先の文字種と、変換元コード（後述する）とが示されている。例えば、第２番目の項目である「半角英大文字」の場合は、「半角英小文字」に変換されることが示されており、また、そのときの変換元コードは“０１”であることが示されている。なお、変換先が存在しない場合には“０”が格納されている。
【００３９】
その右隣の変換元コード“０１”〜“０３”は、変換元を特定するための情報である。例えば、第４番目の項目である「半角英小文字」の場合、「半角英大文字」、「全角英大文字」、および、「全角英小文字」の３つの文字種が変換元とされるので、これらの何れから変換されたかを特定するための情報が必要となり、それが“０１”〜“０３”で与えられる。具体的には、半角英小文字の「a」が正規化文字列に含まれていた場合、この文字は半角英大文字の「A」、全角英大文字の「Ａ」、または、全角英小文字「ａ」の何れから変換されたか分からないので、その復元先を示すための情報が変換元コードであり、例えば、“０２”の場合には全角英大文字の「Ａ」から変換されたことが分かる。なお、“０”は該当する変換元が存在しないことを示す。
【００４０】
以上に示した例は、簡略化した例であり、文字種毎に変換先等の対応関係を示したが、１文字単位で変換先等の対応関係を示すテーブルを用いることもできる。
【００４１】
次に、図４に示すフローチャートの動作について説明する。
このフローチャートが開始されると、以下の処理が実行される。
［Ｓ２０］情報処理装置１０のＣＰＵ１０ａは、処理回数をカウントする変数ｉを“１”に初期設定する。
［Ｓ２１］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ０に対して入力文字列の第ｉ番目の文字を代入する。
【００４２】
例えば、先の「ＳＳＮニュース」の場合、第１回目の処理では、ｉ＝１であるので第１番目の文字「Ｓ」が変数Ｃ０に対して入力される。
［Ｓ２２］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ０の変換クラスの決定処理を実行する。ここで、変換クラスは以下の４つに分類される。
（１）半角無変換  （例：a→ａ）
（２）全角無変換  （例：あ→あ）
（３）半角変換    （例：A→ａ）
（４）全角変換    （例：Ａ→a）
例えば、先の「Ｓ」の場合、（４）に該当するので、変換クラスは「全角変換」となる。
【００４３】
なお、この処理の詳細については、図６を参照して後述する。
［Ｓ２３］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ１に対して入力文字列の第（ｉ＋１）番目の文字を代入する。
【００４４】
例えば、先の「ＳＳＮニュース」の場合、第１回目の処理では、（ｉ＋１）＝２であるので第２番目の文字「Ｓ」が変数Ｃ１に対して入力される。
［Ｓ２４］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ１がＮＵＬＬ（空）か否かを判定し、ＮＵＬＬである場合にはステップＳ３２に進み、それ以外の場合にはステップＳ２５に進む。
【００４５】
即ち、変数Ｃ１がＮＵＬＬである場合には、変数Ｃ０には入力文字列の最後の文字が格納されているので、その場合にはステップＳ３２の復元情報生成処理に進む。
【００４６】
先の例では、Ｃ１には「Ｓ」が代入されているので、ステップＳ２５に進むことになる。
［Ｓ２５］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ１の変換クラスの決定処理を実行する。なお、この処理は前述のステップＳ２２の場合と同様であり、その詳細については図６を参照して後述する。
【００４７】
先の例では、Ｃ１には「Ｓ」が代入されており、変換クラスは前述の場合と同様に「全角変換」となる。
［Ｓ２６］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ０，Ｃ１に格納されている文字のそれぞれの変換クラスと、変換元コードが異なるか否かを判定し、これらが異なる場合にはステップＳ２７に進み、それ以外の場合にはステップＳ２９に進む。
【００４８】
即ち、変換クラスと変換元コードとが異なる場合には、変数Ｃ０，Ｃ１に格納されている文字の文字種は異なっているので、変数Ｃ０に格納されている文字が連続する同一文字種の文字群の最後の文字であるとして、ステップＳ２７に進む。なお、以下では、連続する同一文字種の文字群を「チャンク」と称する。例えば、先の例「ＳＳＮニュース」では、「ＳＳＮ」と「ニュース」がそれぞれチャンクに該当する。
［Ｓ２７］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ１に代入されている文字の変換クラスが「半角変換」であって、文字種が半角英字であるか否かを判定し、該当する場合にはステップＳ２８に進み、それ以外の場合にはステップＳ３２に進む。
【００４９】
即ち、変数Ｃ１に代入されている文字の変換クラスが半角変換であって、文字種が半角英字である場合は、その文字は半角英大文字であるので、その場合には英文の頭文字であるとして、ステップＳ２８に進む。
［Ｓ２８］情報処理装置１０のＣＰＵ１０ａは、次のチャンクの変換を、復元の際に、チャンクの頭文字のみを大文字に変換する「英文変換」に決定する。
【００５０】
即ち、英文の場合は、センテンスの最初が大文字で表されるので、正規化の際には全て半角英小文字に変換しておき、復元の際にセンテンスの最初の文字だけ半角英大文字に変換するようにすれば、情報を喪失することなく、効率良く英文を処理することができる。
【００５１】
なお、変数Ｃ１に対応する文字の次の文字が半角英小文字であるか否かを判定した後に、次チャンクを英文変換に決定するようにすれば、更に確実に英文であるか否かを判定することが可能となる。
［Ｓ２９］情報処理装置１０のＣＰＵ１０ａは、処理対象となっているチャンクにおいて、変数Ｃ０に格納されている文字までの連続文字数（または、バイト数）を計算する。
【００５２】
例えば、「ＳＳＮニュース」において、いま、処理対象のチャンクが「ニュース」であるとし、変数Ｃ０に格納されている文字が「ー」であるとすると、連続文字数は“３”となる。
［Ｓ３０］情報処理装置１０のＣＰＵ１０ａは、ステップＳ２９において算出した連続文字数または連続バイト数が所定の最大値を上回っているか否かを判定し、上回っている場合にはステップＳ３２に進み、それ以外の場合にはステップＳ３１に進む。
【００５３】
なお、この処理は、１つの変換記号で表現可能な文字数に限りがあるため、その限度を超過しないためにおこなう。例えば、連続するバイト数に関しては、後述するようにそのバイト数に対応するアスキー文字で表現されるが、アスキー文字の“０ｈ”〜”２０ｈ”の範囲と“７Ｆｈ”以降は制御文字となっており画面上に表示されないので、この領域との重複を避けるため、後述するように連続するバイト数に対して“２０ｈ”を加算した値に対応するアスキー文字を用いるとともに、連続するバイト数の最大値を“９４”以下に制限している。また、連続文字の場合には、後述する理由により“３０”以下に制限される。従って、ステップＳ３０の処理では、連続バイト数が“９５”バイト以上の場合か、連続文字数が“３１”文字以上の場合にステップＳ３２に進む。
［Ｓ３１］情報処理装置１０のＣＰＵ１０ａは、変数ｉの値を“１”だけインクリメントした後、ステップＳ２１に戻って前述の場合と同様の処理を繰り返す。
［Ｓ３２］情報処理装置１０のＣＰＵ１０ａは、正規化文字列を復元する際に使用する復元情報を生成する処理を実行する。
【００５４】
なお、この処理の詳細は、図７を参照して後述する。
［Ｓ３３］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ１がＮＵＬＬ（空）か否かを判定し、ＮＵＬＬである場合にはもとの処理に復帰し、それ以外の場合にはステップＳ２１に戻って前述の場合と同様の処理を繰り返す。
【００５５】
次に、図６を参照して、図４に示す、ステップＳ２２およびステップＳ２５の処理の詳細について説明する。このフローチャートが開始されると、以下の処理が実行される。
［Ｓ５０］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ０またはＣ１に格納されている文字を取得する。
［Ｓ５１］情報処理装置１０のＣＰＵ１０ａは、図５に示すコード変換表のエントリ欄に該当する文字種が存在するか否かを判定し、存在する場合にはステップＳ５２に進み、それ以外の場合にはステップＳ５５に進む。
【００５６】
即ち、コード変換表のエントリ欄に該当文字種が存在しない場合には、正規化の対象とはならないので、その場合にはステップＳ５５に進む。
［Ｓ５２］情報処理装置１０のＣＰＵ１０ａは、コード変換表の「変換先」の欄に該当する文字種が存在している（“０”でない）か否かを判定し、存在している場合にはステップＳ５３に進み、それ以外の場合にはステップＳ５５に進む。
【００５７】
即ち、変換先欄が“０”である場合には正規化の必要がない文字であるので、その場合にはステップＳ５５に進む。
［Ｓ５３］情報処理装置１０のＣＰＵ１０ａは、図５に示すコード変換表を参照して、該当する変換元コードを取得する。
【００５８】
例えば、処理対象となっている文字が全角英大文字「Ａ」である場合には、変換元コードとして“０２”が取得される。
［Ｓ５４］情報処理装置１０のＣＰＵ１０ａは、変換クラスを全角または半角の変換に決定する。
【００５９】
例えば、処理対象となっている文字が前述の全角英大文字「Ａ」の場合には、変換クラスは全角変換に決定され、半角英大文字「F」である場合には、変換クラスは半角変換に決定される。
［Ｓ５５］情報処理装置１０のＣＰＵ１０ａは、変換クラスを全角または半角の無変換に決定する。
【００６０】
例えば、処理対象となっている文字が前述の全角ひらがな「あ」の場合には、変換クラスは全角無変換に決定され、半角英子文字「f」である場合には、変換クラスは半角無変換に決定される。
［Ｓ５６］情報処理装置１０のＣＰＵ１０ａは、変数Ｃ０に係る処理、即ち、ステップＳ２２から呼び出された場合にはステップＳ５７に進み、それ以外の場合にはもとの処理に復帰する。
［Ｓ５７］情報処理装置１０のＣＰＵ１０ａは、図５に示すコード変換表を参照して、処理対象となっている文字を正規化する。
【００６１】
例えば、処理対象の文字が全角カタカナの「ア」であるとすると、これは、コード変換表から全角ひらがなに正規化されるので、「ア」は「あ」に正規化される。
［Ｓ５８］情報処理装置１０のＣＰＵ１０ａは、正規化文字列に対して、ステップＳ５７で生成された正規化文字を追加格納する。
【００６２】
例えば、いま、正規化文字列に「ふろんてぃ」が格納されているとし、ステップＳ５７の正規化によって得られた文字が「あ」であるとすると、ステップＳ５８の処理において、正規化文字列は「ふろんてぃあ」となる。
【００６３】
次に、図７を参照して、図４のステップＳ３２に示す「復元情報生成処理」の詳細について説明する。このフローチャートは、チャンク単位で復元情報を生成する処理である。以下では、図８に示す復元情報を構成する記号文字について説明した後、図７に示すフローチャートの動作について説明する。
【００６４】
図８は、復元情報を構成する変換記号の一例を説明する図である。図の第１番目に掲げられている「＠○」は、半角文字の「@」と、所定のアスキー文字（この例では○）とから構成されており、アスキー文字のアスキーコードから“２０ｈ”を減算して得られた値ｎに対応するバイト数の文字を無変換で復元することを示す。例えば、入力文字列が全角ひらがなの「あした」である場合には、連続する文字のバイト数は“６”バイトであるので、“２０ｈ”に対して“６”を加算して得られた値“２６ｈ”に対応するアスキーコード「&」が「@」に付加されて復元情報「@&」が生成される。なお、バイト数に“２０ｈ”を加算するのは、アスキー文字では“２０ｈ”以下の文字は制御文字とされており、画面に表示されない場合もあるので、表示可能な文字に変換するためである。
【００６５】
次の「＿○」は、半角文字の「＿」と、所定のアスキー文字（この例では○）とから構成されており、先頭の英小文字のみを大文字に変換し、アスキー文字のアスキーコードから“２０ｈ”を減算して得られた値ｎから１を除算した（ｎ−１）に対応するバイト数の文字を無変換で復元することを示す。例えば、入力文字列が「that remains to be proved.」である場合には、文字列のバイト数“２６”を“２０ｈ”に加算して得られた値“３Ａｈ”に対応するアスキー文字「:」が「＿」に付加されて復元情報が生成される。
【００６６】
続く、「？」は、半角文字「?」のみから構成された復元情報であり、１バイトを無変換で復元することを示す。例えば、入力文字列が半角英小文字の「a」である場合には、復元情報としては「?」が生成されることになる。
【００６７】
最後の「◎」は、所定のアスキー文字であり、そのアスキーコードの上位３ビットは変換元コードを示し、下位５ビットは文字数を示す。例えば、入力文字列が全角カタカナの「アスリート」である場合には、正規化により全角ひらがなの「あすりーと」に変換されるので、図５に示すコード変換表よりその変換元コードは“０２”であり、また、連続文字数は“５”であるので、変換元コードに対応する“０１０”と、連続文字数に対応する“００１０１”を連結した“０１０００１０１”（＝４５ｈ）に対応するアスキー文字「E」が復元情報として生成される。なお、連続文字数は５ビットで表現されるので、理論的には“０”〜“３１”の値を取りうるが、“０”はあり得ないので除外され、また、“３１”は次の理由から除外される。即ち、「＿」と「?」のアスキーコードは、それぞれ“５Ｆｈ”と“３Ｆｈ”であるので、取り得る値を“３０”までに制限することによりこれらが重複することを防止できる。なお、図４に示すステップＳ３０の処理がこのような制限を課すための処理である。
【００６８】
次に、図７に示すフローチャートの動作について説明する。このフローチャートが開始されると、以下の処理が実行される。
［Ｓ７０］情報処理装置１０のＣＰＵ１０ａは、処理対象となっているチャンクの変換クラスが半角無変換である場合にはステップＳ７５に進み、それ以外の場合にはステップＳ７１に進む。
［Ｓ７１］情報処理装置１０のＣＰＵ１０ａは、処理対象となっているチャンクの変換クラスが全角無変換である場合にはステップＳ７２に進み、それ以外の場合にはステップＳ７３に進む。
［Ｓ７２］情報処理装置１０のＣＰＵ１０ａは、復元情報に変換記号「@」と文字バイト数を追加する。
【００６９】
例えば、処理対象がチャンク「ふろんてぃあ」である場合、復元情報には「@」が追加され、また、文字のバイト数“１２”を“２０ｈ”に加算して得られた値“２Ｃｈ”に対応する「,」が更に追加される。
［Ｓ７３］情報処理装置１０のＣＰＵ１０ａは、連続文字数、即ち、チャンクを構成する文字の文字数を計算する。
［Ｓ７４］情報処理装置１０のＣＰＵ１０ａは、変換元コードを上位３ビットとし、ステップＳ７３において計算された連続文字数を下位５ビットとした値に対応するアスキー文字を復元情報に付加する。
【００７０】
例えば、チャンク「フロンティア」を「ふろんてぃあ」に正規化した場合には、変換元コードは“０２”であるので“０１０”であり、文字数は“６”であるので“００１１０”であり、これらを連結した“０１０００１１０”は１６進法で“４６ｈ”であるので、これに対応するアスキー文字「F」が復元情報に追加される。
［Ｓ７５］情報処理装置１０のＣＰＵ１０ａは、連続バイト数が“１”を上回っているか否かを判定し、上回っている場合にはステップＳ７６に進み、それ以外の場合にはステップＳ７９に進む。
［Ｓ７６］情報処理装置１０のＣＰＵ１０ａは、英文変換であるか否かを判定する。即ち、図４に示すステップＳ２８において、英文変換に決定されている場合にはステップＳ７７に進み、それ以外の場合にはステップＳ７８に進む。
［Ｓ７７］情報処理装置１０のＣＰＵ１０ａは、英文変換であることを示す「＿」に対して文字のバイト数に対応するアスキー文字を付加し、復元情報に追加する。
【００７１】
例えば、処理対象のチャンクが「It can't be helped.」である場合には、英文変換を示す「＿」と、文字のバイト数“１９”を“２０ｈ”に加算して得られた値“３３ｈ”に対応するアスキー文字「3」が復元情報に追加される。
［Ｓ７８］情報処理装置１０のＣＰＵ１０ａは、復元情報に変換記号「@」と、文字のバイト数を示すアスキー文字を追加する。
【００７２】
例えば、処理対象のチャンクが「変換装置」である場合には、無変換を示す「@」と、文字のバイト数“８”を“２０ｈ”に加算して得られた値“２８ｈ”に対応するアスキー文字「（」が復元情報に追加される。
［Ｓ７９］情報処理装置１０のＣＰＵ１０ａは、復元情報に対して１バイト無変化を示すアスキー文字「?」を追加する。
【００７３】
例えば、処理対象のチャンクが「a」である場合には、復元情報に対してアスキー文字「?」が追加されることになる。
次に、図９〜図１２を参照して、以上の処理の具体的な動作例について説明する。
【００７４】
図９は、本実施の形態によって生成される正規化文字列と、復元情報との一例を説明する図である。
この例では、入力文字列は、全角大文字「新型」、半角カタカナ「パソコン」、全角英大文字「ＦＸ」、全角数字「２」、全角ひらがな「の」、および、全角カタカナ「ソントク」から構成されている。このような入力文字列に対して、図４に示す処理を施すと、先頭の全角大文字「新型」は無変換とされる。従って、復元情報としては、無変換を示す「@」に対して、連続文字のバイト数“４”に“２０ｈ”を加算して得られた値“２４ｈ”に対応するアスキー文字「$」が生成される。
【００７５】
次の半角カタカナの「パソコン」は全角ひらがなの「ぱそこん」に変換されるので、図５を参照して変換元コードは“０１”であり、変換後の文字数は“４”であるので、変換元コードに対応する“００１”と、変換後の文字数に対応する“００１００”を連結して得られた値に対応するアスキー文字「$」が生成される。
【００７６】
続く全角英大文字の「ＦＸ」は、半角英小文字の「fx」に変換される。この変換の変換元コードは、“０２”であり、連続文字数は“２”であるので、これらから得られる数値“４２ｈ”に対応するアスキー文字「B」が復元情報として生成される。
【００７７】
続く全角数字の「２」は、半角数字の「2」に変換される。この変換の変換元コードは“０３”であり、文字数は“１”であるので、これらから得られる数値“６１ｈ”に対応するアスキー文字「a」が復元情報として生成される。
【００７８】
続く全角ひらがなの「の」は、無変換とされる。従って、無変換を示す「@」に対して、バイト数“２”に“２０ｈ”を加算して得られた値に対応するアスキー文字「"」が付加されて復元情報が生成される。
【００７９】
最後に、全角カタカナの「ソントク」は、全角ひらがなの「そんとく」に変換される。この変換の変換元コードは“０２”であり、文字数は“４”であるので、これらから得られる数値“４４ｈ”に対応するアスキー文字「D」が復元情報として生成される。
【００８０】
従って、この例では、入力文字列は“２５”バイトであり、復元情報は“８”バイトであるので、従来のように入力文字列を保存する場合に比べて、情報量を６８％も削減することが可能となる。
【００８１】
次に、図１０を参照して他の例について説明する。
この例では、入力文字列は全角英大文字の「ＤＢＳ」、全角カタカナの「バックアップ」、全角ひらがなの「と」、および、全角カタカナの「リストア」から構成されている。
【００８２】
最初の全角英大文字の「ＤＢＳ」は、半角英小文字の「dbs」に変換されるので、対応する復元情報は「C」となる。
次の全角カタカナの「バックアップ」は、全角ひらがなの「ばっくあっぷ」に変換されるので、対応する復元情報は「F」となる。
【００８３】
続く全角ひらがなの「と」は、無変換とされるので、復元情報は「@"」となる。
最後の全角カタカナの「リストア」は、全角ひらがなの「りすとあ」に変換されるので、復元情報は「D」となる。
【００８４】
次に、図１１を参照して更に他の例について説明する。
この例では、入力文字列は、全角文字の「第二版  誤植の訂正  」と、半角英字の「Fable」、および、全角文字の「の章追加」とから構成されている。
【００８５】
最初の全角文字の「第二版  誤植の訂正  」は、無変換とされるので、復元情報は「@6」となる。
続く半角英字の「Fable」は、半角英小文字の「fable」に変換される。なお、この変換は、先頭の文字が半角英大文字であるので英文変換が選択され、復元情報は「＿%」となる。
【００８６】
最後の全角文字の「の章追加」は、無変換とされるので、復元情報は「@(」となる。
最後に、図１２を参照して更に他の例について説明する。
【００８７】
この例は、全てが半角英文字の場合であり、入力文字列としては、「Reflecting environmental consciousness, automakers demonstrate environmentally friendly cars.」が入力されている。この例では、英文変換が選択されるので、復元情報としては「＿］」が生成される。
【００８８】
この例では、入力情報は“９３”バイトであるが、復元情報は“２”バイトであるので、約９８％も情報量を削減することが可能となる。
次に、以上のようにして生成された正規化情報を検索して、検索結果を表示する場合の処理について説明する。
【００８９】
図１３は、以上のようにして生成され、データベース１１に格納されているデータを検索する際の処理の一例を示すフローチャートである。このフローチャートが開始されると、以下の処理が実行されることになる。
［Ｓ９０］情報処理装置１０のＣＰＵ１０ａは、クライアント１３から送信されてきたキーワードを入力する。
［Ｓ９１］情報処理装置１０のＣＰＵ１０ａは、キーワードを図５に示すコード変換表を参照して正規化する。
［Ｓ９２］情報処理装置１０のＣＰＵ１０ａは、正規化されたキーワード（以下、正規化キーワードと称す）により、データベース１１を検索し、該当する正規化文字列を取得する。
［Ｓ９３］情報処理装置１０のＣＰＵ１０ａは、検索結果として得られた正規化文字列に対してソート処理を施す。
【００９０】
なお、このソート処理は、正規化文字列に対して施されるので、情報処理装置１０のＯＳ等に拘わらず常に一定の結果が得られる。
［Ｓ９４］情報処理装置１０のＣＰＵ１０ａは、ソート処理が施された正規化文字列のそれぞれに対応する復元情報をデータベース１１から取得する。
［Ｓ９５］情報処理装置１０のＣＰＵ１０ａは、正規化情報の復元処理を実行する。
【００９１】
なお、この処理の詳細は、図１４を参照して後述する。
［Ｓ９６］情報処理装置１０のＣＰＵ１０ａは、全ての正規化文字列の復元処理が終了したか否かを判定し、終了した場合にはステップＳ９７に進み、それ以外の場合にはステップＳ９４に戻って、前述の場合と同様の処理を繰り返す。
［Ｓ９７］情報処理装置１０のＣＰＵ１０ａは、表示処理を実行する。即ち、情報処理装置１０は、復元された文字列（以下、復元文字列）をネットワーク１２を介してクライアント１３に供給し、表示装置１４に表示させる。
【００９２】
次に、図１４を参照して、図１３のステップＳ９５に示す復元処理の詳細について説明する。このフローチャートが開始されると、以下の処理が実行される。［Ｓ１１０］情報処理装置１０のＣＰＵ１０ａは、復元情報から変換記号を１つ抽出する。
【００９３】
例えば、復元情報が「@"?」であり、第１回目の処理である場合には、最初の変換記号である「@"」が抽出される。
［Ｓ１１１］情報処理装置１０のＣＰＵ１０ａは、変換記号が「@」または「?」であるか否かを判定し、これらに該当する場合にはステップＳ１１２に進み、それ以外の場合にはステップＳ１１３に進む。
［Ｓ１１２］情報処理装置１０のＣＰＵ１０ａは、正規化文字列から復元文字列に対して該当文字列をコピーする。
【００９４】
例えば、処理対象となる正規化文字列が「ぱそこん情報」であり、現在の復元文字列が「パソコン」であるとし、処理対象のチャンクが「情報」であるとすると、正規化文字列の該当する文字列が復元文字列にコピーされて「パソコン情報」となる。
［Ｓ１１３］情報処理装置１０のＣＰＵ１０ａは、変換記号が「＿」であるか否かを判定し、該当する場合にはステップＳ１１４に進み、それ以外の場合にはステップＳ１１６に進む。
［Ｓ１１４］情報処理装置１０のＣＰＵ１０ａは、正規化文字列の該当するチャンクの先頭文字を大文字に変換して復元文字列にコピーする。
【００９５】
例えば、正規化文字列の該当するチャンクが「he is certain to succeed.」である場合には、先頭の「h」が大文字「H」に変換され、復元文字列にコピーされる。
［Ｓ１１５］情報処理装置１０のＣＰＵ１０ａは、正規化文字列の次文字（先頭文字の次の文字）から（連続バイト数−１）バイト分の文字を復元文字列に対してコピーする。
【００９６】
前述の例では、復元情報は「＿9」であるので、「9」＝（“３９ｈ”）から“２０ｈ”を減算して得られた値“２５”（＝連続バイト数）から“１”を更に減算したバイト分の文字列「e is certain to succeed.」が正規化文字列から復元文字列へコピーされる。その結果、復元文字列は、「He is certain to succeed.」となる。
［Ｓ１１６］情報処理装置１０のＣＰＵ１０ａは、変換記号を連続文字数と変換元コードに分離する。
【００９７】
即ち、変換記号は、連続文字数を示す下位５ビットと、変換元コードである上位３ビットに分解される。例えば、正規化文字列が「ぱそこん」であり、復元情報が「D」である場合を例に挙げると、ステップＳ１１６の処理では、復元情報である「D」＝（“４４ｈ”）が上位３ビットである“０１０”と、下位５ビットである“００１００”とに分離される。
［Ｓ１１７］情報処理装置１０のＣＰＵ１０ａは、正規化文字列から処理対象のチャンクを切り分ける。
【００９８】
即ち、ＣＰＵ１０ａは、連続文字数を参照して、正規化文字列から処理対象となるチャンクを抽出する。いまの例では、正規化文字列から「ぱそこん」が抽出される。
［Ｓ１１８］情報処理装置１０のＣＰＵ１０ａは、ステップＳ１１７において抽出したチャンクの文字種を特定する。
【００９９】
いまの例では、「ぱそこん」の文字種は全角ひらがなであることが特定される。
［Ｓ１１９］情報処理装置１０のＣＰＵ１０ａは、コード変換表を参照して、変換元の文字種を特定する。
【０１００】
いまの例では、図５を参照して、正規化文字列の文字種である「全角ひらがな」に対応する文字種がエントリの欄から検索され、更に、変換元コード“０２”の欄に記載されている「全角カタカナ」が正規化前の文字種として特定される。［Ｓ１２０］情報処理装置１０のＣＰＵ１０ａは、ステップＳ１１７において抽出した文字列を、元の文字種へ変換する。
【０１０１】
いまの例では、「ぱそこん」が「パソコン」に変換される。
［Ｓ１２１］情報処理装置１０のＣＰＵ１０ａは、変換によって得られた文字列を復元文字列に対してコピーする。
［Ｓ１２２］情報処理装置１０のＣＰＵ１０ａは、正規化文字列の全ての文字の変換が終了したか否かを判定し、終了した場合にはもとの処理に復帰し、それ以外の場合にはステップＳ１１０に戻って前述の場合と同様の処理を繰り返す。
【０１０２】
以上の処理によれば、データベースにデータを登録する際に、入力文字列を正規化して得られた正規化文字列と、正規化文字列からもとの入力文字列を復元するための復元情報とを対応付けて登録するようにしたので、入力文字列を格納する場合に比較して必要な記憶容量を削減することが可能となる。
【０１０３】
また、検索処理とソート処理は正規化情報を処理対象とし、これらの処理が終了した後に、復元情報を参照してもとの入力文字列を再生するようにしたので、システムに依存することなく同一の検索結果を得ることができる。
【０１０４】
なお、以上の実施の形態においては、シフトＪＩＳコードを例に挙げて説明を行ったが、他のコード系に対しても本発明を適用することが可能である。なお、ＵＮＩＣＯＤＥについては２バイトコード系であるため、各記号文字を２バイトとする必要があるが、変換の原理（４種類の変換を使用すること）に相違はない。
【０１０５】
最後に、上記の処理機能は、コンピュータによって実現することができる。その場合、情報処理装置が有すべき機能の処理内容は、コンピュータで読み取り可能な記録媒体に記録されたプログラムに記述されており、このプログラムをコンピュータで実行することにより、上記処理がコンピュータで実現される。コンピュータで読み取り可能な記録媒体としては、磁気記録装置や半導体メモリ等がある。市場へ流通させる場合には、ＣＤ−ＲＯＭ(Compact Disk Read Only Memory)やフロッピーディスク等の可搬型記録媒体にプログラムを格納して流通させたり、ネットワークを介して接続されたコンピュータの記憶装置に格納しておき、ネットワークを通じて他のコンピュータに転送することもできる。コンピュータで実行する際には、コンピュータ内のハードディスク装置等にプログラムを格納しておき、メインメモリにロードして実行する。
【０１０６】
【発明の効果】
以上説明したように本発明では、入力された文字列を正規化して格納する情報処理装置において、入力された文字列を正規化して正規化文字列を生成する正規化手段と、正規化手段によって得られた正規化文字列を、元の文字列に復元するための復元情報を生成する復元情報生成手段と、復元情報生成手段によって生成された復元情報と、正規化文字列とを対応付けて記憶する記憶手段と、記憶手段に記憶されている所定の正規化文字列が指定された場合には、対応する復元情報を参照して元の文字列を復元する復元手段と、を有するようにしたので、入力された文字列を記憶する場合に比較して、記憶手段の必要な記憶容量を削減することが可能となる。また、検索処理とソート処理は正規化情報を処理対象とし、これらの処理が終了した後に、復元情報を参照して元の入力文字列を再生するようにしたので、システムに依存することなく同一の検索結果を得ることができる。
【図面の簡単な説明】
【図１】本発明の動作原理を説明する原理図である。
【図２】本発明の実施の形態の構成例を示すブロック図である。
【図３】図２に示す実施の形態においてデータをデータベースに登録する際に実行される処理の一例を説明するフローチャートである。
【図４】図３に示す「正規化および復元情報生成処理」の詳細を説明するフローチャートである。
【図５】正規化と復元処理の際に使用されるコード変換表の一例を説明する図である。
【図６】図４のステップＳ２２，Ｓ２５に示す「変換クラス決定処理」の詳細を説明するフローチャートである。
【図７】図４のステップＳ３２に示す「復元情報生成処理」の詳細を説明するフローチャートである。
【図８】復元情報を構成する変換記号の一例を説明する図である。
【図９】本実施の形態によって生成される正規化文字列と復元情報の一例を説明する図である。
【図１０】本実施の形態によって生成される正規化文字列と復元情報の他の一例を説明する図である。
【図１１】本実施の形態によって生成される正規化文字列と復元情報の更に他の一例を説明する図である。
【図１２】本実施の形態によって生成される正規化文字列と復元情報の更に他の一例を説明する図である。
【図１３】図２に示す実施の形態において実行される検索処理の一例を説明するフローチャートである。
【図１４】図１３に示す「復元処理」の詳細を説明するフローチャートである。
【符号の説明】
１  正規化手段
２  復元情報生成手段
３  記憶手段
４  復元手段
１０  情報処理装置
１０ａ  ＣＰＵ
１０ｂ  ＲＯＭ
１０ｃ  ＲＡＭ
１０ｄ  ＨＤＤ
１０ｅ，１０Ｆ  Ｉ／Ｆ
１１  データベース
１２  ネットワーク
１３  クライアント
１４  表示装置
【図１】
0003794882.tif 000002
【図２】
0003794882.tif 000003
【図３】
0003794882.tif 000004
【図４】
0003794882.tif 000005
【図５】
0003794882.tif 000006
【図６】
0003794882.tif 000007
【図７】
0003794882.tif 000008
【図８】
0003794882.tif 000009
【図９】
0003794882.tif 000010
【図１０】
0003794882.tif 000011
【図１１】
0003794882.tif 000012
【図１２】
0003794882.tif 000013
【図１３】
0003794882.tif 000014
【図１４】
0003794882.tif 000015