(57)【要約】【課題】ソートされた言語データにふさわしい並べ替えサポートを自動的に確立する並べ替え作成プロセスを提供すること。【解決手段】ソートされた言語データが調べられて、既存の並べ替えサポートに一致するかどうかを決定する。一致しない場合は、ソートされた言語データにふさわしい新しい並べ替えサポートが作成される。ソートされた言語データの提供者は、ソートされた言語データに関する質問に答えることにより、並べ替え作成プロセスに参加することができる。提供者の入力は、並べ替え作成プロセスがソートされた言語データに適用される前に、ソートされた言語データに組み込まれる。ソートされた言語データの提供者と並べ替え作成プロセスとの対話を可能にするユーザ・インターフェースが提供される。ユーザ・インターフェースは、ソートされた言語データ中の文字列間の相違点を識別する視覚的手がかりを提供する。【選択図】図１
2006134332.tif 000002
【特許請求の範囲】
【請求項１】
ソートされた言語データにふさわしい並べ替えサポートを自動的に確立するコンピュータ実装方法であって、
（ａ）既存の並べ替えサポート方式を探して、前記ソートされた言語データに適合する並べ替えサポートを見つけること、および
（ｂ）前記ソートされた言語データにふさわしい既存の並べ替えサポートが見つからない場合、前記ソートされた言語データを分析して新しい並べ替えサポートを作成すること
を備えることを特徴とするコンピュータ実装方法。
【請求項２】
前記ソートされた言語データを分析して新しい並べ替えサポートを作成することは、
前記ソートされた言語データに含まれる各文字列中の各文字（「対象文字」）を、各文字列の最初の文字から分析すること
を含むことを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項３】
各文字列の各文字を分析することは、
各文字列の対象文字の第１位の重みに基づいて文字列をグループ分けすることにより、第１位の重み付け構造を識別すること、
各文字列の対象文字の第２位の重みに基づいて文字列をさらにグループ分けすることにより、第２位の重み付け構造を識別すること、
各文字列の対象文字の第３位の重みに基づいて文字列をさらにグループ分けすることにより、第３位の重み付け構造を識別すること
を含むことを特徴とする請求項２に記載のコンピュータ実装方法。
【請求項４】
特殊文字の振る舞いを分析することをさらに備えることを特徴とする請求項２に記載のコンピュータ実装方法。
【請求項５】
特殊文字は、発音区別符号（diacritics）、結合記号（combining marks）、およびスクリプトを含むことを特徴とする請求項４に記載のコンピュータ実装方法。
【請求項６】
前記（ａ）および（ｂ）の処理を実行する前に、前記ソートされた言語データを前処理することをさらに備えることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項７】
前記ソートされた言語データを前処理することは、前記ソートされた言語データの有効性を確認して、前記ソートされた言語データに基づいて訂正された並べ替えサポートが生成されることを確実にすることを含むことを特徴とする請求項６に記載のコンピュータ実装方法。
【請求項８】
前記ソートされた言語データの有効性を確認して、前記ソートされた言語データに基づいて訂正された並べ替えサポートが生成されることを確実にすることは、
前記ソートされた言語データの少なくとも１つの問題を明らかにすること、
前記ソートされた言語データに対する訂正を要求すること、および
前記訂正を受け取ると、前記ソートされた言語データに前記訂正を適用すること
を含むことを特徴とする請求項７に記載のコンピュータ実装方法。
【請求項９】
前記ソートされた言語データを前処理することは、前記ソートされた言語データを正規化することを含むことを特徴とする請求項６に記載のコンピュータ実装方法。
【請求項１０】
前記並べ替えサポートを使用して前記ソートされた言語データを並べ替えること、
前記並べ替えられた言語データを検証すること、および
前記検証の結果、前記並べ替えられた言語データに変更がある場合は、前記並べ替えられた言語データに前記（ａ）および（ｂ）の処理を繰り返すこと
をさらに備えることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項１１】
前記並べ替えられた言語データを検証することは、前記並べ替えられた言語データの順序付けが正しいかどうかを決定することを含むことを特徴とする請求項１０に記載のコンピュータ実装方法。
【請求項１２】
前記並べ替えサポートをテストすることをさらに備えることを特徴とする請求項１に記載のコンピュータ実装方法。
【請求項１３】
前記並べ替えサポートをテストすることは、
テスト・データを受け取ること、および
前記並べ替えサポートを使用して前記テスト・データを並べ替えること
を含むことを特徴とする請求項１２に記載のコンピュータ実装方法。
【請求項１４】
前記並べ替えられたテスト・データへの訂正を受け取ると、前記並べ替えられたテスト・データに訂正を適用すること、
前記訂正されたテスト・データを前記ソートされた言語データに挿入すること、および
前記（ａ）および（ｂ）の処理を繰り返すこと
をさらに備えることを特徴とする請求項１３に記載のコンピュータ実装方法。
【請求項１５】
ソートされた言語データにふさわしい並べ替えサポートを自動的に確立するコンピューティング・システムであって、
（ａ）既存の並べ替えサポート方式を探して、前記ソートされた言語データに適合する並べ替えサポートを探し、
（ｂ）前記ソートされ言語データにふさわしい既存の並べ替えサポートが見つからない場合は、前記ソートされた言語データを分析して新しい並べ替えサポートを作成する
ようにプログラムされたデータ・プロセッサを備えることを特徴とするコンピューティング・システム。
【請求項１６】
前記ソートされた言語データを分析して新しい並べ替えサポートを作成することは、
前記ソートされた言語データに含まれる各文字列の各文字（「対象文字」）を、各文字列の最初の文字から分析すること
を含むことを特徴とする請求項１５に記載のコンピューティング・システム。
【請求項１７】
各文字列の各文字を分析することは、
各文字列の対象文字の第１位の重みに基づいて文字列をグループ分けすることにより、第１位の重み付け構造を識別すること、
各文字列の対象文字の第２位の重みに基づいて文字列をさらにグループ分けすることにより、第２位の重み付け構造を識別すること、
各文字列の対象文字の第３位の重みに基づいて文字列をさらにグループ分けすることにより、第３位の重み付け構造を識別すること
を含むことを特徴とする請求項１６に記載のコンピューティング・システム。
【請求項１８】
前記プログラムされたデータ・プロセッサは、特殊文字の振る舞いも分析することを特徴とする請求項１６に記載のコンピューティング・システム。
【請求項１９】
特殊文字は、発音区別符号、結合記号、およびスクリプトを含むことを特徴とする請求項１８に記載のコンピューティング・システム。
【請求項２０】
ソートされた言語データにふさわしい並べ替えサポートを自動的に確立するコンピュータ実行可能命令を含むコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、実行されると、
（ａ）既存の並べ替えサポート方式を探して、前記ソートされた言語データに適合する並べ替えサポートを探し、
（ｂ）前記ソートされた言語データにふさわしい既存の並べ替えサポートが見つからない場合は、前記ソートされた言語データを分析して新しい並べ替えサポートを作成する
ことを特徴とするコンピュータ可読媒体。
【請求項２１】
前記ソートされた言語データを分析して新しい並べ替えサポートを作成することは、
前記ソートされた言語データに含まれる各文字列の各文字（「対象文字」を、各文字列の最初の文字から分析すること
を含むことを特徴とする請求項２０に記載のコンピュータ可読媒体。
【請求項２２】
各文字列の各文字を分析することは、
各文字列の対象文字の第１位の重みに基づいて文字列をグループ分けすることにより、第１位の重み付け構造を識別すること、
各文字列の対象文字の第２位の重みに基づいて文字列をさらにグループ分けすることにより、第２位の重み付け構造を識別すること、および
各文字列の対象文字の第３位の重みに基づいて文字列をさらにグループ分けすることにより、第３位の重み付け構造を識別すること
を含むことを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２３】
前記コンピュータ実行可能命令は、実行されると、特殊文字の振る舞いも分析することを特徴とする請求項２１に記載のコンピュータ可読媒体。
【請求項２４】
特殊文字は、発音区別符号（diacritics）、結合記号（combining marks）、およびスクリプトを含むことを特徴とする請求項２３に記載のコンピュータ可読媒体。
【請求項２５】
ソートされた言語データにふさわしい並べ替えサポートを自動的に確立するコンピューティング・システムであって、
（ａ）入力装置、
（ｂ）ユーザ・インターフェースを含むディスプレイ、および
（ｃ）（ｉ）前記入力装置からソートされた言語データを受け取り、
（ｉｉ）前記ソートされた言語データにふさわしい並べ替えサポートを確立し、
（ｉｉｉ）前記ソートされた言語データを前記ユーザ・インターフェースに表示する
前記入力装置および前記ディスプレイに結合されたプロセッサ
を備えることを特徴とするコンピューティング・システム。
【請求項２６】
前記プロセッサは、また
前記ソートされた言語データに関する質問を前記ユーザ・インターフェースに送り、
前記質問に応答して前記ソートされた言語データへの変更を前記入力装置から受け取ると、前記ソートされた言語データに変更を適用する
ことを特徴とする請求項２５に記載のコンピューティング・システム。
【請求項２７】
前記ユーザ・インターフェースへの前記ソートされた言語データの表示は、前記ソートされた言語データ中の比較される２つの文字列の相違点を視覚的に示すことを含むことを特徴とする請求項２５に記載のコンピューティング・システム。
【請求項２８】
前記相違点は、前記ソートされた言語データの文字列の分岐点を含むことを特徴とする請求項２７に記載のコンピューティング・システム。
【請求項２９】
前記相違点は、前記分岐点における重みの差のタイプを含むことを特徴とする請求項２８に記載のコンピューティング・システム。
【請求項３０】
前記ソートされた言語データにふさわしい並べ替えサポートを確立することは、
（ａ）既存の並べ替えサポート方式を探して、前記ソートされた言語データに適合する並べ替えサポートを見つけること、および
（ｂ）前記ソートされた言語データにふさわしい既存の並べ替えサポートが見つからない場合は、前記ソートされた言語データを分析して新しい並べ替えサポートを作成すること
を含むことを特徴とする請求項２５に記載のコンピューティング・システム。
【請求項３１】
前記プロセッサはまた、順序付けに一貫性（consistency）があり、包含範囲で完全であるように、前記ソートされた言語データを前処理することを特徴とする請求項３０に記載のコンピューティング・システム。
【請求項３２】
前記ソートされた言語データを分析して新しい並べ替えサポートを作成することは、前記ソートされた言語データに含まれる各文字列の各文字（「対象文字」）を、各文字列の最初の文字列から分析することを含むことを特徴とする請求項３０に記載のコンピューティング・システム。
【請求項３３】
各文字列の各文字を分析することは、
各文字列の対象文字の第１位の重みに基づいて文字列をグループ分けすることにより、第１位の重み付け構造を識別すること、
各文字列の対象文字の第２位の重みに基づいて文字列をさらにグループ分けすることにより、第２位の重み付け構造を識別すること、および
各文字列の対象文字の第３位の重みに基づいて文字列をさらにグループ分けすることにより、第３位の重み付け構造を識別すること
を含むことを特徴とする請求項３２に記載のコンピューティング・システム。
【請求項３４】
前記プロセッサは、特殊文字の振る舞いも分析することを特徴とする請求項３２に記載のコンピューティング・システム。
【請求項３５】
特殊文字は、発音区別符号（diacritics）、結合記号（combining marks）、およびスクリプトを含むことを特徴とする請求項３４に記載のコンピューティング・システム。
【請求項３６】
前記プロセッサは、前記ソートされた言語データにふさわしい並べ替えサポートを確立した後に、検証の要求を前記ユーザ・インターフェースに送ることを特徴とする請求項２５に記載のコンピューティング・システム。
【請求項３７】
前記プロセッサはまた、
前記検証要求に応答して前記入力装置から変更を受け取ると、前記ソートされた言語データに前記変更を適用し、
前記変更を適用した後に、前記ソートされた言語データにふさわしい並べ替えサポートを再度確立する
ことを特徴とする請求項３６に記載のコンピューティング・システム。
【請求項３８】
前記プロセッサはまた、前記ソートされた言語データにふさわしい並べ替えサポートを確立した後に、前記並べ替えサポートをテストすることを特徴とする請求項２５に記載のコンピューティング・システム。
【請求項３９】
前記並べ替えサポートのテストは、
前記入力装置からテスト・データを受け取ること、および
前記並べ替えサポートを使用して前記テスト・データを並べ替えること
を含むことを特徴とする請求項３８に記載のコンピューティング・システム。
【請求項４０】
前記プロセッサはまた、
前記並べ替えられたテスト・データを前記ユーザ・インターフェースに表示し、
前記並べ替えられたテスト・データへの訂正を前記入力装置から受け取ると、前記並べ替えられたテスト・データに訂正を適用し、
前記訂正されたテスト・データを前記ソートされた言語データに挿入し、
前記ソートされた言語データにふさわしい並べ替えサポートを再度確立する
ことを特徴とする請求項３９に記載のコンピューティング・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・プログラムに関し、より詳細には、言語データを並べ替えるコンピュータ・プログラム（computer program for collating linguistic data）に関する。
【背景技術】
【０００２】
コンピュータ技術の世界的展開における最も大きな課題の１つは、世界の様々な地域で用いられる、文字で書かれた多数の言語を正しく扱うことである。言語は、人々が使用する言語記号とその文法構造について大きく異なる場合がある。その結果、各種形態のコンピュータ・データ処理についての様々なやり方（form）で、すべてでなくとも大半の言語をサポートすることが、非常に困難な作業である傾向がある。
【０００３】
コンピュータによる様々な言語（languages）をサポートすることを容易にするために、１つの言語のすべての記号を、別個の数値（distinct numeric value）、すなわちコード・ポイントと、別個の名前で一意に識別する、Ｕｎｉｃｏｄｅと称される標準化されたコード化システムが開発された。コード・ポイントは、４桁から６桁の１６進数として表される。Ｕｎｉｃｏｄｅシステムでは、例えば、英語の文字「Ａ」はコード・ポイント００４１で識別され、一方、英語の文字「ａ」はコード・ポイント００６１で識別され、英語の文字「ｂ」はコード・ポイント００６２で識別され、英語の文字「ｃ」はコード・ポイント００６３で識別される。
【０００４】
所与の言語の言語文字（linguistic characters）（または書記素：graphemes）に対する基本的な操作の１つが並べ替え（collation）であり、並べ替えは、特定の言語についての、使用者にとって文化的に適正な規則のセットに従って、文字列をソートすること（sorting strings）と定義することができる。並べ替えは、使用者が所与の言語の構造内で論理的な方式で、言語データを並べる、あるいは言語データを検索するときに常に使用される。
【０００５】
コンピュータで並べ替えをサポートするには、その言語を徹底的に理解することが必要とされる。具体的には、その言語で用いられる書記素（graphemes）と、書記素／音素（phonemes）とそれらを構成するために使用されるＵｎｉｃｏｄｅのコード・ポイントとの関係が正確に理解されなければならない。例えば、英語では、話者は、「Ｑ」の文字で始まる単語は、「Ｐ」の文字で始まるすべての単語の後、かつ、「Ｒ」の文字で始まるすべての単語のより前にソートされることを期待する。別の例として、繁体字中国語では、表意文字は多くの場合、「ｂｏｐｏｍｏｆｏ」表音体系に基づく発音に従って、また、文字の画数によっても分類される。さらに、書記素の正しい分類では、書記素の変形も考慮に入れなければならない。そのような変形の一般的な例には、記号の大文字／小文字（大文字または小文字）と記号に付加される変化記号（modifier）（発音区別符号（diacritics）、インド語派の  マトラ（matras）、母音記号）が含まれる。
【０００６】
並べ替え、すなわちソートは、使用者がただ機能してくれることを期待する最も基本的な機能の１つである。理想的には、並べ替えは透過的（transparent）であるべきである。人々は、Ｗｉｎｄｏｗｓ（登録商標）Ｅｘｐｌｏｒｅｒで列をクリックすると、その列が、自分の言語学的予想に従ってソートされることを単に期待する。そのような期待は、英語のような単純な言語については技術的観点から見て満たすことが容易である可能性があるが、さらに複数の言語についてのサポートが必要とされる場合は、そのようなサポートは、より難しい傾向がある。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
正しい並べ替えを実現する際の課題は、いくつかの要因による。例えば、人々は、通常、自分が並べ替えるために選択する情報がどのように順序付けされるべきかについて明確な考えを持っている。しかし、英語のような最も単純な言語以外の言語については、並べ替えが行われる際の規則を実際に説明できる者はほとんどいない。さらにものごとを複雑にすると、ある言語に適切な並べ替えは、多くの場合別の言語には適さない。実際、多くの並べ替え方式は互いと相反する。
【０００８】
さらに、並べ替えの技術的問題をおおむね理解している者は、その言語または言語的構造を理解していない。逆に、言語の専門家は、しばしば、従来の多重重み付けされる並べ替え形式（multi-weighted collation format）で使用されることができる形で並べ替えを提供する技術的知識を持たない。また、並べ替えの拡張性を提供する既存のプラットフォームは、入力として完全な並べ替え情報を必要とする。これには、広範囲にわたる技術的知識、内部の方法論と構造（internal methodology and structures）についての知識、および明白な並べ替えの知識が必要とされる。
【０００９】
通常、並べ替えは、専門の言語学者などの専門の並べ替え提供者によって手作業で行われる。図１に、コンピュータ１０４を操作して、文字列のセット１０６などの言語データを並べ替える言語学者１０２を示す。言語データは、少数の文字列のみからなる場合も、１つの言語に含まれる何万もの文字列と文字からなる場合もある。しかし、一人の専門の並べ替え提供者、あるいは少数からなるグループであっても、一度に限られた量だけしか行うことはできない。そのため、所与の言語についての並べ替えのサポートが容易に提供されることができるように、並べ替えプロセスを自動化する必要性が存在する。
【００１０】
また、様々な組織が、しばしば、言語学的に適切な方式でデータを並べ替える機能を必要とする。そのような組織、例えば米国の国土安全保障局（Homeland Security Agency）が、専門の並べ替え提供者とデータを共有することを望まない可能性がある。したがって、データを内密な形で並べ替えできるようにする自動化された並べ替えサポートを提供する必要性が存在する。
【００１１】
要約すると、適正な並べ替えサポートには、言語学的構造を持つ言語を広範に理解することが必要となる。言語学者などの専門の並べ替え提供者によって手作業で入力された並べ替え情報は、言語データに対する並べ替えサポートを付加する能力を制限する。その結果、どの所与の言語に対しても並べ替えのサポートが容易に拡張されることができ、また、秘匿性が望まれる場合は並べ替えが一般ユーザによって行われることができるように、並べ替えプロセスを自動化する必要がある。下記で説明する本発明は、この必要性に対処することを対象とする。
【課題を解決するための手段】
【００１２】
本発明は、ソートされた言語データについての並べ替えサポートを自動的に確立するツールを対象とする。このツールは、ソートされた言語データを分析して、その根底にある並べ替え規則を識別する。分析プロセスの際に、ツールは、ソートされた言語データを提供したユーザに、ソートされた言語データに関する反復的な質問を尋ねることができ、したがって、ソートされた言語データについて正しい並べ替えサポートに達する際にユーザと連係する。このツールはさらに、ユーザから提供されたテスト・データをソートすることにより、結果得られた並べ替えサポートをテストすることができる。
【００１３】
本発明の一態様によれば、ソートされた言語データを分析して並べ替えサポートを確立することは、既存の並べ替えサポート方式を探し、ソートされた言語データに適合する並べ替えサポート方式を見つけることを含む。ソートされた言語データに利用できる既存の並べ替えサポート方式がない場合は、ソートされた言語データを分析することにより新しい並べ替えサポートが確立される。
【００１４】
本発明の別の態様によれば、ソートされた言語データに基づいて新しい並べ替えサポートを確立するために、ソート済みの言語データに含まれる各文字列の各文字が、各文字列の最初の文字から分析されて、その根底にある重み付け構造を識別する。文字列の各文字を分析する際に、ソートされた言語データ中の文字列は、各文字列の文字についての第１位の重み、すなわちアルファベット上の重み、に基づいて、まずグループ分けされる。次いで、最初のグループ分けの結果得られた文字列が、各文字列の文字の第２位の重み、すなわち発音区別上の重み（diacritic weight）に基づいてさらにグループ分けされる。次いで、各文字列の文字の第３位の重み、すなわち大文字／小文字の重みに基づいて、文字列がさらにグループ分けされる。ソートされた言語データに基づいて新しい並べ替えサポートを確立することはさらに、発音区別符号（diacritics）、結合記号（combining marks）、スクリプトなどの特殊文字の振る舞いを分析することを含む。
【００１５】
本発明のさらに別の態様によれば、ソートされた言語データを分析して、ソート済み言語データの並べ替えサポートを確立するときに、ソートされた言語データは、前処理される。この前処理では、初めに、ソートされた言語データの有効性を確認して、＋その言語データが順序付けに矛盾がなく、包含範囲で完全であることを確実にする。好ましくは、ソートされた言語データの有効性を確認することは、ソートされた言語データ内の問題を明らかにすること、ソートされた言語データに対する訂正を要求すること、その訂正をソートされた言語データに適用すること、を含む。ソートされた言語データの前処理は、ソートされた言語データを正規化することも含むことができる。
【００１６】
本発明のさらに別の態様によれば、ソートされた言語データの並べ替えサポートを確立した後に、並べ替えサポートは、好ましくはソートされた言語データを提供したユーザによって検証されることができる。ユーザは、並べ替えサポートによって並べ替えられた、ソート済み言語データの順序付けを調整することにより並べ替えサポートを訂正することができる。ユーザから提供された変更は、ソートされた言語データに組み込まれ、そのデータが再度分析されて、ユーザによって行われた変更を反映した正しい並べ替えサポートを確立する。
【００１７】
本発明のさらなる態様によれば、ソートされた言語データの並べ替えサポートを確立した後に、並べ替えサポートをテストするためにテスト・データが提供されることができる。テスト・データ自体をソートして、ソートされたテスト・データに並べ替えサポートを適用した場合にテスト・データの順序付けが維持されるかどうかを確認することができる。このテスト・データは、ソートされていなくともよい。ソートされていないテスト・データに並べ替えサポートを適用すると、並べ替えられたテスト・データの順序付けを調べて、ユーザの予想を反映しているかどうかを検証することが好ましい。並べ替えられたテスト・データがユーザの予想を満たさない場合、テスト・データの順序付けがユーザによって訂正されることができ、調整されたテスト・データが次いでソートされた言語データに組み込まれることができ、その言語データが再度分析されて正しい並べ替えサポートを生成することができる。
【００１８】
本発明の別の態様によれば、並べ替えサポート情報は、将来の並べ替えの使用のためにバイナリ・ファイルに組み込まれることができる。ソートされた全言語データは、単語リストとして保存されることもできる。
【００１９】
本発明はさらに、ソートされた言語データを提供するユーザが、ソートされた言語データに基づいて並べ替えサポートを確立するプロセス（「並べ替えの作成」）と対話することを可能にするユーザ・インターフェースを含む。並べ替え作成プロセスは、ソートされた言語データに関する質問をユーザ・インターフェースに送る。そのような質問は、文字の振る舞いを明らかにすること、またはソートされた言語データに固有の並べ替えパターンを確定することを要求することができる。ユーザは、例えば追加データを提供する、またはソートされた言語データに変更を加えることにより、質問に答えることができる。ユーザの入力は、リアルタイムで並べ替え作成プロセスに組み込まれて、ユーザによって期待される並べ替えサポートを生成することが好ましい。ユーザは、テストされるデータを入力して、並べ替え作成プロセスで得られた並べ替えサポートがテスト・データを正確に並べ替えるかどうかを確認することもできる。
【００２０】
本発明の一態様によれば、ユーザ・インターフェースは、識別された並べ替えサポートをソート済み言語データに適用した後で、ソートされた言語データに視覚的な手がかり（visual cues）を付加することができる。この視覚的手がかりは、並べ替えられた言語データ中の比較される２つの文字列の相違点を表すことができる。例えば、視覚的手がかりは、文字列の分岐点と、分岐点における重みの差のタイプを示すことができる。文字列の分岐点は、その文字列を実際にその特定の位置にソートさせた文字列部分を識別する。
【００２１】
本発明の別の態様によれば、ユーザ・インターフェースは、ソートされた言語データに関する質問を表示することができる。質問は、ソートされた言語データを提供するユーザに、並べ替えを確定する、かつ／またはソートされた言語データの問題点を解明して正確な並べ替えサポートを生成する機会を与える。
【００２２】
本発明のさらなる態様によれば、ユーザ・インターフェースは、テスト・サーフェス（test surface）を含み、このテスト・サーフェスは、ユーザからのソート済みまたは未ソートのテスト・データを使用して、識別された並べ替えサポートをテストする。ユーザは、並べ替えられたテスト・データを調整して、正確な並べ替えサポートを提案することができる。
【００２３】
要約すると、本発明は、ソートされた言語データに基づく並べ替えサポートの自動的な生成を可能にする。本発明は、ソートされた言語データを提供するユーザが、ソートされた言語データについてのユーザの知識と、生成される並べ替えサポートの予想を最大に利用して、並べ替え作成プロセスを導く（案内する）ことも可能にする。このように、本発明は、専門の並べ替え提供者ではなく一般のユーザが言語データを並べ替えることを可能にする。
【００２４】
本発明の前述の態様およびそれに付随する利点の多くは、添付図面と連携してなされる以下の詳細な説明を参照することによってそれらがより理解されると、より容易に認識されよう。
【発明を実施するための最良の形態】
【００２５】
本発明の実施形態は、言語データについての、例えば並べ替えの作成などの並べ替えサポートを自動的に作成する、コンピュータ実装方法、コンピューティング・システム、およびコンピュータ可読媒体を提供する。言語学者などの専門の並べ替え提供者の作業を必要とする従来の並べ替えの作成と異なり、本発明は、一般ユーザが人間言語についての並べ替え言語を作成することを可能にする。
【００２６】
例えば、図２に、一般のユーザ２０２が、コンピュータ・システム２０８を通じて、文字列のセット１０６などの言語データをカスタム並べ替えツール２０４に提供する図を示す。コンピューティング・システム２０８は、カスタム並べ替えツール２０４を実行するプロセッサと、好ましくは、カスタム並べ替えツール２０４のためのユーザ・インターフェースを提示するディスプレイを含む。カスタム並べ替えツール（以後「ＴＯＯＬ」と呼ぶ）２０４は、一般ユーザ２０２（以後「ＣＵ」と呼ぶ）から単語または文字列のソート済みのリスト（以後「カスタム・データ」と呼ぶ）を受け取ると、そのリストを分析して、そのカスタム・データの順序付けに固有の並べ替え規則を識別する。この分析プロセスは、帰納的なプロセスであり、ＴＯＯＬ２０４は、ＣＵに反復的な質問を尋ねて、カスタム・データの曖昧性あるいは不整合を明らかにする。しかし、分析を行うＴＯＯＬ２０４によって使用されるその根底にある並べ替え重み付けシステムは、ＣＵから完全に隠され、したがって、非常に複雑な並べ替え作成プロセスを、ＣＵに対しては魅力のある単純なプロセスにする。本発明の一部の実施形態では、カスタム・データを分析して並べ替えの規則を識別すると、ＴＯＯＬ２０４は、ＣＵが、識別された並べ替え規則をテストするための追加的データを入力できるようにする。最終的に、ＴＯＯＬ２０４は、対応する並べ替え情報を含んだバイナリ・ファイルおよび／または完全なカスタム・データを含んだファイルを構築することができる。
【００２７】
本発明の実施形態で、ＴＯＯＬ２０４は、並べ替えエンジンとユーザ・インターフェースの２つの主要コンポーネントを含む。並べ替えエンジンは、カスタム・データを分析して、カスタム・データの順序付けを支配する並べ替え規則を識別することにより、自動的な並べ替え作成プロセスを行う。ユーザ・インターフェースは、ＣＵからカスタム・データを受け取るために使用されることができる。ユーザ・インターフェースは、カスタム・データに関する質問を提示するために並べ替えエンジンによって使用されることもできる。ユーザ・インターフェースはさらに、並べ替えエンジンによって識別された並べ替え規則をテストするためにも使用されることができる。ユーザ・インターフェースの利点の１つは、その根底にある並べ替え作成プロセスの複雑性が、ユーザ・インターフェースの下に完全に隠されることである。ユーザ・インターフェースの別の利益は、全並べ替え作成プロセスを通じて、ＣＵがカスタム・データの問題点を解明できるように反復的な質問がユーザ・インターフェースに送られて、カスタム・データに基づいて適正な並べ替えの生成を確実にすることができることである。したがって、ユーザ・インターフェースは、カスタム・データに望まれる並べ替えサポートの共同的な作成にＣＵをリアルタイムで参加させる対話型のアプローチを可能にする。
【００２８】
以下の説明では、初めに、ＴＯＯＬ２０４のためのユーザ・インターフェースの例示的実装形態を説明する。その後に、並べ替えエンジンの機能を具体的に説明する例示的な並べ替え作成プロセスを説明する。ここに提供される具体例は、網羅的なものでも、本発明をここに開示される通りの形態に制限するものでもない。同様に、ここに記載されるステップは、同じ順序または異なる順序で、他のステップ、またはステップの組み合わせに置き換えて同じ結果を達成することもできる。
【００２９】
本発明の実施形態では、ＴＯＯＬ２０４は、ＣＵとの適切な対話を提供するユーザ・インターフェースを含む。図３〜７Ｂは、そのようなユーザ・インターフェース３００の例示的実装を提供している。ユーザ・インターフェース３００は、メイン・ウィンドウ３０２（図３）と高機能ウィンドウ４０２（図４〜６Ｃ）を含む。本発明の実装形態で、ユーザ・インターフェース３００はさらに、並べ替えエンジンで識別された並べ替え規則をテストすることを可能にするテスト・サーフェス７００（図７Ａ〜７Ｂ）を含む。
【００３０】
図３は、メイン・ウィンドウ３０２の例示的実装の１つを示している。メイン・ウィンドウ３０２は、第１の列（カラム）３０４を含み、これは、常にユーザ・インターフェース３００で見ることができ、分析される実際の文字列を一覧表にしている。第１の列（カラム）３０４は、その言語におけるＣＵの予想に従ってソートされた、実際の文字列のリストの単純な表示を提供する。例えば図３では、メイン・ウィンドウ３０２は、ソートされた文字列「ａｄａｍ」、
【００３１】
【数１】
2006134332.tif 000003
【００３２】
、「ｂｏｂ」、「ｃａｔ」、「ｄｅａｌ」、「ｅｎｏｕｇｈ」、「ｆａｒ」、「ｇｏｉｎｇ」を表示している。
【００３３】
ユーザ・インターフェース３００で、ＣＵは、「ロードする」ボタン３０３を作動させることにより、第１の列（カラム）３０４に新しい文字列を追加することができる。本発明の実施形態では、第１の列（カラム）３０４に含まれる、順番に並べられるリスト１０６にデータを入力する方式が３つある。第１に、データは、ＣＵによって選択された順序で挿入されることができる。挿入プロセスの一部として、ＣＵは、データが検証されること、すなわち、データがソートされ、その順序が、ＣＵがエミュレートしようとしているターゲット並べ替えと整合すること、を確実にする。第２に、ＣＵは、ＴＯＯＬ２０４に、有効性が確認された現在のカスタム・データが実際に示すものと整合する方式でデータを挿入させることができる。本発明の実施形態では、カスタム・データが順序付けについて整合性があり、かつ包含範囲で完全であることを保証する検証プロセスを経た後に、カスタム・データの有効性が確認される。図１０に、有効性確認プロセスの例示的実装の１つを示し、これについては下記で述べる。第３に、中国語、日本語、朝鮮語など表意文字を用いる言語の場合は、辞書が使用する標準的な索引がある。そうした索引の１つを含んだデータが、ユーザ・インターフェース３００を通じてＴＯＯＬ２０４にロードされることもできる。本発明の一部の実施形態では、ＣＵは、「行（row）を削除する」のボタン３１０を作動させることにより、第１の列（カラム）３０４から文字列を除去することもできる。
【００３４】
ユーザ・インターフェース３００はさらに、「分析する」のボタン３０５を含み、このボタンを作動させると、並べ替え作成プロセスが開始し、これは、第１の列（カラム）３０４に含まれるソート済みの文字列のリストを分析してその根底にある並べ替え規則を識別する。本発明の実施形態では、ＴＯＯＬ２０４の並べ替えエンジン・コンポーネントが分析機能を行う。図８〜１３は、並べ替えエンジンによって行われる機能の例示的実装を示し、これについては下記で詳細に述べる。
【００３５】
ユーザ・インターフェース３００は、ＣＵが、「保存する」ボタン３０６を作動させることにより、完全なカスタム・データを保存することも可能にする。本発明の実施形態では、ユーザ・インターフェース３００で、ＣＵは、並べ替え作成プロセスの結果得られた並べ替えサポート情報をバイナリ・ファイルで保存することもできる。ＣＵは、「終了する」ボタン３０８を作動させることにより、ユーザ・インターフェース３００を終了することができる。
【００３６】
本発明の実装形態で、ユーザ・インターフェース３００は、比較される２つの文字列の重要な相違の一部を表す、下線、色、網掛け（shading）などの視覚的手がかりも提供する。そのような重要な相違には、文字列の分岐点、すなわち、その文字列を実際にその特定の位置にソートさせる文字列の部分が含まれる。例えば、「Ｃａｔｈｙ」と「Ｃａｔｈｅｒｉｎｅ」を比較する場合、各文字列の分岐点は、それぞれ文字「ｙ」と「ｅ」になり、その結果、文字列「Ｃａｔｈｅｒｉｎｅ」が文字列「Ｃａｔｈｙ」より前にソートされる。本発明の一部の実装形態では、文字列の分岐点に下線が引かれる。
【００３７】
ユーザ・インターフェース３００は、分岐点における重みの差のタイプを示す視覚的手がかりも提供することができる。一般には、重みの差には、第１位、第２位、第３位、の３つのタイプがある。第１位の差は、一般には、文字間のアルファベット上の重みである。例えば、文字列「Ｃａｔｈｙ」と「Ｃａｔｈｅｒｉｎｅ」の場合の前述の例示的分岐点における違い（「ｙ」対「ｅ」）は、第１位の違いになる。第２位の違いは、一般には発音区別上の重みである。例えば、文字列「ｒｅｓｕｍｅ」と
【００３８】
【数２】
2006134332.tif 000004
【００３９】
を比較する場合、文字「ｅ」と文字
【００４０】
【数３】
2006134332.tif 000005
【００４１】
との差は、第２位の差になる。第３位の差は、一般には大文字／小文字の重みである。例えば文字列「Ｓｐａｍ」と文字列「ｓｐａｍ」を比較する場合は、大文字表記の違いは、第３位の差になる。ユーザ・インターフェース３００の例示的実装装では、文字列の分岐点が異なる色で示されて、その分岐点における重みの差のタイプを明らかにする。例えば、赤色の分岐点は第１位の差を表し、青色の分岐点は第２位の差を示し、黄色の分岐点は、第３位の差を表す。
【００４２】
ＴＯＯＬ２０４のユーザ・インターフェースの独自の特徴の１つは、ＴＯＯＬ２０４がカスタム・データを分析して並べ替え規則を識別する間に、ＣＵが並べ替えエンジンと対話できるようにすることである。本発明の例示的実装形態では、この対話は、並べ替えエンジンがユーザ・インターフェース３００を通じてＣＵに質問を提示すること、ＣＵがその質問に答えること、かつ／または質問によって明らかにされた問題を訂正すること、により実現される。図３は、並べ替えエンジンがユーザ・インターフェース３００を通じてＣＵに提示することが可能な例示的質問を含む。例えば、並べ替えエンジンは、文字列
【００４３】
【数４】
2006134332.tif 000006
【００４４】
が文字列「Ａｄａｍ」の後に位置していることを気付く。そのため、質問ウィンドウ３１２がユーザ・インターフェース３００でＣＵに与えられる。ウィンドウ３１２は、「ａｄａｍ」より後への
【００４５】
【数５】
2006134332.tif 000007
【００４６】
の配置はＣＵが意図するものであるかどうかを尋ねる。ＣＵは、ＹＥＳボタン３１４をクリックすることによりこの配置を承認するか、ＣＵは、その配置が実際には間違いであることに気づき、ＮＯボタン３１６をクリックすることができる。本発明の実施形態で、ＣＵは、文字列を正しい場所にドラッグ・アンド・ドロップすることにより、そのような誤った配置を訂正することができる。図１１に、並べ替えエンジンが提示することが可能な質問の例を提供し、これについては下記で詳細に述べる。
【００４７】
本発明の実施形態で、ユーザ・インターフェース３００のメイン・ウィンドウ３０２は、「コード・ポイントを表示する」ボタン３１８を提供し、このボタンを作動させると、メイン・ウィンドウ３０２が、Ｕｎｉｃｏｄｅのコード・ポイントとＵｎｉｃｏｄｅのプロパティなどの追加的な情報を含んだ高機能ウィンドウ４０２に変化する。図４は、高機能ウィンドウ４０２の例示的実装の１つを示す。
【００４８】
高機能ウィンドウ４０２は、複数の列（カラム）を含む。分析されるソート済みの文字列を含む第１の列（カラム）３０４を含むのに加えて、さらなる列が、より上級のユーザのために提供され、したがってそれらの列は必須ではない。追加される列は、当該の文字列を構成する実際のＵｎｉｃｏｄｅコード・ポイントなどの補足情報を供給する。例えば、図４に示すように、追加的な列（カラム）ＣＰ１．．．ＣＰ８が提供されて、文字列の各文字に対するＵｎｉｃｏｄｅコード・ポイントを表示する。
【００４９】
Ｕｎｉｃｏｄｅのコード・ポイントは、ユーザが、文字列の言語学的構造と、特定の文字が並べ替えの重みにどのように影響するかを理解することを助ける。背景技術の項で触れたように、Ｕｎｉｃｏｄｅは、１つの言語の１つ１つの記号を、別個の数値と名前で識別する。この数値はコード・ポイントと呼ばれる。高機能ウィンドウ４０２は、文字列の各記号のコード・ポイントを表示する。例えば、図４に示すように、ローマ字の小文字「ａ」はコード・ポイント００６１で識別され、ローマ字の小文字の「ｄ」はコード・ポイント００６４で識別され、ローマ字の小文字の「ｍ」はコード・ポイント００６ｄで識別される。その結果、文字列「ａｄａｍ」は、４つのコード・ポイント００６１、００６４、００６１、００６ｄで識別される。
【００５０】
また、高機能ウィンドウ４０２は、「ＵＮＩＣＯＤＥ  ＰＲＯＰＥＲＴＹ  ＩＮＦＯ」のチェック・ボックス４０４も含む。チェック・ボックス４０４が選択されると、ユーザ・インターフェース３００は、文字列の各文字についての文字プロパティについての情報を提供する。文字プロパティについてのそのような情報は、その文字列のより深い理解をもたらす。本発明の実装形態で、典型的な文字プロパティには、Ｇｅｎｅｒａｌ＿Ｃａｔｅｇｏｒｙ（一般カテゴリ）、Ｂｉｄｉ＿Ｃｌａｓｓ（双方向クラス）、Ｃａｎｏｎｉｃａｌ＿Ｃｏｍｂｉｎｉｎｇ＿Ｃｌａｓｓ（正規結合クラス）、Ｄｅｃｏｍｐｏｓｉｔｉｏｎ＿Ｔｙｐｅ（分解タイプ）、Ｄｅｃｏｍｐｏｓｉｔｉｏｎ＿Ｍａｐｐｉｎｇ（分解マッピング）、Ｎｕｍｅｒｉｃａｌ＿Ｔｙｐｅ（数値タイプ）、およびＮｕｍｅｒｉｃａｌ＿Ｖａｌｕｅ（数値）が含まれる。文字プロパティについての詳細な説明は、ｈｔｔｐ：／／ｕｎｉｃｏｄｅ．ｏｒｇ／ｐｕｂｌｉｃ／ｕｎｉｄａｔｕ／ｕｃｄ．ｈｔｍｌのＵｎｉｃｏｄｅ  Ｃｈａｒａｃｔｅｒ  Ｄａｔａｂａｓｅを参照されたい。
【００５１】
図５Ａ〜５Ｄに、高機能ウィンドウ４０２によって提供される文字プロパティのいくつかを示す。例えば、図５Ａは、ローマ字の小文字「ａ」のＧｅｎｅｒａｌ＿Ｃａｔｅｇｏｒｙ値は、「Ｌｅｔｔｅｒ，Ｌｏｗｅｒ  ｃａｓｅ（小文字の文字）」の頭字語である「Ｌｌ」であることを明らかにする。図５Ｂは、コード・ポイント００６１の文字名が、ローマ字の小文字（Latin small letter）「ａ」であることを示す。図５Ｃは、文字列
【００５２】
【数６】
2006134332.tif 000008
【００５３】
の小文字の文字「ａ」が「左から右」のＢｉｄｉ＿Ｃｌａｓｓ値と「０」のＣａｎｏｎｉｃａｌ＿Ｃｏｍｂｉｎｉｎｇ＿Ｃｌａｓｓ値を有することを示し、これは「ｓｐａｃｉｎｇ，ｓｐｌｉｔ，ｅｎｃｌｏｓｉｎｇ，ｒｅｏｒｄｒａｎｔ，ａｎｄ  Ｔｉｂｅｔａｎ  ｓｕｂｊｏｉｎｅｄ」であることを意味する。
【００５４】
さらに、図５Ｄでは、文字列
【００５５】
【数７】
2006134332.tif 000009
【００５６】
が正規化形式Ｄで表示され、これは、文字列中の組み合わせられた文字
【００５７】
【数８】
2006134332.tif 000010
【００５８】
が分解された形で表示されていることを意味する。これは、
【００５９】
【数９】
2006134332.tif 000011
【００６０】
が、それぞれローマ字の小文字「ａ」とスペースを空けないマーク「o」に相当する２つのコード・ポイント００６１および０３０ａで表されることを意味する。
【００６１】
本発明の実装形態では、ユーザ・インターフェース３００はさらに、様々な正規化形式で文字列を表示する。当業者あるいは関連する分野の者に知られるように、正規化は、テキスト・データを、等価性を比較することができる形に変換するために、テキスト・データから等価なシーケンスの代替表現を除去するプロセスである。Ｕｎｉｃｏｄｅ標準では、正規化は、特に、正規等価、かつ／または互換等価の文字列が固有の表現を持つことを確実にする処理を指す。Ｕｎｉｃｏｄｅ標準における正規化についてのさらなる情報は、ｈｔｔｐ：／／ｗｗｗ．ｕｎｉｃｏｄｅ．ｏｒｇ／ｒｅｐｏｒｔ／ｔｒ１５／のＵｎｉｃｏｄｅ  Ｎｏｒｍａｌｉｚａｔｉｏｎ  Ｆｏｒｍｓを参照されたい。一般には、４つのＵｎｉｃｏｄｅ正規化形式、すなわち正規化形式Ｃ、正規化形式Ｄ、正規化形式ＫＣ、および正規化形式ＫＤがある。ユーザ・インターフェース３００は、ＣＵに、どの正規化形式が表示されるかを決定する選択肢を与える。例えば、図６Ａに示すように、ＣＵは、すべての正規化形式で文字列を表示することを選択することができる。図６Ｂに示すように、ＣＵは、正規化形式Ｃで文字列を表示することを選択することができる。正規化形式Ｃは、Ｕｎｉｃｏｄｅ文字列を正規分解し、その後分解されたすべてのシーケンスを、可能な箇所は主要合成に置き換えた結果、得られる。図６Ｃに、文字列を正規分解した結果得られる、正規化形式Ｄで表示された文字列を示す。
【００６２】
本発明の実装形態で、ＴＯＯＬ２０４は、ＣＵに、並べ替えエンジンで識別された並べ替え規則を、並べ替えの作成に使用されるカスタム・データの一部でない適用可能データに対してテストする能力を与える。ＣＵは、このテスト機能を使用して、並べ替えエンジンが、予想される並べ替え規則を識別したかどうかを決定することができる。ＣＵは、テスト・ユーザ・インターフェース（以後「テスト・サーフェス」と呼ぶ）にテスト・データを入力して、テスト・データに並べ替え規則を適用させて、テスト・データの並べ替えが正しいかどうかを決定することができる。本発明のそのような実施形態では、したがって、ユーザ・インターフェース３００は、さらにテスト・サーフェスを含む。図７Ａは、テスト・サーフェス７００の例示的実装の１つを示す。テスト・サーフェス７００は、初めに、文字列のリストを入力するようにＣＵに要求する。例えば、図７Ａに示すように、テスト・サーフェス７００は、第１の列（カラム）３０４に、「Ｃａｔｈｙ」、「Ｒｅｓｕｍｅ」、「Ａｄａｍ」、「Ｓｐａｍ」、「Ｄｅａｌ」、「ｓｐａｍ」、
【００６３】
【数１０】
2006134332.tif 000012
【００６４】
、「Ｃａｔｈｅｒｉｎｅ」の文字列のセットを表示する。テスト・サーフェス７００は、また、ＣＵに、テスト・データが入力の前にソートされていたかどうかを指定するように要求することもできる。例えば、図７Ａに示すように、第１の列（カラム）３０４に含まれる文字列のセットは、ソートされていないと示されている。テスト・サーフェス７００に入力される前にテスト・データがソートされているか、ソートされていないかに関係なく、ＣＵは、「ソートする」ボタン７０２を作動させてテスト・データを並べ替えることにより、現在の並べ替え規則をテストすることができる。
【００６５】
本発明の実施形態で、テスト・サーフェス７００は、ＣＵから正しくソートされた文字列のリストを受け取ることができる。正しくソートされた文字列のリストをテストのために入力することにより、ＣＵは、現在の並べ替え規則を適用して、テスト文字列の現在の順序が変わらないかどうかを検証することができる。テスト・データの現在の順序が変更される場合、その変更は強調表示され、ＣＵによって解決されることができる。テスト・サーフェス７００は、ソートされていない文字列のリストもテスト・データとして受け付けることができる。そして、ＣＵが「ソートする」ボタン７０２を作動させると、ＴＯＯＬ２０４がテスト・データを並べ替えることができる。次いで、ＣＵは、テスト・データの結果的な並べ替えが正しかったかどうかを知らせることができる。正しくない場合、ＣＵは、並べ替えられたテスト・データの順序を訂正することによって問題の解決を助け、それが使用されて正しい並べ替え規則を生成することができる。
【００６６】
テスト・サーフェス７００を使用することにより、ＣＵは、並べ替えのバイナリ・ファイルを構築する前に並べ替え規則をテストすることができる。ＣＵは、並べ替えられたテスト・データを見て、問題を識別し、テスト・データのソートに訂正を行うことができる。その訂正がＴＯＯＬ２０４をトリガして、訂正に応じて並べ替え規則を調整させる。並べ替えられたテスト・データは、ＣＵによって検証されるとすぐにカスタム・データに加えられることができる。
【００６７】
例えば、図７Ｂは、図７Ａの第１の列（カラム）３０４に含まれるテスト・データのソートを示す。ＣＵが「ソートする」ボタン７０２を作動させると、現在の並べ替え規則を使用して第１の列（カラム）３０４のテスト・データが並べ替えされる。例えば、図７Ｂに示すように、テスト・データは、この時点で「Ａｄａｍ」、「Ｃａｔｈｅｒｉｎｅ」、「Ｃａｔｈｙ」、「Ｂｉｌｌ」、「Ｒｅｓｕｍｅ」、
【００６８】
【数１１】
2006134332.tif 000013
【００６９】
、「Ｓｐａｍ」、「ｓｐａｍ」の順序になっている。図７Ｂは、質問ウィンドウ７１０も含み、このウィンドウは、ＣＵに、現在の並べ替え規則を使用した結果行われたソートが正しいかどうかを確認するように要求する。その答えがＹＥＳの場合、ＣＵは「Ｙｅｓ」ボタン７１２を作動させる。それにより、現在の並べ替え規則が正確であることが確認される。答えがＮＯの場合、ＣＵは「Ｎｏ」ボタン７１４を作動させる。その場合、ＣＵは続いて、第１の列（カラム）３０４のソートを調整して正しい並べ替えを示すことができる。
【００７０】
要約すると、ユーザ・インターフェース３００は、ＣＵが、ＴＯＯＬ２０４の並べ替えエンジン・コンポーネントによって実行される並べ替え作成プロセスとリアルタイムで対話できるようにして、ＣＵに期待される並べ替えサポートの作成を保証する。ユーザ・インターフェース３００は、下記で詳細に述べる並べ替え作成プロセスの複雑性を隠すことにより、ＣＵが並べ替え作成プロセスに参加する、魅力的で簡単な方式も提供する。
【００７１】
図３〜７Ｂに示されるユーザ・インターフェース３００などのユーザ・インターフェースからカスタム・データを受け取ると、ＴＯＯＬ２０４の並べ替えエンジン・コンポーネントは、カスタム・データを分析して、そのカスタム・データの順序付けに固有の適正な並べ替え規則を識別する。分析プロセス中に、並べ替えエンジンは、例えばユーザ・インターフェース３００を通じてＣＵに反復的に問題点を質問して、カスタム・データ内の矛盾と曖昧性を明らかにする。本発明の一部の実施形態で、並べ替えエンジンは、テスト・データを受け取って、識別された並べ替え規則を検証する。図８〜１３は、ＴＯＯＬ２０４の並べ替えエンジンによって提供される機能の例示的一実装を示す。この例示的実装は、別個の予想されるカスタム・データ入力シナリオのコンテクストにおける並べ替えエンジンの振る舞いを示す。ＣＵは、様々な方式でＴＯＯＬ２０４にカスタム・データを入力することができる。例えば、ＣＵは、全言語データを１回の入力で提供することができる。あるいは、ＣＵは、ＣＵが知っている典型的な並べ替えの既知の例外のみを提供することもできる。例えば、ＣＵは、英語の並べ替えサポートの既知の例外を提供することができる。一方、ＣＵは、あるスクリプトの各文字やすべての発音区別記号（diacritic symbols）など、特定の言語学的境界についてのデータを挿入することができる。最後に、ＣＵは、ソートされたデータの異なるセットを提供することができ、その場合、データの境界は、明確な言語学的根拠は持たない。カスタム・データの入力には可能なシナリオが各種あるので、並べ替えエンジンは、提供されるカスタム・データの最初のサイズに制限を持たない。カスタム・データを分析して、その根底にある並べ替え規則を識別するプロセス中に、並べ替えエンジンは、ＣＵからさらなるカスタム・データを受け取ることができる。
【００７２】
図８は、所与のソート済み言語データ（すなわちカスタム・データ）についての並べ替えサポートを確立する並べ替え作成プロセス８００の例示的一実装を示す。プロセス８００は、ＴＯＯＬ２０４（図２）と図３〜７Ｂに示すそのユーザ・インターフェース３００を参照して説明する。基本的に、カスタム・データを受け取ると、プロセス８００は、カスタム・データを分析して、そのカスタム・データの順序付けに固有の対応する並べ替え規則を識別する。本発明の一部の実施形態では、プロセス８００は、分析後にカスタム・データを検証するようにＣＵに要求する。プロセス８００は、識別された並べ替え規則をテストするテスト・データをＣＵが入力することも可能にする。プロセス８００はさらに、識別された並べ替え規則をその後の使用のためにバイナリ・ファイルに組み込むことができる。任意で、並べ替えられた全カスタム・データを１つの単語リストとして保存することができる。
【００７３】
より詳細には、プロセス８００は初めに、カスタム・データを、ＴＯＯＬ２０４のユーザ・インターフェース３００などのユーザ・インターフェースを通じて受け取る。ブロック８０２を参照されたい。ユーザ・インターフェース３００に関して上述したように、カスタム・データを入力するには基本的に３つの異なる方式がある。最初の方式は、受け取られるカスタム・データがすでにＣＵによって検証されているものとみなす。これは、カスタム・データがソートされており、その順序付けが、ＣＵがエミュレートしようとするターゲット並べ替えと一致することを意味する。ソートされたカスタム・データの入力は、一度にすべて、または何回かに分けて、または一度に一項目ずつ行うことができる。
【００７４】
これに対し、第２の方式は、並べ替えエンジンが保持している既存の並べ替え情報に依拠する。並べ替えエンジンが現在保持しているカスタム・データの有効性を確認するまで、追加的なカスタム・データは使用されない。先に述べたように、検証は、カスタム・データが順序付けについて矛盾がなく、かつ包含範囲において完全であるかどうかを決定するために並べ替えエンジンが使用するプロセスである。このプロセスは、通常、並べ替えエンジンがカスタム・データを分析して、その根底にある並べ替え規則を識別する前に行われる。図１０は、検証プロセスの例示的な一実装を示し、これについては下記で詳細に述べる。したがって、第２の方式では、並べ替えエンジンが、すべてのカスタム・データを有効性が確認されている見なし続けることができるように、追加的なカスタム・データを挿入する際には追加的な検証が暗黙の必要条件となる。
【００７５】
第３の方式は、表意文字体系を使用する言語に固有の方式である。そのような言語は、主として中国語、日本語、朝鮮語である。この第３の方式は、カスタム・データがすでに検証されているとみなされる点で第１の方式に類似する。本発明の実装形態で、並べ替えエンジンは、発音体系、画数に基づく体系、および他の索引付け体系の多くについての基本的理解を有する。そのため、そのような索引付け体系を電子形態で実装する辞書を有するＣＵは、その辞書中の情報を直接並べ替えエンジンに渡すことができる。一般に、第３の方式では、カスタム・データに対する明示的な並べ替えサポートをすでに利用することができるので、カスタム・データがソートされているかいないかは問題にならない。そのような既存の並べ替えサポートには、繁体字中国語を並べ替えるための「Ｂｏｐｏｍｏｆｏ」システムなどの発音に基づく順序付けが含まれる。そのような既存の並べ替えサポートは、画数に基づく順序付けである場合もある。例えば、そのような順序付けの１つは、漢字の総画数に基づく。他の既存の並べ替えサポートには、中華人民共和国のＧＢ公式標準などの、政府あるいは業界のコード化標準に基づく順序付けが含まれる。他の場合には、各種の順序付けの組み合わせが用いられる。例えば、繁体字中国語のための発音に基づく「ｂｏｐｏｍｏｆｏ」順序付けを、画数順にソートされた同じ発音を有するすべての表意文字と併せて用いることができる。別の例は、日本語の読者が日本語で用いられる中国の表意文字を容易に調べることができる漢字辞書である。一般に、漢字表意文字は、部首（発音または中心となる概念を表すことができる表意文字中の要素）および画数（その文字を書くのに必要とされる画の数）によって順序付けされる。
【００７６】
発音によるソートでは所与の文字が複数の発音を有する場合があるので、ＴＯＯＬ２０４の実施形態は、所与の文字が持つことが可能な発音の数を識別する頻度数をサポートする。ある所与のときに、ＴＯＯＬ２０４は、１つのみの発音を使用可能にすることができる。ＴＯＯＬ２０４は、代替の発音を使用不可の状態にしておいて、それらが使用されないことを示すことができる。
【００７７】
上記の３つの方式のいずれでもカスタム・データを受け取ると、プロセス８００は、ルーチン８０４を実行してカスタム・データを分析し、カスタム・データの順序付けで示される並べ替え規則を識別する。図９に、ルーチン８０４の例示的な一実装を示し、これについては下記で説明する。本発明の一部の実施形態では、ルーチン８０４を実行した後、プロセス８００は、その時点で並べ替えられたカスタム・データがあらかじめＣＵによって検証されているかどうかを調べる。判定ブロック８０６を参照されたい。上記で述べたように、カスタム・データが初めにどのように入力されたかに応じて、プロセス８００によって受け取られるカスタム・データは、ＣＵによって検証されている場合もされていない場合もある。本発明の実施形態では、検証は、カスタム・データの順序付けが、ＣＵがエミュレートしようとしているターゲット並べ替えと矛盾しないかどうかを決定するためにＣＵが使用するプロセスである。カスタム・データが事前に検証されていない場合、プロセス８００は、すでに並べ替えられたカスタム・データを検証するようにＣＵに要求する。ブロック８０８を参照されたい。本発明の一部の実施形態では、プロセス８００は、ユーザ・インターフェース３００を通じて、並べ替えられたカスタム・データに矛盾がないかどうかをＣＵに尋ねることができる。この問い合わせはさらに、並べ替えが正しいかどうかを尋ねることができる。本発明の実施形態では、ＣＵが問いに対してＮＯと答えることによりその想定を否定しない限り、カスタム・データは検証されているものとみなされる。ＣＵが、カスタム・データが事前に検証されていないと返答する場合、ＣＵは、並べ替えられたカスタム・データを検証することができる。この状況では、カスタム・データを検証した際にＣＵがカスタム・データの順序付けを変更している可能性があるので、プロセス８００は、ルーチン８０４にループバックして、その時点で検証済みになっているカスタム・データを分析する。
【００７８】
判定ブロック８０６の答えがＹＥＳ、すなわちカスタム・データが検証されている場合、プロセス８００は次いでＣＵがさらにカスタム・データを入力したかどうかを調べる。判定ブロック８１０を参照されたい。答がＹＥＳの場合、プロセス８００はブロック８０２にループバックして追加的なカスタム・データを受け取り、そのデータが分析され、検証されているかどうかが確認される。判定ブロック８１０の答えがＮＯ、すなわちＣＵから追加的なカスタム・データがない場合、プロセス８００は、次いで、ＣＵが、ルーチン８０４を実行することによって識別された現在の並べ替え規則をテストしたいかどうかを確認する。判定ブロック８１２を参照されたい。答えがＹＥＳの場合、プロセス８００は、ＣＵからテスト・データを受け取ると現在の並べ替え規則をテストするルーチン８１４を実行する。図１３に、ルーチン８１４の例示的な一実装を示し、これについては下記で説明する。
【００７９】
判定ブロック８１２の答えがＮＯである、すなわちプロセス８００が現在の並べ替え規則をテストする要求を受け取らない場合、プロセス８００は次いで現在の並べ替え規則をバイナリ・ファイルとして構築することができる。その結果得られる並べ替え情報は、その後に他の言語データを並べ替えるために使用されることができる。ブロック８１６を参照されたい。本発明の一部の実施形態では、プロセス８００は、ＣＵが、好ましくは他の情報とともに、完全なカスタム・データを保存することも可能にする。例えば、プロセス８００は、可能性としてはそのデータのＵｎｉｃｏｄｅコード・ポイントとともにカスタム・データを保存することができる。
【００８０】
図９に、カスタム・データを分析し、カスタム・データの順序付けに固有の並べ替え規則を識別するルーチン８０４の例示的一実装を示す。本発明の例示的実施形態では、ルーチン８０４は、４つの段階を含む。段階０は、カスタム・データの有効性を確認し、正規化する前処理段階である。本発明の実施形態で、ルーチン８０４は、プロセス８３０を実行してカスタム・データを前処理する。図１０に、プロセス８３０の例示的実装を提供し、これについては下記で詳細に説明する。
【００８１】
カスタム・データの有効性を確認し、正規化するプロセス８３０を実行すると、ルーチン８０４は段階１に進み、この段階は、カスタム・データの順序付けに基づいて並べ替え規則を識別する最初の段階である。この段階で、ルーチン８０４は、カスタム・データの順序付けを既存の並べ替えサポート方式と比較する。例えば、本発明の例示的実施形態では、ルーチン８０４は、カスタム・データの順序付けをＷｉｎｄｏｗｓ（登録商標）のデフォルトのソート・テーブルと比較する。ブロック８３２を参照されたい。Ｗｉｎｄｏｗｓ（登録商標）のデフォルトのソート・テーブルは、Ｕｎｉｃｏｄｅコード・ポイントが００００〜ＦＦＦＦの範囲である各文字のデフォルトのソートの重みを含んだ、３２ビット値の２次元（ｆｌａｔ）テーブルである。Ｗｉｎｄｏｗｓ（登録商標）のデフォルトのソート・テーブルは、すべての並べ替えの基礎となる。現在は、７０個以上のロケールがＷｉｎｄｏｗｓ（登録商標）のデフォルト・ソート・テーブルでサポートされている。一般に、ロケールとは、言語、宗教、およびスクリプトの一意の組み合わせであり、言語データをフォーマットし、ソートするための優先事項（preferences）のセットを定義する。したがって、カスタム・データに要求される並べ替えが、Ｗｉｎｄｏｗｓ（登録商標）デフォルト・ソート・テーブルでカバーされることが可能な場合がある。そのような場合は、さらなる処理は必要でない。図９に示すように、ルーチン８０４は、Ｗｉｎｄｏｗｓ（登録商標）のデフォルト・ソート・テーブルに、カスタム・データに一致する並べ替えがあるかどうかを調べる。判定ブロック８３４を参照されたい。答えがＹＥＳの場合は、カスタム・データの並べ替え規則がすでに識別されており、ルーチン８０４が終了し、プロセス８００（図８）は、次の動作（action）に進み、その動作は、並べ替え規則のテスト、および／または並べ替え規則を将来の使用のためにバイナリ・ファイルとして構築することである。
【００８２】
Ｗｉｎｄｏｗｓ（登録商標）のデフォルト・ソート・テーブルに一致する並べ替えがない場合、ルーチン８０４は、段階２に進む。段階２では、利用可能な圧縮テーブル（compression table）および例外テーブルの中に、段階１で行われた比較の結果得られた違い、すなわちＷｉｎｄｏｗｓ（登録商標）のデフォルト・ソート・テーブルとカスタム・データの順序付けとの違いと一致するものがあるかどうかを決定する。ブロック８３６を参照されたい。当業者および関連分野の者に知られるように、例外テーブルは、所与の言語についてＷｉｎｄｏｗｓ（登録商標）のデフォルト・テーブルに行われるべき変更を列挙する。例外テーブルは、所与の言語を並べ替える目的で、割り当てられた重みを変更しなければならない文字の最小のサブセットである。一方、圧縮テーブルは、各圧縮タイプ、すなわち、２つ以上のＵｎｉｃｏｄｅコード・ポイントを含むソート要素を記載する。本発明の実施形態で、特定の圧縮テーブルまたは例外テーブルにカスタム・データとの類似点があるという知識は、並べ替えエンジンが、ＣＵに提示される問題点を解明する質問を作成する助けとなることができる。カスタム・データが既存の例外テーブルまたは圧縮テーブルと密接に一致する状況では、間違いの可能性がＣＵに提示される。
【００８３】
段階１で行われた比較からもたらされた違いと、圧縮テーブルおよび例外テーブルの１つにある情報との間に一致がある場合（判定ブロック８３８参照）、ルーチン８０４は、プロセス８００（図８）に戻る。プロセス８００は、カスタム・データに適合する並べ替えを見つけており、次の動作（action）に進み、そこでは、並べ替え情報をテストすること、および／または並べ替え情報を構築すること、となる。段階２で一致が見つからない場合、ルーチン８０４は、次いでプロセス８４０を実行して、カスタム・データの順序付けを分析することにより新しい並べ替えサポートを生成する。ブロック８４０を参照されたい。これが、ルーチン８０４にとって最後の段階、すなわち段階３である。図１２に、プロセス８４０の例示的一実装を示し、これについては下記で詳細に述べる。そして、ルーチン８０４は、終了する。
【００８４】
上記で触れたように、図１０に、適正な並べ替えサポートを生成する準備としてカスタム・データを前処理するプロセス８３０の例示的一実装を示す。プロセス８３０はまず、不整合あるいは矛盾がないかカスタム・データを調べることにより、カスタム・データの有効性を確認する。ブロック８４２を参照されたい。プロセス８３０は次いで、カスタム・データに問題が見つかったかどうかを決定する。判定ブロック８４４を参照されたい。カスタム・データに不整合および／または矛盾がある場合、プロセス８３０は、カスタム・データを入力したＣＵにその問題を伝えるルーチン８４６を実行する。ルーチン８４６を実行した後、プロセス８３０は、問題に対処する何らかの訂正を受け取ったかどうかを決定する。判定ブロック８４８を参照されたい。判定ブロック８４８の答えがＹＥＳの場合、プロセス８３０は、次いでその訂正を適用する。ブロック８５０を参照されたい。プロセス８３０は次いでブロック８４２に戻って、訂正後のカスタム・データに不整合あるいは矛盾があるかどうかを決定する。本発明の一部の実施形態では、並べ替えエンジンは、カスタム・データの不整合や矛盾などの問題に関して柔軟性がない。そのような問題が訂正されない限り、並べ替えエンジンは進行しない。したがって、判定ブロック８４０の答えがＮＯ、すなわちプロセス８３０が、カスタム・データの有効性を確認した際に明らかにされた問題に対する訂正を受け取らなかった場合、プロセス８３０、親ルーチン８０４、およびプロセス８００は終了する。
【００８５】
本発明の一部の実施形態では、並べ替えエンジンは、特定の点に達したときのみ、すなわち問題が多過ぎて並べ替えエンジンがそれ以上進行することができないときにのみ、カスタム・データに見つかった問題に関するメッセージを送る。
【００８６】
大半の状況では、並べ替えエンジンに受け取られるカスタム・データは、軽微な不一致（矛盾）はあるが、主として有効なデータを含んでいる。そのため、並べ替えエンジンは、カスタム・データが正確な情報であるとみなす。プロセス８３０における質問と返答の反復的な性質は共同的なものであり、リアルタイムでＣＵと協働して、カスタム・データについての適切な並べ替えサポートを決定する。
【００８７】
本発明の一部の実施形態では、カスタム・データの量とその包含範囲が並べ替えエンジンにとって許容できる場合、すなわち、不完全あるいは矛盾する点がない場合、並べ替えエンジンは、ユーザ・インターフェース３００などのユーザ・インターフェースにメッセージを送って、データの有効性が確認されたことをＣＵに伝える。図１０に示すように、判定ブロック８４４の答えがＮＯ、すなわちプロセス８３０がカスタム・データに問題を見つけない場合、プロセス８３０は次いでカスタム・データを正規化する。ブロック８５２を参照されたい。正規化は、文字列の合成されたバージョン（正規化形式Ｃ）と分解されたバージョン（正規化形式Ｄ）の両方が等しく扱われることを確実にする。プロセス８３０は次いで終了する。本発明の一部の実施形態では、プロセス８３０が正常に完了した後にのみ、ルーチン８０４（図９）が、カスタム・データの順序付けの分析を開始して並べ替え規則を識別する。
【００８８】
カスタム・データの問題を明らかにする（図１０）と、ルーチン８４６（図１１）は、ユーザ・インターフェース３００を通じてＣＵにその問題を伝える。ＣＵは、その問題を解決するための情報を提供することができる。例えば、カスタム・データに不整合および／または矛盾がある場合（判定ブロック８５４参照）ルーチン８４６は、ユーザ・インターフェース３００にメッセージを送って、その不整合をどのように解決するかを決定するのを助けるようにＣＵに指示する。ブロック８５６を参照されたい。このメッセージは、不整合を説明し、不整合を解決するための提案さえ提供する。カスタム・データの不整合および／または矛盾は、例えば同じ言語文字が２つの異なる方式でソートされている場合に発生する。不整合の一例は、正規等価な２つの文字列が、カスタム・データ中で互いから離されているものである。当業者および関連分野の者に知られるように、正規等価な文字列は、ユーザによって区別されることができず、そのため、同じものとして扱われ、全く同じように表示され、全く同じようにソートされるべきである。さらに、欠落したデータおよび／または不完全なデータからなる問題がある場合（判定ブロック８５８参照）、ルーチン８４６は、ユーザ・インターフェース３００にメッセージを送って、当該の文字を用いてその文字の並べ替えの振る舞いをさらに説明する追加的な文字列を提供するようにＣＵに指示する。ブロック８６０を参照されたい。そのような問題は、例えばある言語文字あるいはアクセントに特殊な振る舞いがあるらしいことが明らかであるが、その振る舞いがどのようなものであるかを判断するだけの情報がないときに発生する場合がある。
【００８９】
また、既存の並べ替えサポート方式との小さな相違がカスタム・データに存在する場合がある。その場合（判定ブロック８６２参照）、ルーチン８４６はユーザ・インターフェース３００に、その類似性を指摘するメッセージを送り、その違いを検証するようにＣＵに指示する。本発明の一部の実装形態では、このメッセージは、潜在的な地政学的に微妙な問題を回避するために、類似が存在する具体的な言語は言及しない。ブロック８６４を参照されたい。これは、通常のその正反対のポリシーにもかかわらず、小文字より前に大文字をソートするスクリプトなど、他の場合に用いられる並べ替えに特定の違いがあるように見える場合に起こる。
【００９０】
時には、追加的な情報が、あるスクリプトまたはある範囲の文字に必要とされる場合がある。これは、重要である場合も重要でない場合もある欠落した情報があると思われる場合に生じる。例えば、ＣＵがローマ字のスクリプトを使用しているが、ローマ字の範囲内で文字を欠いている場合、並べ替えエンジンは、並べ替え規則における欠落している文字の位置を示唆することができる。そして、並べ替えエンジンは、示唆した位置を確定するか、またはその位置を拒否して適切な位置を提案するようにＣＵに指示する。そのような場合（判定ブロック８６６参照）、ルーチン８４６は、ユーザ・インターフェース３００にメッセージを送って、必要とされる具体的な情報を要求する。ブロック８６８を参照されたい。
【００９１】
さらに、カスタム・データは、２つの等価の文字列を等しくないかのように扱う場合がある。例えば、２つの文字列は、Ｕｎｉｃｏｄｅの文字プロパティおよび／またはＵｎｉｃｏｄｅの正規化のために等価である可能性がある。しかし、カスタム・データは、それらの文字列を等価でないものとして扱っている。その場合（判定ブロック８７０参照）、ルーチン８４６は、ユーザ・インターフェース３００にメッセージを送って、どの位置が正しいか選択するようにＣＵに指示する。ブロック８７２を参照されたい。ユーザがある位置を選択すると、他の位置は排除される。
【００９２】
正しいデータが、有効な並べ替えを作成する作業の基本的前提となるので、並べ替えの作成のために適正なデータになるように、カスタム・データは通常いくらかの調整を必要とする。したがって、ルーチン８４６は、並べ替え作成プロセス中に、ＣＵにカスタム・データを調整させるために、任意に起動されることができる。
【００９３】
図１２に、カスタム・データの順序付けに基づいて新しい並べ替え規則を生成するために使用されるプロセス８４０の例示的な一実装を示す。基本的に、プロセス８４０は、カスタム・データを分析して、カスタム・データの順序付けに固有の並べ替え規則を決定する。具体的には、プロセス８４０は、ソートされた文字列中の文字を分析して、文字列中の分岐点とその分岐の性質、すなわち分岐が第１位の違いに基づくか、第２位の違いに基づくか、第３位の違いに基づくか、あるいは比較される文字列間の他の違いに基づくか、を決定する。プロセス８４０は、Ｕｎｉｃｏｄｅ文字のプロパティとカスタム・データの順序付けに固有の並べ替えパターンを利用することにより、この目的を達成する。
【００９４】
プロセス８４０の実行中に、プロセス８４０でカスタム・データに問題が発生すると、完全に正しい並べ替えサポートを生成するためにより多くの情報が必要とされる場合があるので、並べ替えエンジンは、ＣＵに、問題点を解明する質問を送ることができる。例えば、ある文字の特定の振る舞いを確認したい場合、プロセス８４０は、その文字のその振る舞いの例となる文字を含むより多くの文字列を入力するようにＣＵに要求することができる。この問い合わせは、文字の位置を指示する複数のオプションを指定し、ＣＵにオプションの１つを選択するように要求することもできる。さらに、プロセス８４０は、カスタム・データの中に視覚的な手がかりを表示して、並べ替えのサポートを示す。そのため、ＣＵは、文字列の順序付けを調整して、並べ替えサポートについての即座のフィードバックを並べ替えエンジンに提供することができる。
【００９５】
本発明の例示的実装形態では、プロセス８４０の各動作（action）ごとに、カスタム・データによって記述され、並べ替えエンジンによって有効性が確認された、コード・ポイントとソートの重みとの間の関係性についての現在の表現が格納される。そして、並べ替えエンジンは、格納された並べ替えデータをいつでも参照することができ、したがってＣＵが継続的に並べ替えデータを洗練されたものにすることができるようにする。
【００９６】
本発明の実装形態では、例えばカスタム・データの重み付け構造などの並べ替えパターンを分析する際に、並べ替えエンジンは初めに、Ｗｉｎｄｏｗｓ（登録商標）のデフォルト・テーブルから開始する。そして、並べ替えエンジンは、既存の例外テーブルと圧縮テーブルを調べ、内部の例外テーブルおよび／または圧縮テーブルと、必要な場合は追加データとを作成する。並べ替えエンジンの目的は、カスタム・データの順序付けを把握するために必要とされる並べ替えサポートの最小のサブセットを作成することである。したがって、ＣＵが最小のサブセットが何であるかを知っている場合、ＣＵは、それを直接ＴＯＯＬ２０４に提示することができる。並べ替えエンジンの分析作業の複雑性の大半は、ＣＵが所与の言語に関する最小のサブセットを持っていることはめったにないことから生じる。
【００９７】
より詳細には、図１２に示すように、プロセス８４０は、各文字列の文字を一度に一文字ずつ構文解析する。本発明の例示的一実装形態では、プロセス８４０は初めに、カスタム・データの各文字列の最初の文字を指すポインタを作成する。ブロック８７４を参照されたい。プロセス８４０は、そのポインタが指す文字（以後「ポインタ文字」）に基づいて各文字列を異なるグループ分けに分割する。プロセス８４０はまず、第１位の違い、すなわち各文字列のポインタ文字のアルファベット上の重みに基づいて文字列をグループ分けする。ブロック８７６を参照されたい。プロセス８４０は、文字列の順序付けを分析し、各ポインタ文字のアルファベット文字上の重みを決定する。プロセス８４０はさらに、ブロック８７６を実行することによって得られた文字列のグループを、第２位の違い、すなわち各文字列のポインタ文字の発音区別上の重み付けに基づいてグループ分けする。ブロック８８０を参照されたい。次いで、プロセス８４０は、ブロック８７８を実行することで得られた文字列のグループを、第３位の違い、すなわち各文字列のポインタ文字の大文字／小文字についての重みに基づいてさらにグループ分けする。ブロック８８０を参照されたい。
【００９８】
各文字列のポインタ文字に基づいて分岐点とその分岐の性質を見つけると、プロセス８４０は、文字列にその他の文字があるかどうかを決定する。判定ブロック８８２を参照されたい。答えがＹＥＳの場合、プロセス８４０は、各文字列のポインタを各文字列中の次の文字、または、文字列にそれ以上文字がない場合はＮＵＬＬに進める。ブロック８８４を参照されたい。ブロック８８４からプロセス８４０はブロック８７６に戻り、各文字列のポインタ文字の第１位、第２位、または第３位の違いに基づく文字列のグループ分けを開始する。ループの最後に、プロセス８４０は、各文字列の最初の分岐点と、文字列の最初の文字の最初の順序付けを識別する。
【００９９】
本発明の実装形態で、プロセス８４０は、各文字を一意のソート要素として扱い、拡張、圧縮、および並べ替えをより複雑にする他の構成物、を探す前に、明らかな矛盾がデータに見つかるまで待機する。本発明の実装形態では、あるグループ分けセクションの期間に、いずれかのレベルで違いが無視されていると考えられる場合は、そのグループ分けセクションの残りの期間にわたって、その違いは、並べ替えエンジンに無視される。例えば、プロセス８４０は、次のカスタム・データを調べるとする。
【０１００】
【表１】
2006134332.tif 000014
【０１０１】
この例では、大文字／小文字と発音区別に違いがある。最初のグループ分け（ブロック８７６）では、最初の文字のアルファベット文字上の重みに基づいてデータを「ｃ」グループにグループ分けする。ここでは、大文字／小文字と発音区別の違いは無視される。しかし、２回目のグループ分け（ブロック８７８）の期間では、プロセス８４０は、小文字の
【０１０２】
【数１２】
2006134332.tif 000015
【０１０３】
が普通の小文字の「ｃ」より後に来ていることに気づく。３回目のグループ分け（ブロック８８０）の期間、プロセス８４０はさらに、小文字の「ｃ」が大文字の「Ｃ」より前にあることに気づく。したがって、このサンプル・データを分析することにより、プロセス８４０は、小文字の「ｃ」は大文字の「Ｃ」より前に来て、普通の小文字の「ｃ」は、小文字の
【０１０４】
【数１３】
2006134332.tif 000016
【０１０５】
より前に来る、という並べ替え規則を識別する。
【０１０６】
段階３の期間、特殊な並べ替え規則の存在が決定され、また分析される。特殊な並べ替え規則には、例えばフランス語の並べ替えのための「ＲＥＶＥＲＳＥ  ＤＩＡＣＲＩＴＩＣ（逆方向からの発音区別）」規則が含まれる。フランス語では、発音区別符号は、文字列の後ろから前に向かって評価される。したがって、フランス語では、単語
【０１０７】
【数１４】
2006134332.tif 000017
【０１０８】
は単語
【０１０９】
【数１５】
2006134332.tif 000018
【０１１０】
より前にソートされるが、他の言語ではこのように単語をソートすることはない。別の例は、ハンガリー語に見られる「ＤＯＵＢＬＥ  ＣＯＭＰＲＥＳＳＩＯＮ（二重の圧縮）」の規則であり、この場合は、「ｄｓｚ」などの書記素の存在は、書記素「ｄｄｓｚ」が並べ替えの目的には「ｄｓｚｄｓｚ」として扱われることを意味する。本発明の実装形態では、こうした特殊な規則は、カスタム・データの並べ替えサポートのための追加データとして保存される。
【０１１１】
判定ブロック８８２の答えがＮＯである、すなわちプロセス８４０が各文字列のすべての文字を処理している場合、プロセス８４０は、グループ分けのメタ分析を行う。ブロック８８６を参照されたい。このメタ分析では、既存のＷｉｎｄｏｗｓ（登録商標）のソートと比較して、発音区別符号や他の結合記号などの特定の文字ならびにスクリプト全般の処理方式を調べる。例えば、メタ分析では、Ｗｉｎｄｏｗｓ（登録商標）とカスタム・データにおける、複数のインド言語の多くにわたるＡｎｕｓｖａｒａ（鼻音化符号）の使用の異なる振る舞いに気づくことができる。メタ分析では、類似性を使用して、カスタム・データについての決定を導く。決定が正しくない場合、ＣＵは、後に並べ替えられたカスタム・データを点検（review）する際にその決定を無効にすることができる。
【０１１２】
カスタム・データの並べ替え規則を識別した後、本発明の一部の実装形態では、並べ替えエンジンは、その並べ替え規則をテストすることができる。図１３に、現在の並べ替え規則をテストするルーチン８１４を示す。ルーチン８１４の説明では、図７Ａおよび７Ｂに図示されるテスト・サーフェス７００を参照する。上記で述べたように、テスト・サーフェス７００は、正しくソートされた文字列のリスト、または未ソートの文字列リストを受け取ることができる。テスト・サーフェス７００が正しくソートされた文字列のリストを受け取る場合、ＣＵは、その文字列のリストが、現在の並べ替え規則を適用した後に変更されないかどうかを検証することができる。テスト・サーフェス７００がソートされていない文字列のリストを受け取る場合、ＣＵには、ソートされていないテスト・データの並べ替えが正しいかどうかを確認する機会が与えられる。並べ替えが正しくない場合、ＣＵは、その順序付けを調整してその並べ替えにおける問題の解決を支援することができる。
【０１１３】
より具体的には、図１３に示すように、ルーチン８１４は初めに、テスト・データを受け取ったかどうかを決定する。判定ブロック８８８を参照されたい。答えがＮＯの場合、ルーチン８１４は進行しない。答えがＹＥＳの場合、ルーチン８１４は、現在の並べ替え規則に基づいてテスト・データを並べ替える。ブロック８９０を参照されたい。図７Ｂに示すように、本発明の実装形態では、並べ替えられたテスト・データは、テスト・サーフェス７００を通じてＣＵに提示される。ＣＵは、その並べ替えが正しいか正しくないかを指示する。ルーチン８１４は、それがユーザからの肯定の返答を受け取ったかどうかを決定する。ブロック８９２を参照されたい。答えがＹＥＳ、すなわち並べ替えが正しい場合、ルーチン８１４は、続いて、適正に有効性が確認され、検証された、並べ替え済みのテスト・データをカスタム・データに挿入する。ブロック８９４を参照されたい。ルーチン８１４は次いで判定ブロック８８８に戻って、ＣＵから追加的なテスト・データが受け取られているかどうかを決定する。
【０１１４】
判定ブロック８９２の答えがＮＯ、すなわちＣＵが並べ替えのサポートを承認しない場合、ルーチン８１４は次いで、並べ替えられたテスト・データの現在の順序付けに対するＣＵからの訂正を受け取るインターフェースを提示する。そして、テスト・データは、ＣＵによって検証されたものとみなされる。ブロック８９６を参照されたい。本発明の一部の実装形態で、テスト・サーフェス７００で、ＣＵは、文字列を正しい場所にドラッグ・アンド・ドロップすることができる。ルーチン８１４は次いで、検証されたが有効性が確認されていないテスト・データを再度カスタム・データに挿入する。ブロック８９８を参照されたい。この状況で、更新後のカスタム・データに並べ替え作成エンジン８０４（図９）が再度行われる。その結果、検証されたテスト・データに従って適正な並べ替え規則が作成される。
【０１１５】
本発明の好ましい実装形態を図示し、説明したが、本発明の主旨および範囲から逸脱することなく、各種の変更を加えることができることが理解されよう。
【図面の簡単な説明】
【０１１６】
【図１】言語データを並べ替える従来の方式として、言語学者などの専門の並べ替え提供者が手作業で言語データを並べ替える方式を説明する図であり、る。
【図２】本発明の一例示的実装形態として、言語学者ではなく一般のユーザが言語データを並べ替えることを可能にする実装形態を説明する図である。
【図３】カスタム並べ替えツールのユーザ・インターフェースの一例示的実装を示す図であって、ユーザ・インターフェースのメイン・ウィンドウが表示された図である。
【図４】カスタム並べ替えツールのユーザ・インターフェースの一例示的実装を示す図であって、ユーザ・インターフェースの高機能ウィンドウが表示された図である。
【図５Ａ】言語データに関するＵｎｉｃｏｄｅのプロパティ情報が表示された、カスタム並べ替えツールのユーザ・インターフェースを説明する図である。
【図５Ｂ】言語データに関するＵｎｉｃｏｄｅのプロパティ情報が表示された、カスタム並べ替えツールのユーザ・インターフェースを説明する図である。
【図５Ｃ】言語データに関するＵｎｉｃｏｄｅのプロパティ情報が表示された、カスタム並べ替えツールのユーザ・インターフェースを説明する図である。
【図５Ｄ】言語データに関するＵｎｉｃｏｄｅのプロパティ情報が表示された、カスタム並べ替えツールのユーザ・インターフェースを説明する図である。
【図６Ａ】言語データに関する正規化形式が表示された、カスタム並べ替えツールのユーザ・インターフェースの一例示的実装を説明する図である。
【図６Ｂ】言語データに関する正規化形式が表示された、カスタム並べ替えツールのユーザ・インターフェースの一例示的実装を説明する図である。
【図６Ｃ】言語データに関する正規化形式が表示された、カスタム並べ替えツールのユーザ・インターフェースの一例示的実装を説明する図である。
【図７Ａ】カスタム並べ替えツールのためのテスト・ユーザ・インターフェースの一例示的実装を説明する図である。
【図７Ｂ】カスタム並べ替えツールのためのテスト・ユーザ・インターフェースの一例示的実装を説明する図である。
【図８】並べ替え作成プロセスの一例示的実装を説明する流れ図である。
【図９】図８で使用するのに適した、カスタム・データ中の並べ替えサポートを識別するルーチンの一例示的実装を説明する流れ図である。
【図１０】図９で使用するのに適した、カスタム・データを前処理するプロセスの一例示的実装を説明する流れ図である。
【図１１】図１０で使用するのに適した、カスタム・データ内で識別された問題を伝達するルーチンの一例示的実装を説明する流れ図である。
【図１２】図９で使用するのに適した、カスタム・データに基づいて新しい並べ替えサポートを生成するプロセスの一例示的実装を説明する流れ図である。
【図１３】図８で使用するのに適した、並べ替えサポートをテストするプロセスの一例示的実装を説明する流れ図である。
【符号の説明】
【０１１７】
１０２    言語学者
１０４    コンピュータ
１０６    文字列のセット
２０２    一般のユーザ
２０４    カスタム並べ替えツール
２０８    コンピュータ・システム２０８
３００    ユーザ・インターフェース
３０２    メイン・ウィンドウ
３０３    「ロードする」ボタン
３０４    分析される実際の文字列を一覧にしている第１の列
３０５    「分析する」のボタン
３０６    「保存する」ボタン
３０８    「終了する」ボタン
３１０    「行を削除する」のボタン
３１２    質問ウィンドウ
３１４    ＹＥＳボタン
３１６    ＮＯボタン
３１８    「コード・ポイントを表示する」ボタン
４０２    高機能ウィンドウ
４０４    「Ｕｎｉｃｏｄｅのプロパティ情報」のチェック・ボックス
７００    テスト・サーフェス
７０２    「ソートする」ボタン
７１０    質問ウィンドウ
７１２    「Ｙｅｓ」ボタン７１２
７１４    「Ｎｏ」ボタン
【図１】
2006134332.tif 000019
【図２】
2006134332.tif 000020
【図３】
2006134332.tif 000021
【図４】
2006134332.tif 000022
【図５Ａ】
2006134332.tif 000023
【図５Ｂ】
2006134332.tif 000024
【図５Ｃ】
2006134332.tif 000025
【図５Ｄ】
2006134332.tif 000026
【図６Ａ】
2006134332.tif 000027
【図６Ｂ】
2006134332.tif 000028
【図６Ｃ】
2006134332.tif 000029
【図７Ａ】
2006134332.tif 000030
【図７Ｂ】
2006134332.tif 000031
【図８】
2006134332.tif 000032
【図９】
2006134332.tif 000033
【図１０】
2006134332.tif 000034
【図１１】
2006134332.tif 000035
【図１２】
2006134332.tif 000036
【図１３】
2006134332.tif 000037
【外国語明細書】
2006134332000001.pdf