(57)【特許請求の範囲】
【請求項１】
コンピュータ・システムがインデックス化キャラクタおよび非インデックス化キャラクタを対応する重みアレイにマップする方法であって、各キャラクタが複数の構成要素を含み、前記インデックス化キャラクタはコード・システム内でインデックス化されており、前記非インデックス化キャラクタは前記コード・システム内でインデックス化されておらず、各インデックス化キャラクタが前記コード・システム内で第１のセットの標準化重み値を割り当てられ、前記方法が、
前記構成要素のそれぞれに第２のセットの特殊重み値を割り当てるステップであって、前記第２のセットの特殊重み値の順序付けが前記インデックス化キャラクタおよび非インデックス化キャラクタの文法規則の順序付けに基づくように前記第２のセットの特殊重み値を割り当てるステップと、
前記インデックス化キャラクタおよび非インデックス化キャラクタの各々と、各キャラクタの前記構成要素の特殊重み値の連接とを一意に関連付けるステップと、
インデックス化キャラクタであるか非インデックス化キャラクタであるかに係わらず、キャラクタに関連付けられた特殊重み値の連接をソートすることによって前記キャラクタを整列するステップと、
各インデックス化キャラクタについて、前記インデックス化キャラクタの前記標準化重み値と、前記インデックス化キャラクタに関連付けられた特殊重み値の連接とによって重みアレイを生成するステップと、
各非インデックス化キャラクタについて、前記非インデックス化キャラクタに最も近い前方の位置に整列された前記インデックス化キャラクタの標準化重み値と、前記非インデックス化キャラクタに関連付けられた特殊重み値の連接とによって重みアレイを生成するステップと、
から成る方法。
【請求項２】
請求項１記載の方法において、前記重みアレイを、ユニコード規格と互換性のあるフォーマットに構成する、方法。
【請求項３】
請求項１記載の方法において、前記第１のセットの標準化重み値は、ユニコード規格による英数字重み値を表す、方法。
【請求項４】
請求項１記載の方法において、インデックス化キャラクタが現ハングル・キャラクタを表し、非インデックス化キャラクタが旧ハングル・キャラクタを表す、方法。
【請求項５】
請求項１記載の方法において、インデックス化キャラクタは、ユニコード規格に応じてインデックス化されたものである、方法。
【請求項６】
実行すると、請求項１記載の方法をコンピュータ・システムに実施させるコンピュータ実行可能コードを有するコンピュータ読み取り可能媒体。
【請求項７】
実行すると、請求項１記載の方法をコンピュータ・システムに実施させるコンピュータ実行可能コードを有するコンピュータ・システム。
【発明の詳細な説明】
【０００１】
【関連出願に関する引用】
この通常特許出願は、２０００年１０月３０日に出願し、"METHOD AND SYSTEM FOR MAPPING STRINGS FOR COMPARISON"（比較のためにストリングをマップする方法およびシステム）と題する仮出願第６０／２４４，２８８号の、３５Ｕ．Ｓ．Ｃ．§１１９（ｅ）に基づく優先権を主張する。
【０００２】
【発明の属する技術分野】
本発明は、コンピュータ・ソフトウエアに関し、特に、異なる表現重みを有するテキスト・ストリングをマップし比較する方法およびシステムに関する。
【０００３】
【従来の技術】
ストリングは一般に基本的データ・タイプと見なされ、多くのコンピュータ・アプリケーションは一般にストリングを比較する能力を有する。ストリングの比較機能性は、多数のソフトウエア・アプリケーションにおいて見ることができるが、具体的な応用の１つは、テキスト・データを比較するためのストリングの使用である。例えば、テキスト・ストリング間の比較は、ソフトウエア・アプリケーションやオペレーティング・システムが、種々の言語のキャラクタや単語をソートするために利用されている。
【０００４】
テキスト・ストリングを比較するために設計された多くのコンピュータ実装アルゴリズムがあることは、当業者には周知である。例えば、ストリング比較アルゴリズムは、多くのオペレーティング・システムの中核に存在し、殆どのデータベース・プログラムの一体部分となっている。これら既存のシステムは、ストリングの比較を行うには十分であり、種々の言語を表すテキストをソートし順序付けるために最終的に用いられている。当業者には公知であるが、ストリング比較アルゴリズムでは、ストリング内のキャラクタを表すために数値コードが用いられており、各キャラクタは、いずれかの言語のアルファベットからのレターを表すことができる。更に具体的には、キャラクタを表す数値コードは、計算機が、例えば、ストリングをアルファベット順に順序付けるデータベースのように、所望のフォーマットにしたがってキャラクタ・ストリングを順序付け、ソートし、優先順位を付けるために利用されている。
【０００５】
ユニコードと一般に呼ばれている、公知の世界共通コーディングおよびインデックシング・システムの１つが、計算アプリケーションにおいて、テキスト・ストリングをソートし順序付けるために共通して用いられている。ユニコード規格の概略的な背景情報は、"Unicode Standard Version 3.0, Addison Wesley, Unicode Consortium, ISBN 0-201-61633-5"と題する刊行物において見出すことができる。その主題は、この言及により本願にも具体的に含まれるものとする。ユニコード規格は、全体として機能的であり、ソフトウエア・アプリケーションが、共通言語からの種々のレターおよび単語を表すテキスト・ストリングをソートし順序付けることを可能にする。更に具体的には、ユニコード規格は、概略的に、共通言語からのシンボルを一連の連続する１６ビット値としてグループ化する。当業者には認められようが、一般に知られている言語の殆どは、ユニコード・システムでインデックス化されている。しかしながら、未だ、ユニコード規格が各単語またはキャラクタをマップし、ソートし比較する方法を設けていない、複数のアルファベットおよび／またはキャラクタ・セットから成る言語も多く存在する。これらのアルファベットおよび／またはキャラクタは、標準的なインデックス・システムの一部をなしておらず、非インデックス化キャラクタと呼ばれている。
【０００６】
テキスト・ストリング比較アプリケーションの代表例の１つに、ハングルから成る韓国語がある。当業者には概略的に理解されようが、現在のハングルは、正確に音節当たり１つの現ハングル・キャラクタがあるという、望ましい特性を有する。現ハングル・キャラクタ間の比較を容易にするために、各現ハングル・キャラクタ／音節は、したがって、一意の数値重み値が割り当てられている。ユニコードは、１６ビット・エンコード規格であり、種々の言語の各キャラクタには、一意の数値表現が与えられていることを当業者は認めよう。したがって、各現ハングル・キャラクタに昇順で数値重みを割り当てることによって、ハングル・キャラクタの比較は、数学的にキャラクタの数値重みを比較することによって行われる。
【０００７】
【発明が解決しようとする課題】
前述のシステムは、殆どの現在のキャラクタを比較するシステムを提供するが、韓国語のように、いくつかの言語は、旧ハングル・キャラクタのように、ある種のキャラクタが既存のコーディングまたはインデックシング・システムに完全に組み込まれていないという、独特の状況を示す場合がある。例えば、旧ハングル・キャラクタは、ユニコード・システムに完全に組み込まれてはいない。したがって、旧ハングル・キャラクタは、一般的に知られているキャラクタ比較およびソーティング方法の使用によって、現ハングル・キャラクタと容易に比較することはできない。
【０００８】
したがって、前述の問題を考慮すると、計算機が、コーディング・システムに完全にインデックス化されていない複雑な言語を伴う、ストリング比較機能を実行することを可能にするシステムおよび方法が求められている。
【０００９】
【課題を解決するための手段】
本発明は、ストリング内の多数のキャラクタをマップする方法およびシステムを提供する。ストリングは、インデックス化表現を表すキャラクタの組み合わせ、および非インデックス化表現を表すキャラクタの組み合わせから成る。一実施形態は、重みアレイを生成し、これを利用して、インデックス化表現および非インデックス化表現を有する第１および第２ストリングを比較することができる。特定的な一実施形態では、本方法は、インデックス化表現および非インデックス化表現を表す複数のキャラクタに対して、１組の特殊重みを発生する。次に、本方法は、インデックス化表現の重み値を、特定の非インデックス化表現を表す特定のキャラクタ・グループと関連付け、特定の非インデックス化表現を表す特定のキャラクタ・グループに関連する複数の特殊重み、およびインデックス化表現の関連する重み値を検索することによって、重みアレイを発生する。次いで、本発明の比較方法は、重みアレイ内の重みを利用して、インデックス化表現および非インデックス化表現を有する第１および第２ストリングを比較する。
【００１０】
更に別の実施形態では、本方法は、旧ハングルおよび現ハングルを有する第１および第２ストリングを比較するために利用することができる重みアレイを生成する。この実施形態では、本方法は、旧ハングルおよび新ハングルを表す複数のJamoの組み合わせに対して、１組の特殊重みを発生する。次に、本方法は、現ハングルの重み値を、特定の旧ハングルを表す特定のJamoキャラクタ・グループと関連付け、特定の旧ハングルを表す特定のJamoキャラクタ・グループと関連する複数の特殊重み、および現ハングルの関連する重み値を検索することによって、重みアレイを発生する。一代替実施形態では、重みアレイを構築する際、特定のJamoキャラクタ・グループと関連する複数の特殊重みを、現ハングルの関連する重み値に添付する。
【００１１】
本発明の別の実施形態では、旧ハングル・キャラクタの有効性を検査するルーチンを、重みマッピング・プロセスと組み合わせ、重みアレイを発生する。本発明によって生成した重みアレイは、インデックス化キャラクタおよび非インデックス化キャラクタを有する２つ以上のストリングのテキスト比較を、コンピュータによって実現することを可能にする。
【００１２】
本発明の前述の態様および、付随する利点の多くは、添付図面と関連付けて、以下の詳細な説明を参照することによって、一層容易に認められると共に、より良く理解することができよう。
【００１３】
【発明の実施の形態】
本発明は、テキスト・ストリングをマップし比較する方法およびシステムを対象とする。本発明は、第１組の数値重み値を有する第１言語キャラクタ・セットを、第２組の数値重み値を有する第２言語キャラクタ・セットにマップし、第１および第２キャラクタ・セットの比較を容易にするシステムおよび方法に関して説明する。代表的な一例では、キャラクタをマップする一方法は、旧ハングルJamoキャラクタ数値重み値のテキスト・ストリングの、現ハングル数値重み値を用いた、ソーティングを伴う。当業者には容易に理解されようが、本発明は、旧および現韓国語ハングル・キャラクタへの応用に限定されるのではなく、本発明のシステムおよび方法は他のあらゆる言語にも適用可能である。したがって、開示する実施形態は一例に過ぎず、限定として解釈すべきでないことは理解されよう。
【００１４】
以下の本発明の摘要では、最初に、本発明を実施するのに適した一計算環境の概要を示す。次に、摘要は、キャラクタをソートしマップする方法の全体的な説明を行う。最後に、摘要は、キャラクタをソートしマップする一コンピュータ実施方法の代表例を示す。
【００１５】
図１１は、本発明を実施可能とするのに適した計算システム環境の一例を示す。計算システム環境は、適した計算環境の一例に過ぎず、本発明の使用または機能性の範囲に関していずれの限定をも示唆する訳ではない。また、一例の動作環境に示すいずれの一コンポーネントまたはコンポーネントの組み合わせに関しても、計算環境はいずれの依存性も要件も有するものとして解釈してはならない。
【００１６】
本発明は、周知の計算システム、環境、および／またはコンフィギュレーションのような、多数のその他の一般的目的において動作する。本発明を実施するのに適したこのような例は、限定としてではなく、パーソナル・コンピュータ、サーバ・コンピュータ、ラップトップ・デバイス、マイクロプロセッサ・システム、マイクロプロセッサ系システム、ネットワークＰＣ、ミニコンピュータ、メインフレーム・コンピュータ、上述のシステム等のいずれをも含む分散計算環境等を含む。
【００１７】
本発明の説明は、コンピュータが実行するプログラム・モジュールのようなコンピュータ実行可能命令の一般的なコンテキストで行うこととする。一般に、プログラム・モジュールは、特定のタスクを実行したり、あるいは特定の抽象的データ・タイプを実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。また、本発明は、分散型計算機環境において、通信ネットワークを通じてリンクしたリモート処理デバイスによってタスクを実行するという実施も可能である。ある分散型計算機環境においては、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモート双方のコンピュータ記憶媒体に配置することができる。
【００１８】
図１１を参照すると、本発明を実施するための例示のシステムは、コンピュータ２０の形態とした汎用計算デバイスを含む。コンピュータ２０のコンポーネントは、処理ユニット２２、システム・メモリ２４、およびシステム・メモリからプロセッサまでを含む種々のシステム・コンポーネントを結合するシステム・バス２６を含むことができるが、これらに限定される訳ではない。システム・バスは、種々のバス・アーキテクチャのいずれかを用いたメモリ・バスまたはメモリ・コントローラ、周辺バス、およびローカル・バスを含む、数種類のバス構造のいずれでもよい。限定ではなく一例として、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ）通常キャピタリゼーション・バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ）バス、改良ＩＳＡ（ＥＩＳＡ）バス、ビデオ電子規格協会（ＶＥＳＡ）ローカル・バス、およびＭｅｚｚａｎｉｎｅバスとしても知られている周辺素子相互接続（ＰＣＩ）バスを含む。
【００１９】
コンピュータ２０は、通例では、種々のコンピュータ読み取り可能媒体を含む。コンピュータ読み取り可能媒体は、コンピュータ２０がアクセス可能であれば、入手可能な媒体のいずれでも可能であり、揮発性および不揮発性双方の媒体、リムーバブルおよび非リムーバブル媒体を含む。一例として、そして限定ではなく、コンピュータ読み取り可能媒体は、コンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、限定する訳ではないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリまたはその他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル・バーサタイル・ディスク（ＤＶＤ）、またはその他の光ディスク・ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、またはその他の磁気記憶装置、あるいは所望の情報を格納するために使用可能であり、コンピュータ２０によってアクセス可能なその他のいずれの媒体でも含まれる。
【００２０】
通信媒体は、通例では、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、またはその他データを、キャリア波またはその他のトランスポート機構のような変調データ信号におけるその他のデータを具体化し、あらゆる情報配信媒体を含む。「変調データ信号」という用語は、信号内に情報をエンコードするように、その１つ以上の特性を設定または変更した信号を意味する。一例として、そして限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続のような有線媒体、ならびに音響、ＲＦ、赤外線およびその他のワイヤレス媒体のようなワイヤレス媒体を含む。前述のいずれの組み合わせでも、コンピュータ読み取り可能媒体の範囲内に当然含まれるものとする。
【００２１】
システム・メモリ２４は、リード・オンリ・メモリ（ＲＯＭ）２８およびランダム・アクセス・メモリ（ＲＡＭ）３０のような揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。基本入出力システム３２（ＢＩＯＳ）は、起動中のように、コンピュータ２０内のエレメント間におけるデータ転送を補助する基本的なルーチンを含み、通例ではＲＯＭ２８内に格納されている。ＲＡＭ３０は、通例では、処理ユニット２２が直ちにアクセス可能であるデータおよび／またはプログラム・モジュール、または現処理ユニット２２によって処理されているデータおよび／またはプログラム・モジュールを収容する。一例として、そして限定ではなく、図１１は、オペレーティング・システム４７、アプリケーション・プログラム４８、その他のプログラム・モジュール５０、およびプログラム・データ５２を示す。
【００２２】
また、コンピュータ２０は、その他のリムーバブル／非リムーバブル揮発性／不揮発性コンピュータ記憶媒体も含むことができる。一例としてに過ぎないが、図１１は、非リムーバブル不揮発性磁気媒体３６からの読み取りおよびこれへの書き込みを行なうハード・ディスク・ドライブ３４、リムーバブル不揮発性磁気ディスク４０からの読み取りおよびこれへの書き込みを行なう磁気ディスク・ドライブ３８、ならびにＣＤ  ＲＯＭまたはその他の光媒体のようなリムーバブル不揮発性光ディスク４４からの読み取りおよびこれへの書き込みを行なう光ディスク・ドライブ４２を示す。動作環境の一例において使用可能なその他のリムーバブル／非リムーバブル、揮発性／不揮発性コンピュータ記憶媒体には、限定する訳ではないが、磁気テープ・カセット、フラッシュ・メモリ・カード、ＤＶＤ、ディジタル・ビデオ・テープ、ベルヌーイ・キャップ・カートリッジ、ソリッド・ステートＲＡＭ、ソリッド・ステートＲＯＭ等が含まれる。ハード・ディスク・ドライブ３４、磁気ディスク・ドライブ３８、および光ディスク・ドライブ４２は、それぞれ、ハード・ディスク・ドライブ・インターフェース５４、磁気ディスク・ドライブ・インターフェース５６、および光ドライブ・インターフェース６０によって、システム・バス２７に接続することができる。あるいは、ハード・ディスク・ドライブ３４、磁気ディスク・ドライブ３８、および光ディスク・ドライブ４２は、通例では、小型コンピュータ・システム・インターフェース（ＳＣＳＩ）によってシステム・バス２７に接続する。
【００２３】
先に論じ図１１に示すドライブおよびそれらと連動するコンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、およびコンピュータ２０のその他のデータを格納する。図１１では、例えば、ハード・ディスク・ドライブ３４は、オペレーティング・システム４６、アプリケーション・プログラム４８、その他のプログラム・モジュール５０、およびプログラム・データ５２を格納するように示されている。尚、これらのコンポーネントは、オペレーティング・システム４６、その他のプログラム・モジュール５０、およびプログラム・データ５２と同じでも異なっていても可能であることを注記しておく。ユーザは、キーボード６０、およびマウス、トラックボールまたはタッチ・パッドと一般に呼ばれている、ポインティング・デバイス６２によって、コマンドおよび情報をコンピュータ２０に入力することができる。他の入力デバイス（図示せず）は、マイクロフォン、ジョイスティック、ゲーム・パッド、衛星ディッシュ、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、ユーザ入力インターフェース６４を介して、処理ユニット２２に接続されており、パラレル・ポート、ゲーム・ポートまたはその他のユニバーサル・シリアル・バス（ＵＳＢ）のような、その他のインターフェースおよびバス構造によって接続することも可能である。
【００２４】
コンピュータ２０は、１つ以上のリモート・コンピュータ６５への論理接続を用いて、ネットワーク環境において動作することも可能である。リモート・コンピュータ６５は、パーソナル・コンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア・デバイス、またはその他の共通ネットワーク・ノードとすることができ、通例では、コンピュータ２０に関して先に説明したエレメントの多くまたは全てを含む。図１１に示す論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）６６およびワイド・エリア・ネットワーク（ＷＡＮ）６７を含むが、他のネットワークも含むことができる。このようなネットワーク環境は、事務所、企業規模のコンピュータ・ネットワーク、イントラネットおよびインターネットにおいては、一般的である。コンピュータ２０は、少なくとも１つのネットワーク接続が不連続となるように構成してもよいことを、当業者は認めよう。したがって、コンピュータ２０は、ネットワーク接続がディスエーブルされている時間期間中は、リモート・コンピュータ６５と通信することができない。このような構成は、一般に「オフライン」構成として記述する。
【００２５】
ＬＡＮネットワーク環境で用いる場合、コンピュータ２０は、ネットワーク・インターフェースまたはアダプタ６８を介してＬＡＮ６７に接続する。ＷＡＮネットワーク環境で用いる場合、コンピュータは、通例では、モデム、またはインターネットのようなＷＡＮ６８を通じて通信を確立するその他の手段を含む。モデムは、内蔵でも外付けでもよく、シリアル・ポート・インターフェースまたはその他の適切な機構を介してシステム・バス２６に接続することができる。ネットワーク環境では、コンピュータ２０に関して図示したプログラム・モジュール、またはその一部は、リモート・メモリ記憶装置に格納することもできる。一例として、そして限定ではなく、図１１は、リモート・アプリケーション・プログラム４８がメモリ・デバイス２４上に常駐するものとして示している。尚、図示のネットワーク接続は一例であり、コンピュータ間で通信リンクを確立する他の手段も使用可能であることは認められよう。コンピュータ２０のその他の内部コンポーネントの多くは示されていないが、このようなコンポーネントおよびその相互接続は周知であることを当業者は認めよう。したがって、コンピュータ２０の内部構造に関するこれ以上の詳細は、本発明に関して開示する必要はない。
【００２６】
当業者は理解しているであろうが、オペレーティング・システム４６、アプリケーション・プログラム４８およびデータ５２のようなプログラム・モジュールは、コンピュータ２０に、そのメモリ・ストレージ・デバイスの１つを介して供給され、メモリ・ストレージ・デバイスは、ＲＯＭ２８、ＲＡＭ３０、ハード・ディスク・ドライブ３４、磁気ディスク・ドライブ３８、または光ディスク・デバイス４２を含むことができる。ハード・ディスク・ドライブ３４は、データ５２、ならびにオペレーティング・システム４６およびアプリケーション・プログラム４８を含むプログラムを格納するために用いられる。
【００２７】
コンピュータ２０をオンにするかまたはリセットすると、ＲＯＭに格納してあるＢＩＯＳ３２が、処理ユニット２２に、ハード・ディスク・ドライブ３４からＲＡＭ３０にオペレーティング・システムをロードするように命令する。一旦オペレーティング・システム４６がＲＡＭ３０にロードされると、処理ユニットはオペレーティング・システム・コードを実行し、オペレーティング・システムのユーザ・インターフェースと連動するビジュアル・エレメントをモニタ上に表示させる。ユーザがアプリケーション・プログラム４８を開くと、プログラム・コードおよび関連するデータがハード・ディスク・ドライブから読み出され、ＲＡＭ３８に格納される。
【００２８】
本発明の一態様によれば、キャラクタ・ストリングを比較しマップする方法を提供する。以下に説明するように、韓国語に関与する一例では、本発明の方法の１つは、旧ハングルを現ハングルにマップするに当たり、一意の数値重みスキーマを用いる。次いで、旧ハングル・キャラクタおよび現ハングル・キャラクタのテキスト・ストリングを比較する方法において、マッピング方法の結果を用いる。
【００２９】
本発明の実施形態の一例を以下において容易に摘要するために、韓国語の概略的な説明を行う。概略的に述べると、韓国語の単語は、ハングルで書かれ、韓国語のハングルは、Jamoと呼ばれる個々のキャラクタで構成されている。ここで図１を参照すると、韓国語の単語の構造を示す図が示されている。図１に示すように、２つの韓国語キャラクタ１１および１２を組み合わせて、単語１０を形成する。これは、「ハングル」を意味する。また、図１は、個々のJamoキャラクタ１３〜１８をどのように組み合わせて各ハングル・キャラクタ１１および１２を形成するかについても、模式的に示している。図１に示す韓国語キャラクタ１１および１２は、現ハングル・キャラクタと見なす。
【００３０】
韓国語では、各現ハングルは２つまたは３つのJamoキャラクタで表現されることが一般に公知である。また、Jamoキャラクタの全ては、３つのセットに分類されることも公知である。第１セットを「先導子音」と呼び、第２セットを「母音」と呼び、第３セットを「後端子音」と呼ぶ。これにしたがって、現ハングル・キャラクタは常に２つの形態で書かれる。（１）１つの先導子音および１つの母音を有する形態、または（２）１つの先導子音、１つの母音、および１つの後端子音を有する別の形態である。
【００３１】
Jamoキャラクタのセット全体では、９６個の先導子音、６６個の母音、および８２個の後端子音がある。全てのJamoキャラクタの内、現ハングル・キャラクタを構成するために用いられるのは、Jamoキャラクタのサブセットのみである。更に具体的には、現ハングル・キャラクタは、１９個の先導子音、２１個の母音、および２７個の後端子音しか用いない。ユニコード規格によれば、このJamoキャラクタのサブセットは、特定のコード範囲に割り当てられる。更に具体的には、先導子音は、(U+1100)から(U+1112)までのユニコード範囲を有し、母音は(U+1161)から(U+1175)までのユニコード範囲を有し、後端子音は(U+11A8)から(U+11C2)までのユニコード範囲を有する。したがって、このJamoキャラクタのサブセットからは、(19x21x27+19x21)=(11,172)個の可能な組み合わせが得られる。言い換えると、Jamoキャラクタのサブセットを組み立てると、１１，１７２個の別個の現ハングル・キャラクタが得られる。現ハングル・キャラクタの数は固定しているので、現ハングル・キャラクタの各々には、ユニコード規格にしたがって特定のコードが割り当てられる。更に具体的には、現ハングル・キャラクタは、ユニコード範囲(U+AC00)ないし(U+D7A3)に割り当てられる。
【００３２】
Jamoキャラクタのサブセットと現ハングル・キャラクタとの間のこの関係にしたがって、現ハングル・キャラクタを表すコード（U+AC00ないしU+D7A3)を、Jamoキャラクタの組み合わせを表すコードにマップすることができる。これに応じて、Jamoキャラクタの組み合わせを各現ハングルに関連付けるデータ表を発生することができる。例えば、図２は、現ハングル・キャラクタと関係するJamoキャラクタとの間の関係を示すキャラクタ・マップの一実施形態を示すデータ表を表す部分である。
【００３３】
図２に示すように、(U+AC00)のコードを有する第１現ハングル・キャラクタは、(U+1100)のコードを有する第１先導子音と、(U+1161)のコードを有する第１母音とによって構成されている。コード(U+AC01)の第２ハングル・キャラクタは、(U+1100)のコードを有する第１先導子音と、(U+1161)のコードを有する第１母音と、(U+11A8)のコードを有する第１後端子音とによって構成されている。図２に示すように、ハングル・キャラクタを表すコードは、昇順に並べられており、各Jamoの組み合わせも昇順に統計的に並べられている。これに応じて、Jamoの組み合わせに対する残りのコードを外挿補間すれば、(U+D7A3)のコードならびに(U+1112), (U+1175)および(U+11C2)のJamoコードの組み合わせを有する最後のハングル・キャラクタで示すように、表を完成することができる。
【００３４】
当業者には公知であろうが、前述のユニコード・システムは、現ハングルのようなテキスト・ストリングにおいてキャラクタをソートする際に、コンピュータ・プログラムを補助する重み付けシステムを利用する。つまり、ユニコード重み値を、各ハングル・キャラクタを表すコードに関連付けることができる。例えば、図３は、１０個のハングル・キャラクタ（行１〜８）に対するいくつかの重み付け値を示すデータ表を表す部分を示す。図３のデータ表の行１〜３は、図２に示した最初の３つのハングル・キャラクタ（行１〜３）に対する重み値を示す。
【００３５】
図３に示すように、最初の列はハングル毎のユニコードをリストにまとめ、２番目の列はスクリプト・メンバーを表し、３番目の列は英数字重みを表し、４番目の列は区別可能重みを表し、５番目の列は各ハングルのケース重みを表す。当業者には公知であろうが、ユニコード規格を利用するシステムは、割り当てられたスクリプト・メンバー、（３）の英数字重み、そしてその他の残りの重みによって、各キャラクタを順序付ける。例えば、最初のキャラクタ(U+AC00)は0X80のスクリプト・メンバーおよび３の英数字重みを有し、２番目のキャラクタ(U+AC01)は同じスクリプト・メンバーを有するが英数字重みはこちらの方が大きいので、２番目のキャラクタ(U+AC01)は最初のキャラクタ(U+AC00)の後にソートされる。
【００３６】
前述のように、ユニコード・システムは、Jamoおよび現ハングル・キャラクタで構成されるストリングの順序付けおよびソーティングを行うために、現ハングル・キャラクタに重みコード・マップを設ける。しかしながら、前述のユニコード・システムは、韓国語の全キャラクタに完全に対応する訳ではない。例えば、前述のユニコード・システムは、旧ハングルとして知られるキャラクタに割り当てられるコードを有していない。加えて、既存のJamoユニコードは、旧ハングルをソートするためには用いることができない。何故なら、旧ハングル・キャラクタの複合規則が、現ハングルの複合規則とは異なるからである。更に具体的には、旧ハングル・キャラクタは、３つよりも多いJamoで構成されている。前述のように、現ハングル・キャラクタは、一般に、３つのJamoで表される。即ち、先導子音、母音、および後端子音である。一方、旧ハングルは、１つないし３つの先導子音、１つないし３つの母音で表され、０ないし３つの後端子音を有する可能性がある。したがって、旧ハングル・キャラクタは、３つないし９つのJamoで構成される可能性がある。
【００３７】
前述のように、現ハングル・キャラクタをJamoキャラクタ・コードの組み合わせから識別しソートする総合的なユニコード規則は、旧ハングルをソートする方法に適用することはできない。例えば、１つの旧ハングル・キャラクタは、２つの先導子音、母音、および後端子音から成る場合がある。ユニコード規格をこの例に適用すると、旧ハングル・キャラクタは、以下のJamoコード、(U+1100), (U+1103), (U+1161), (U+11A8)で表される場合がある。図２のユニコード表を参照すると、Jamoコードのこの組み合わせは適正にソートすることができない。何故なら、既存のシステムは、２つの先導子音を有する組み合わせに対応しないからである。別の例では、旧ハングル・キャラクタは、コード、(U+1113), (U+1161)および(U+11A8)で表されるJamoキャラクタから成る場合がある。この先導子音コード(U+1113)は、現ハングルの先導子音に割り当てられた範囲、(U+1100)ないし(U+1112)の外にあるので、このJamoキャラクタ・コードの組み合わせはユニコード・システムにしたがって適正にソートすることはできない。
【００３８】
別の状況では、ユニコード・システムを利用するコンピュータ・プログラムは、Jamoキャラクタの分析に基づいて、旧ハングルを現ハングルから容易に区別することができない。例えば、(U+1100), (U+1103)に対するコードの組み合わせは旧ハングルでは有効なJamoの組み合わせであるが、(U+1100), (U+1101)のコードの組み合わせは、旧ハングルでは有効なJamoの組み合わせではない。このJamoキャラクタのシーケンスにおける不一致のために、旧ハングル・キャラクタおよび現ハングル・キャラクタは、対応するJamoキャラクタの簡略化した分析によって、容易にソートすることはできない。この不一致の一例、および解決策の一例について、図８のデータ表を参照しながら以下で更に詳しく説明する。
【００３９】
旧ハングルおよび現ハングル間のストリング比較を容易にするために、本発明の一態様は、種々のJamoキャラクタおよびJamoキャラクタの組み合わせに対して重み付けスキーマを設ける。更に具体的には、先導子音、母音、および後端子音の組み合わせにJamo特殊重みを割り当てることが、本発明の一態様である。現ハングルおよび旧ハングル双方を構成するJamoキャラクタ・セットに、Jamo特殊重みを割り当てることによって、計算機は旧ハングルおよび現ハングルを区別しソートすることが可能となる。
【００４０】
ここで図４ないし図６を参照すると、重み付けスキーマの一実施形態が示されている。概略的に説明すると、図４ないし図６に示す各キャラクタ・マップを表す部分は、順序付けした１組のJamoキャラクタおよびJamoキャラクタの組み合わせに特殊重みを割り当てる一方法を示す。図４に示すように、有効な全ての先導子音Jamoの組み合わせに対するJamo特殊重みを示すデータ表を表す部分が示されている。図４の重み付けスキーマ表の組立において、各先導子音、およびJamo先導子音の組み合わせは、韓国語の文法規則にしたがって昇順にソートされている。一旦各先導子音を適正に配列したなら、各先導子音に一意のコードを割り当てることができる。例えば、図４の表の最初の列に示すように、(U+1100)で表されるJamoキャラクタには、(0X03)というJamo特殊重み値が割り当てられている。残りのJamo複合体にも、昇順で特殊重み値が割り当てられている。また、図４に示すように、重み付けスキーマ表の構造は、スクリプト・メンバーのような、別の標準ユニコード重み値の統合も含むことができる。
【００４１】
図５および図６は、それぞれ、Jamo母音および後端子音の有効な組み合わせに対する２つの重み付けスキーマ表を示す。Jamo母音および後端子音に対するJamo特殊重みを示す各データ・テーブルは、図４に示す重み表の構造と同様に構成されている。更に具体的には、図５の重み表を表す部分では、Jamo母音、およびJamo母音の組み合わせは、韓国語の文法規則にしたがってソートされている。各テーブルの順序付けにおいて、Jamo特殊重み値の順序は、昇順で編成すべきであり、各Jamo特殊重み値は有効なJamoに対応する。図５に示すように、各Jamo母音には、一意のJamo特殊重みが割り当てられている。最初のJamo母音には、(0x03)のJamo特殊重みが割り当てられており、２番目のJamo母音には(0x04)の重みが割り当てられている等となっている。同様に、最初の後端子音には(0x03)のJamo特殊重みが割り当てられており、２番目の後端子音には(0x04)の重みが割り当てられている等となっている。また、図５および図６に示すように、これらの重み付けスキーマ表の構造は、スクリプト・メンバーのような、別の標準ユニコード重み付け値の統合を含むことも可能である。
【００４２】
Jamo特殊重み表の前述の実施形態から、ソートした旧および現ハングル・キャラクタの組み合わせを有するデータ表を適正に発生することが可能となる。ここで図７を参照すると、旧ハングル・キャラクタおよび現ハングル・キャラクタを有するデータ表の一部分の代表例が示されている。一実施形態では、図７の表を発生するには、図４ないし図６の先導子音表、母音表、および後端子音表にしたがって配列した、Jamoキャラクタの可能な組み合わせの全てをソートする。例えば、旧ハングルおよび現ハングル表の階層を順序付けるには、最初に図４に示すような先導子音特殊重み表にしたがって、先導子音で各Jamoキャラクタ・グループをソートする。次いで、同じ先導子音を有する各キャラクタ・グループを、図５に示すような母音特殊重み表にしたがってソートする。これにしたがって、図６に示すような後端子音特殊重み表にしたがって、後端子音の順で、同じ母音を有する各キャラクタ・グループをソートする。
【００４３】
特殊重み表にしたがって各Jamoの組み合わせをソートすることによって、現ハングルおよび旧ハングルを表すJamoコードの組み合わせを適正にソートすることができる。図７の行４を参照すると、コード(U+1100), (U+1161), (U+11A8)および(U+11AB)を有するJamoキャラクタによって表される最初の旧ハングル・キャラクタは、ハングル・コード(U+AC02)で表される現ハングル・キャラクタの後で、ハングル・コード(U+AC03)で表される現ハングル・キャラクタの前に、適正に順序付けられている。この最初の旧ハングル・キャラクタがハングル・コード(U+AC02)の後に位置付けられるのは、旧ハングル・キャラクタの対応する後端子音、(U+11A8)および(U+11AB)が、ハングル・コード(U+AC02)によって表される現ハングル・キャラクタに対する後端子音(U+11A9)の後に順序付けられているからである。
【００４４】
残りの旧ハングル・キャラクタの各々も、図４ないし図６の重み付け表にしたがって、図７の表にソートされ、マップされる。例えば、図７の表の行５に示すように、コード(U+1100), (U+1161), (U+11C3)を有するJamoキャラクタによって表される２番目の旧ハングル・キャラクタは、最初の旧ハングル・キャラクタの後に適正に順序付けられている。２番目の旧ハングル・キャラクタは、図６に示す後端子音の特殊重み表の順序のために、最初の旧ハングル・キャラクタの後に置かれている。有効なJamoの組み合わせ全てによって表される残りの旧ハングル・キャラクタおよび現ハングル・キャラクタは、前述の順序付け方法の使用によって同様にソートされている。例えば、図７に示すソート後のキャラクタ例には、各現ハングル・キャラクタに対するハングル・ユニコード、対応するスクリプト・メンバー（ＳＭ）、およびユニコード規格に組み込まれている各組み合わせに対する対応の英数字重み（ＡＷ）も含まれている。この例ではこれら具体的な重みを例示するが、他のいずれのコードまたは重み値でも、このような表に追加することができ、それも本発明の範囲逸脱にはならないことは、当業者には認められよう。例えば、例示の目的で、「Ｏ」が、旧ハングル・キャラクタを表すコードを有する表の行にリストされている。これに応じて、現ハングル・キャラクタを表すコードを有する表の行には、「Ｍ」がリストされている。
【００４５】
ソートした旧および現ハングル・キャラクタのキャラクタ表を構成した後、割り当てられたされたユニコード値を有さないハングル・キャラクタに、特殊コードを関連付ける。更に具体的には、この韓国語に関与する代表例では、旧ハングル・キャラクタを表す各Jamoの組み合わせに重み値を関連付ける。本発明の一実施形態では、各旧ハングル・キャラクタに関連するスクリプト・メンバー（ＳＭ）および英数字重み（ＡＷ）値は、直前の現ハングル・キャラクタの（ＳＭ）および（ＡＷ）値に等しい。例えば、図８の変更ユニコード表を参照すると、２番目の現ハングル・キャラクタ（行３）の(SM=0x80)および(AW=0x05)は、最初の旧ハングル・キャラクタ（行４）に関連付けられている。当業者には認められようが、（ＳＭ）および（ＡＷ）値の旧ハングル・キャラクタに対する関連付けによって、一般公知のソーティング・アルゴリズムで、旧ハングル・キャラクタおよび現ハングル・キャラクタを適正にソートすることを可能にするコード・マップを作成する。例えば、（ＳＭ）および（ＡＷ）値の分析によって、最初の旧ハングル・キャラクタ（行４）は、３番目の現ハングル（行３）の後で、４番目の現ハングル（行７）の前に適正にソートされることになる。
【００４６】
また、図８の例に示すように、２番目の現ハングル・キャラクタ（行３）の（ＳＭ）および（ＡＷ）値も、２番目および３番目のハングル・キャラクタ（行５および６）に関連付けられている。したがって、２番目および３番目の旧ハングル・キャラクタ（行５および６）は、(SM=0x80)および(AW=0x05)の重み値に関連付けられている。残りの旧ハングル・キャラクタの（ＳＭ）および（ＡＷ）重み値も、同様に他の重み値に関連付けられている。例えば、４番目の旧ハングル・キャラクタ（行８）の（ＳＭ）および（ＡＷ）重み値は、４番目の現ハングル・キャラクタ（行７）と同じ（ＳＭ）および（ＡＷ）重み値に関連付けられている。したがって、４番目の旧ハングル・キャラクタ（行８）は、(SM=0x80)および(AW=0x06)の重み値に関連付けられている。
【００４７】
一旦各旧ハングル・キャラクタを特定のスクリプト・メンバー（ＳＭ）および英数字重み（ＡＷ）に関連付けたなら、他の重み値を、旧ハングル・キャラクタに割り当てられた（ＳＭ）および（ＡＷ）に加算する。更に具体的には、本発明のマッピング方法の一実施形態では、Jamo特殊重みは、旧ハングル・キャラクタの各々に関連付けられている。概略的に述べると、このJamo特殊重みの各旧ハングル・キャラクタに対する関連付けによって、コンピュータ実装アルゴリズムが旧ハングル・キャラクタを容易に区別しソートすることを可能にするコード階層を得る。
【００４８】
一実施形態では、Jamo特殊重み（図４ないし図６の）を、各旧ハングルの（ＳＭ）および（ＡＷ）に添付する。更に具体的には、対応する先導子音（複数の先導子音）、母音（複数の母音）、および後端子音（複数の子音）のJamo特殊重みは、各旧ハングル・キャラクタの（ＳＭ）および（ＡＷ）重み値に関連付けられている。例えば、最初の旧ハングル・キャラクタ（図８の行４）は、[0x03], [0x03]および[0x05]のJamo特殊重みに割り当てられている。図４ないし図６のJamo特殊重みを参照すると、これらの特殊重みは、対応する先導子音(U+1100), [0x03], 母音(U+1161), [0x03], および対応する後端子音(U+11A8, U+11AB), [0x05]に対するJamo特殊重みからのものである。また、図８の変更ユニコード表に示すように、値[0xFF]のように、他の任意のコードを別のフィールドにフィラ(filler)として割り当てることができる。値[0xFF]は、各旧ハングル・キャラクタのスクリプト・メンバーからのフィラ値として機能する。他の[0x01]コードは、Jamo特殊重みにどのようにして添付することができるかを示す例示の目的で提示した。
【００４９】
前述のマッピング方法の使用によって、コンピュータ実装アルゴリズムは、旧ハングル・キャラクタおよび現ハングル・キャラクタを容易に区別しソートすることが可能となる。加えて、前述のマッピング方法は、既存のユニコード・システムと互換性のある変更コード構造を提供する。
【００５０】
キャラクタをソートしマップする方法の摘要を説明したので、キャラクタをマップしソートするコンピュータ実装方法の説明を行う。以下に説明するように、韓国語に関与する例では、本発明の一方法は、一意の数値重み付けスキーマの使用によって、旧ハングルを現ハングルにマップする。次いで、マッピング方法の結果を、旧ハングル・キャラクタおよび現ハングル・キャラクタのストリングを比較する方法に適用する。
【００５１】
ここで、図２ないし図８のデータ表と関連付けて図９および図１０を参照すると、現ハングル・キャラクタで旧ハングル・キャラクタをソートするコンピュータ実装ルーチンの一例が示されており、以下に説明する。更に具体的には、図９は、本発明による数値重みマッピング・プロセス１００のフロー図を示す。数値重みマッピング・プロセス１００のサブルーチンとして、図１０は、本発明によるJamo有効性判断サブルーチン２００のフロー図を示す。
【００５２】
この数値重みマッピング・プロセスの代表例では、韓国語Jamoおよびハングル・キャラクタのストリングを分析し、重みアレイを生成する。この実施形態では、重みアレイは、図８の表の行４〜６に示したJamo特殊コードを有する重みアレイと同様とするとよい。一旦発生したなら、重みアレイは、他のソーティング・プロセスがキャラクタのストリングを比較するために利用することができる。
【００５３】
図９に示すように、数値重みマッピング・プロセス１００は、ブロック１０２にて開始し、ここで重みアレイを初期化し、分析対象ストリングの最初のキャラクタにポインタをセットする。一実施形態では、重みアレイは、図８に示す表の行４に示すデータ・フィールドのように、多数の１６進コードを格納可能な、コンピュータ・メモリ・デバイス内の多数のデータ・フィールドとすればよい。
【００５４】
次に、判断ブロック１０４において、検査を行い、ストリングの終端に達したか否か判定を行う。当業者には認められようが、ストリングの終端を判定する一般公知の方法は数多くあり、したがって、本プロセスのこの部分についてはこれ以上論じない。判断ブロック１０６において、ストリングの終端に達したなら、プロセス１００はブロック１０６に進み、重みアレイを圧縮する。本プロセスのこの部分では、重みアレイを圧縮するには、公知の圧縮技法のいずれによっても可能である。一旦重みアレイを圧縮したなら、プロセス１００は終了する。以下で更に詳細に説明するが、プロセス１００の終了後、重みアレイをソーティング・ルーチンで利用することができる。
【００５５】
しかしながら、判断ブロック１１０において、ストリングの終端に未だ達していない場合、ストリング内の次のキャラクタを得る。本プロセスのこの部分は、ポインタのメモリ・ロケーションにおいて、アスキーまたはユニコード・キャラクタ値のような、キャラクタ値を読み取ることによって行うことができる。一旦キャラクタ値を読み取ったなら、ポインタをストリング内の次の文字に進ませ、マッピング・プロセス１００はブロック１１２に移る。
【００５６】
ブロック１１２において、このキャラクタに対する数値重みを得る。本発明の実際の実施形態では、オペレーティング・システムがユニコード・キャラクタ参照表を利用して、このキャラクタに対するユニコード１６ビット数値コードを返す。当業者には認められようが、数値重みまたはコードは、一般公知の多数のコード検索方法によって得ることができる。一旦このキャラクタに対する数値重みが得られたなら、マッピング・プロセス１００は判断ブロック１１４に移る。
【００５７】
判断ブロック１１４において、検査を実行して、このキャラクタがハングルJamoであるか否か判定を行う。本発明の実際の実施形態では、分析を行って、このキャラクタに対する数値重みがJamoキャラクタに対するコード範囲内にあるか否か判定すればよい。ブロック１１４のプロセスの一例では、計算機は、このキャラクタのコードが、全ての先導子音(U+1100)ないし(U+1159)、母音(U+1161)ないし(U+11A2)または全ての後端子音(U+11A8)ないし(U+11F9)の範囲に該当するか否か判定することができる。
【００５８】
キャラクタがハングルのJamoではない場合、プロセス１００はブロック１０４に戻り、再度検査を行って、ストリングの終端に達したか否か判定を行う。しかしながら、判断ブロック１１４において、キャラクタがハングルのJamoキャラクタである場合、プロセスはブロック１１６に進み、現および旧ハングル重み値に対する１組の変数をリセットする。加えて、ブロック１１６のプロセスは、有効旧Jamoストリング・フラグをリセットするステップを含む。前述のように、Jamoキャラクタ・ストリング全てが有効という訳ではない場合もある。したがって、本発明の一実施形態はブロック１１８に進み、Jamoキャラクタが有効な旧ハングル・キャラクタを表すか否か判定を行う。
【００５９】
ブロック１１８において、プロセス１００はJamo有効性判断サブルーチンを開始し、処理したJamoキャラクタが有効か否か検証する。ここで図１０を参照すると、Jamo有効性判断サブルーチン１１８のフロー図が示されている。有効性判断サブルーチン１１８は、ブロック２０２にて開始し、ここでストリングからキャラクタを得る。ブロック１０２を参照して先に述べたように、ストリングから得るべきキャラクタをマークするために、ポインタを用いるとよい。
【００６０】
一旦ブロック２０２のプロセスにおいてキャラクタを得たなら、判断ブロック２０４において検査を行い、ポインタが旧ハングルの終端にあるか否か判定を行う。一実施形態では、サブルーチン１１８は、キャラクタが先導子音であり、直前に得たキャラクタが後端子音である場合、旧ハングルの終端にポインタがあると判定することができる。この例は、ブロック２０４のプロセスの一実施形態を例示するために利用するが、関係する文法規則に従うのであれば、いずれの検査でもこのプロセスで行うことができる。したがって、ポインタが旧ハングルの終端にある場合、サブルーチン１１８は終了し、数値重みマッピング・プロセス１００に戻る。同時に、完全な旧ハングルJamoシーケンスが得られた場合、有効性判断フラグを真にセットし、Jamoセットに対する現重みインデックスおよび重みをプロセス１００に戻す。それ以外の場合、有効性判断フラグを偽にセットし、プロセス１００に戻って、完全な旧ハングルJamoシーケンスは得られなかったことを示す。
【００６１】
しかしながら、判断ブロック２０４において、ポインタが旧ハングルの終端にない場合、サブルーチン１１８は判断ブロック２０８に進み、検査を行って、このキャラクタが、先導子音、母音、または後端子音グループ内の有効な遷移キャラクタ(transition character)であるか否か判定を行う。前述のように、Jamoキャラクタは、先導子音、母音、または後端子音によって特徴付けることができる。したがって、一実施形態では、判断ブロック２０８のプロセスは、前述のJamoキャラクタのユニコード範囲、および図４、図５、および図６のような表を利用して、キャラクタが有効な遷移キャラクタであるか否か判定を行うことができる。本発明の実際の実施形態によれば、Jamoキャラクタは、旧ハングル・ストリングの部分の各々に対する最初のキャラクタに続いている場合、有効な遷移キャラクタである。例えば、旧ハングルにおいては、旧ハングル音節を表すには、３つまでの先導子音を利用することができる。例えば、図４から、直前のキャラクタがU+1100であり、現キャラクタがU+1105である場合、これは有効な遷移キャラクタではない。しかしながら、直前のキャラクタがU+1100であり、現キャラクタがU+1103である場合（図４の行３より）、これは有効な遷移キャラクタである。加えて、一連のJamoキャラクタが文法規則に準ずる場合、そのキャラクタは有効な遷移である。例えば、キャラクタが４番目の先導子音である場合、これは有効な遷移キャラクタではない。何故なら、旧ハングルの文法規則は、最大３つまでの先導子音キャラクタしか許していないからである。
【００６２】
判断ブロック２０８において、キャラクタが有効な遷移キャラクタである場合、サブルーチン１１８はブロック２２２に進み、旧ハングルに対する有効性判断フラグを更新する。以下で更に詳しく説明するが、ブロック２２２で更新した旧ハングル有効性判断フラグは、マッピング・プロセス１００が利用する。
【００６３】
判断ブロック２０８において、キャラクタが有効な判断キャラクタでない場合、サブルーチン１１８はブロック２１０に進み、サブルーチン１１８は、キャラクタが先導子音であるか否か判定を行う。前述のように、先導子音の存在を判定するプロセスは、ユニコードを分析し、当該ユニコードが全ての先導子音に対するコードの範囲内にあるか否か判定することによって、行うことができる。キャラクタが先導子音であるか否か判定することに加えて、ブロック２１０のプロセスは、サブルーチン１１８が既に先導子音を分析したか否か判定を行う。本プロセスのこの部分では、サブルーチン１１８は、ブロック２１２で更新したフラグを分析する。概略的に述べると、ブロック２１２のプロセスは、サブルーチンにおいて第１の先導子音を処理した後に、フラグをセットする。したがって、判断ブロック２１０のプロセスでは、キャラクタが先導子音であり、そしてサブルーチン１１８が未だ先導子音を処理していない場合、サブルーチン１１８はブロック２１２に進む。しかしながら、判断ブロック２１０において、キャラクタが先導子音ではなく、先導子音フラグがブロック２１２においてセットされているとサブルーチン１１８が判断した場合、サブルーチン１１８は判断ブロック２１４に進む。
【００６４】
判断ブロック２１４において、サブルーチン１１８は、キャラクタが母音か否か判定を行う。前述のように、母音の存在を判定するプロセスは、キャラクタのユニコードを分析し、そのユニコードが母音の範囲内にあるか否か判定することによって行うことができる。キャラクタが母音か否か判定することに加えて、ブロック２１４のプロセスは、サブルーチン１１８が既に母音を分析したか否か判定する。本プロセスのこの部分では、サブルーチン１１８は、ブロック２１６において更新したフラグを分析する。概略的に述べると、ブロック２１６のプロセスは、第１母音をサブルーチン１１８で処理した後に、フラグをセットする。したがって、判断ブロック２１４のプロセスにおいて、サブルーチン１１８は、キャラクタが母音であり、サブルーチン１１８が未だ母音を処理していない場合、ブロック２１６に進む。しかしながら、判断ブロック２１４において、サブルーチン１１８が、キャラクタが母音でなく、フラグがブロック２１６においてセットされていないと判定した場合、サブルーチン１８は判断ブロック２１８に進む。
【００６５】
判断ブロック２１８において、サブルーチン１１８は、キャラクタが後端子音であるか否か判定を行う。前述のように、後端子音の存在を判定するプロセスは、ユニコードを分析して、そのユニコードが後端子音のコード範囲内にあるか否か判定することによって、行うことができる。キャラクタが後端子音であるか否か判定することに加えて、ブロック２１８のプロセスは、サブルーチン１１８が既に後端子音を分析したか否か判定を行う。本プロセスのこの部分では、サブルーチン１１８は、ブロック２２０において更新したフラグを分析する。概略的に述べると、ブロック２２０のプロセスは、サブルーチンにおいて第１の後端子音を処理した後に、フラグをセットする。したがって、判断ブロック２１８のプロセスでは、サブルーチン１１８は、キャラクタが後端子音であり、サブルーチン１１８が未だ後端子音を処理していない場合、ブロック２２０に進む。しかしながら、判断ブロック２１８において、サブルーチン１１８が、キャラクタが後端子音ではなく、ブロック２１２において後端子音フラグがセットされていないと判定した場合、サブルーチン１１８は終了し、続いてマッピング・プロセス１００に戻る。
【００６６】
ブロック２１２、２１６または２２０のプロセスの後、サブルーチン１１８はブロック２２２に進み、フラグをセットして、有効な旧ハングルを処理していることを示す。本発明の一実施形態では、フラグのデフォルト状態は、旧ハングルが有効であることを示す。しかしながら、キャラクタの順序付けが、関係する文法規則に従っていない場合、ブロック２２２において更新したフラグを、旧ハングル・キャラクタが無効であることを示す状態に変更する。例えば、ブロック２２２のプロセスは、ストリング内に４つ以上の連続する前端子音がある場合、旧ハングルが無効であることを示す。
【００６７】
ブロック２２２において旧ハングル有効性判断フラグをセットした後、サブルーチン１１８はブロック２２４に進み、現重みを得る。概略的に述べると、サブルーチン１１８のこの部分は、処理したJamoキャラクタを分析し、処理したJamoキャラクタが表す旧ハングル・キャラクタを適正に識別する１つ以上の重み値を発生する。一実施形態では、ブロック２２４のプロセスは、処理したJamoキャラクタに最も密接に関係する現ハングルの１つ以上の重み値を得る。更に具体的には、旧ハングル・キャラクタに先立つ現ハングルの重み値を得る。これは、図７のデータ表の一例に類似したデータベースの使用によって、行うことができる。
【００６８】
ブロック２２４のプロセスの一例を、図７のデータ表に示す。サブルーチン１１８が、(U+1100), (U+1161),および(U+11A8, U+11AB)のJamoコードで表される１組のJamoキャラクタを処理する場合、ブロック２２４のプロセスは、直前の現ハングル・キャラクタの重み値を得る。これは、[0x08]および[0x05]である。前述のように、直前の現ハングル・キャラクタは、図４ないし図６に示すような、旧および現ハングル・キャラクタ双方を表すJamoキャラクタの１つ以上のソートしたリストによって判定する。
【００６９】
次に、ブロック２２６において、処理したJamoに対する重み値を得る。本発明の実際の実施形態では、ブロック２２６のプロセスは、多数のJamo特殊重みを戻す。１組のJamo特殊重みの一例を、図４ないし図６のデータ表に示す。前述の例の応用では、サブルーチンが、(U+1100), (U+1161)および(U+11A8, U+11AB)のJamoコードで表される１組のJamoキャラクタを処理する場合、ブロック２２６のプロセスは、[0x03], [0x03],および[0x05]のJamo特殊重みを得る。このステップの実施態様では、オペレーティング・システムまたはプログラムは、キャラクタの重み値を戻す種々の機能のいずれでも利用することができる。例えば、ブロック２２６のプロセスは、図４ないし図６に示すようなデータ表から、または他の同様の方法のいずれによっても、重み値を検索することができる。一旦旧ハングルJamoに対する特殊重み値を得たなら、サブルーチン１１８は次にブロック２０２に戻り、ストリング内の次のキャラクタを得る。このように、一連の旧ハングルJamoキャラクタ（９個のJamoキャラクタまで）全てを処理し終えるまで、サブルーチン１１８は繰り返しプロセスを実行する。
【００７０】
図９に戻り、サブルーチン１１８がJamoキャラクタを処理した後、判断ブロック１２０において、検査を実行して、ストリング内の一連のJamoキャラクタが有効か否か判定を行う。本発明の実際の実施形態では、このステップは、プロセス・ブロック２２２（図１０）において割り当てられた有効性判断フラグの分析によって行う。判断ブロック１２０において、旧ハングルが有効でないことを有効性判断フラグが示す場合、プロセス１００はブロック１２３に進み、Jamoの組み合わせに対する重み値を得る。一実施形態では、ブロック１２３の処理は、ブロック２２６において得た重み値のような、各JamoキャラクタのJamo特殊重み値を返す。
【００７１】
しかしながら、判断ブロック１２０において、有効旧ハングル・フラグがセットされた場合、プロセス１００はブロック１２２に進み、１つ以上の重み値を得る。本プロセスのこの部分では、プロセス・ブロック２２４および２２６において発生した重み値を得る。前述の例に適用したように、ブロック１２２のプロセスは、[0x80]および[0x50]の重み値を得る。加えて、ブロック１２２のプロセスは、[0x03], [0x03],および[0x05]のJamo特殊重みを得る。
【００７２】
重み値を得た後、プロセス１００はブロック１２４に進み、重み値を特殊重みに関連付ける。一実施形態では、Jamo特殊重みを重み値に添付して、重みアレイを演算する。前述の例に適用したように、ブロック１２４のプロセスは、[0x80], [0x05], [0x03], [0x03],および[0x05]の重みアレイを生成する。
【００７３】
ブロック１２３または１２４の処理の後、マッピング・プロセス１００は、発生した重みを、ユニコード・システムのような、標準化インデックシング・システムによる他の重み値と組み合わせる。例えば、図８の行４における最初の旧ハングル・キャラクタの例では、[0x80], [0x05], [0x03], [0x03],および[0x05]の重みアレイを、標準インデックス化システムによる重みアレイを適正にフォーマットする、１組のフィラ・コード、[0xFF]のような別のコードと組み合わせる。この例は、現ハングルのJamo特殊重みおよび重み値のみを有する重みアレイを例示するが、他のあらゆるコードを挿入したり、添付したり、および／またはこれらの重み値に関連付けることも可能である。こうして、図８の行４に示すのと同様の重みアレイを生成することができる。本発明の一実施形態では、前述のマッピング方法１００を利用して、図８のデータ表を構築することができる。更に別の実施形態では、前述のマッピング方法１００を利用して、ストリングを比較またはソートしつつ、個々の重みアレイを発生することができる。
【００７４】
前述のように、マッピング・プロセス１００は、ストリング内のキャラクタ全てを分析し終えるまで、ブロック１０２ないし１２６を繰り返し処理する。こうして、重みアレイを生成する。重みアレイは、一般公知のテキストまたはストリング・ソーティング方法の殆どにおいて利用することができる。当業者には認められようが、２つ以上のユニコード・ストリングの比較も、２つのストリングの数値重みを比較することによって行うことができる。例えば、オペレーティング・システムのある関数が２つのユニコード・テキスト・ストリングを比較する要求を得た場合、オペレーティング・システムはこれらのストリングを得て、ＳＭ、ＡＷ、およびその他のJamo特殊重み値のような、数値重み値のシーケンスとして、各ストリングを戻す。数学的関数の使用によって、オペレーティング・システムは、次に、重み値のシーケンスを比較することによって、ストリング間の相対順序を決定することができる。
【００７５】
本発明によれば、直前の現ハングル重みの利用によって、旧ハングルJamoの現ハングル・キャラクタとの比較が容易に行われる。加えて、旧ハングル・キャラクタを直前の重みに添付することによって、同じ直前の現ハングル・キャラクタを有する２つの旧ハングルJamoの比較も容易に行われる。本発明は、代表的重みの第１数値セットに対応するストリングの、代表的重みの第２数値セットに対応する第２ストリングに対するマッピングを容易に行い、ストリングの比較を可能にすることは、当業者には理解されよう。
【００７６】
以上、本発明の例示の実施形態を図示しかつ説明したが、本発明の範囲から逸脱することなく種々の変更が可能であることは認められよう。同様に、ここに記載したいずれのプロセス・ステップも、同じ結果を得るために、他のステップと相互交換可能である場合もある。加えて、先に説明した代表例は、これで全てであることも、開示した通りの形態に本発明を限定することも意図する訳ではない。例えば、ここに開示した代表例は韓国語に関与するが、本発明の方法は、非インデックス化単語またはキャラクタを有する別の言語にも適用可能であることは認めることができよう。
【図面の簡単な説明】
【図１】図１は、本発明の態様を例示するために用いる韓国語の単語の構造を示す図である。
【図２】図２は、本発明の一代表例において利用するハングル・キャラクタに割り当てるコードを示すユニコード表を表す部分である。
【図３】図３は、ユニコード規格による、重み値から成るデータ表を表す部分である。
【図４】図４は、本発明にしたがって利用するJamo特殊重み値を示すデータ表を表す部分を示す。
【図５】図５は、本発明にしたがって利用するJamo特殊重み値を示すデータ表を表す部分を示す。
【図６】図６は、本発明にしたがって利用するJamo特殊重み値を示すデータ表を表す部分を示す。
【図７】図７は、本発明による旧ハングル・キャラクタおよび現ハングル・キャラクタを表す、ソートした１組のコードを示す、変更ユニコード表を表す部分である。
【図８】図８は、本発明による旧ハングル・キャラクタおよび現ハングル・キャラクタに対する重み値を示す、変更ユニコード表を表す部分である。
【図９】図９は、本発明による数値重みマッピング・プロセスを表すフロー図を示す。
【図１０】図１０は、本発明によるJamo有効性判断サブルーチンのフロー図を示す。
【図１１】図１１は、本発明を実施可能とするのに適した、一計算システム環境の一例を示す。
【符号の説明】
１１，１２    韓国語キャラクタ
１３〜１８    Jamoキャラクタ
２０    コンピュータ
２２    処理ユニット
２４    システム・メモリ
２６    システム・バス
２８    リード・オンリ・メモリ（ＲＯＭ）
３０    ランダム・アクセス・メモリ（ＲＡＭ）
３２    基本入出力システム
３４    非リムーバブル不揮発性磁気媒体
３６    ハード・ディスク・ドライブ
３８    磁気ディスク・ドライブ
４０    リムーバブル不揮発性磁気ディスク
４２    光ディスク・ドライブ
４４    リムーバブル不揮発性光ディスク
４６    オペレーティング・システム
４８    アプリケーション・プログラム
５０    プログラム・モジュール
５２    プログラム・データ
５４    ハード・ディスク・ドライブ・インターフェース
５６    磁気ディスク・ドライブ・インターフェース
６０    光ディスク・ドライブ・インターフェース
６０    キーボード
６２    ポインティング・デバイス
６４    ユーザ入力インターフェース
６５    リモート・コンピュータ
６６    ローカル・エリア・ネットワーク（ＬＡＮ）
６７    ワイド・エリア・ネットワーク（ＷＡＮ）
６８    ネットワーク・インターフェース
【図１】
0004213378.tif 000002
【図２】
0004213378.tif 000003
【図３】
0004213378.tif 000004
【図４】
0004213378.tif 000005
【図５】
0004213378.tif 000006
【図６】
0004213378.tif 000007
【図７】
0004213378.tif 000008
【図８】
0004213378.tif 000009
【図９】
0004213378.tif 000010
【図１０】
0004213378.tif 000011
【図１１】
0004213378.tif 000012