(57)【要約】【課題】電子文書中で文字符号化を検出するシステム及び方法を提供する。【解決手段】電子文書が適法な数値コードを有するテキスト文字列だけを含むかどうかを判断するためにテキスト文字列を試験し、適法にコード化されたマッピングの候補を提供するためにテキスト文字列の統計的な分析を実施し、適法にコード化された候補をランク付けし、適法にコード化された候補のランク付けを適法にコード化された候補の予想ランク付けと結合し、最も確かそうな文字マッピングを実現する。【選択図】図１
2007048284.tif 000002
【特許請求の範囲】
【請求項１】
複数のテキスト文字列を含む電子文書中で活用される符号化を検出する方法であって、符号化された文書の該テキスト文字列は複数の適法な数値コードのうちの一つと関連付けられ、
該電子文書が適法な数値コードを有するテキスト文字列だけを含むかどうかを判断するためにテキスト文字列を試験することと、
適法にコード化されたマッピングの候補を提供するために該テキスト文字列の統計的な分析を実施することと、
該適法にコード化された候補をランク付けすることと、
該適法にコード化された候補のランク付けを適法にコード化された候補の予想ランク付けと結合し、最も確かそうな文字マッピングを実現することと、
を備える方法。
【請求項２】
該適法な数値コードの少なくとも一つの該テキスト文字列が文字の特定の範囲と関連付けられ、該統計的な分析を実施することが、該電子文書の該テキスト文字列を、該少なくとも一つの適法な数値コードの文字の該特定の範囲と比較することを含む請求項１に記載の方法。
【請求項３】
該適法な数値コードの少なくとも一つの該テキスト文字列が、該テキスト文字列の特定のロケールでの特定の符号化を含み、該統計的分析を実施することが、該電子文書の該テキスト文字列が、該特定のロケールでの該特定の符号化を含むかどうかを判断することを含む請求項１に記載の方法。
【請求項４】
最も一般的に使用される適法な数値コードのランク付けを決定するために、該適法な数値コードの統計的な分析を周期的に実施することと、
適法にコード化された候補の予想されるランク付けとして、最も一般的に使用される適法な数値コードのランク付けを活用することと、
をさらに備える請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は文字符号化システム及び方法に関する。さらに詳細には、本開示は電子文書中で文字符号化を検出するシステム及び方法に関する。
【背景技術】
【０００２】
電子文書（ドキュメント）中、テキストは多くの場合、多様なビット長のコンピュータバイトまたはワードの列として表現される。テキスト文字から数値コードを導くマッピングは多対１である。さらに、数値コード（符号化）の表現は一意ではない。コードページ等の仕組みにより数値コードが正しい対応するテキスト文字へ適切に復号することが可能になる。これを適切に行うためには文字対数値コードのマッピングと数値コード符号化方式の両方ともが公知なければならない。
【０００３】
データを記憶し、情報をユーザに提供するために、コンピュータネットワーク、特にインターネットを使用することはますます一般的になってきている。家庭用コンピュータ等のクライアントコンピュータは、さらに大規模な地域のＩＳＰに、または直接的にインターネットの「バックボーン」の一つにさらに接続する地域のインターネットサービスプロバイダ（「ＩＳＰ」）を通してインターネット上の他のクライアントとサーバに接続できる。地域及び国のバックボーンは、衛星中継及び海底ケーブル等の長距離データトランスポートコネクションを通して相互接続されている。相互接続性のこれらの層を通して、インターネットに接続される各コンピュータはインターネット上の他のコンピュータの他のすべて（あるいは少なくとも大きな割合）に接続できる。
【０００４】
インターネットは概してクライアント−サーバアーキテクチャに配置される。このネットワークモデルでは、クライアントコンピュータはサーバに記憶されている情報を要求し、サーバは要求された情報を見つけ出し、クライアントコンピュータに返す。サーバコンピュータは種々のデータタイプを記憶し、多くのサービスを提供することができる。例えば、２−３例を挙げると、サーバはテルネット（ｔｅｌｎｅｔ）、ｆｔｐ（ファイル転送プロトコル）、ゴーファー（ｇｏｐｈｅｒ）、ｓｍｔｐ（簡易メール転送プロトコル）及びワールドワイドウェブサービスを提供できる。任意の数のこれらのサービスを異なるポートで同じ物理サーバによって提供できるケースもある。サーバが特定のポートを利用可能にすると、クライアントコンピュータは事実上インターネットのどこからでもそのポートに接続することができ、コンピュータ間の世界的な接続性につながる。
【０００５】
典型的なインターネットユーザの場合、ワールドワイドウェブとｅメール（ｓｍｔｐ）が活用されている有力なサービスとなった。ワールドワイドウェブは技術文書の共用を促進するために開発されたが、過去１０年の間に情報提供業者の数は劇的に増加し、現在ではユーザは世界中から技術的、商業的及び娯楽のコンテンツを利用できる。ワールドワイドウェブサービスを通して提供される情報は、通常、ウェブページとして知られているハイパーテキスト文書の形で提示され、ユーザが特定のワードとグラフィックを「クリック」し、さらなるウェブページを検索できるようにする。
【０００６】
ユーザがウェブページを要求すると、ウェブブラウザとして知られているプログラムが適切なウェブサーバに対して要求を行うことができ、ウェブサーバはウェブページを見つけ、ウェブページに対応するデータを１とゼロの連続としてクライアントコンピュータに送信する。ウェブブラウザは受信されたバイトをユーザに表示するために認識可能な文字に変換しなければならない。
【０００７】
文字符号化方式は、受信されたバイトを認識可能な文字にマッピングするための仕組みを提供する。文字符号化方式では、「コード化された文字セット」は、文字の集合から負ではない整数の集合へのマッピングであり、コード化された文字セットに文字から整数へのマッピングが含まれる場合、文字はコード化された文字セット内で定義される。該整数は「コードポイント」として知られ、文字は「符号化文字」として知られる。多数の文字符号化方式が定義されており、多くは個々のベンダにより定義されているが、全世界的に採用されている標準化された文字符号化方式はない。ある文字符号化方式で文字「ａ」にマップする整数が別の文字符号化方式では「Ｉ」、漢字にマップする、あるいはどの文字にもマップしないことがあるため、標準化が行われていないことは問題である。ウェブページデータを受信するウェブブラウザがウェブページのコンテンツを表示するために不正確な文字符号化方式を使用すると、コンテンツは理解不可能または無意味として表示される可能性がある。
【０００８】
ウェブページを適切に表示するために、ウェブブラウザはそのウェブページにとって適切な文字符号化方式を決定しなければならない。これは、通常、ウェブページのコンテンツタイプのＨＴＴＰヘッダの中の、あるいはウェブページに含まれているＭＥＴＡ宣言の中の「文字セット（charset）」パラメータを読み取ることによって行われる。ただし、これらの仕組みの両方とも文字符号化方式がウェブページ自体のコンテンツの中で定義されていることを必要とする。この文字符号化情報を提供しないウェブページの場合、ウェブブラウザは他の仕組みを介して適切な文字符号化方式を決定しようとしなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
マイクロソフト（Ｍｉｃｒｏｓｏｆｔ）のインターネットエクスプローラ７（Ｉｎｔｅｒｎｅｔ  Ｅｘｐｌｏｒｅｒ）及びネットスケープ７ナビゲータ（Ｎｅｔｓａｐｅｓ７  Ｎａｖｉａｔｏｒ）等の既存のウェブブラウザは、（文字符号化がそれ以外に定義されていないとき）既定の文字符号化方式にとって一意である、または特別である文字範囲の部分集合を定義することによって適切な文字符号化方式を決定しようとする。例えば、ウェブブラウザが第一の文字の符号化方式に対応するとして１から３を定義し、第二の文字の符号化方式に対応するとして６から９を定義することがある。ウェブブラウザによって受信される整数が４、５及び８である場合、これらの整数の多くが第二の文字符号化方式について定義された範囲６から９に適合する。したがって、ウェブブラウザはその方式を選択できるであろう。次にウェブブラウザは第二の文字符号化方式に基づいて文字を表示できる。ウェブブラウザは多数な範囲を試験（テスト）しなければならないため、このプロセスは非効率である場合があり、多様な文字符号化方式の範囲が重複することがあるので不正確な場合がある。さらに、多くの文字符号化方式は文字を符号化するために連続した整数を使用せず、文字符号化方式は文字を符号化するために整数の最善に定義された範囲を使用しない可能性があり、ウェブブラウザによる不正確な文字の表示をもたらす。
【課題を解決するための手段】
【００１０】
電子文書が適法な（legal）数値コードを有するテキスト文字列（string）だけを含んでいるかどうかを判断するために該テキスト文字列を試験することを備える、電子文書中で活用される符号化を検出する方法が提供される。そして、適法にコード化されたマッピングの候補（候補マッピング）を提供するために、テキスト文字列の統計的な分析が実施される。適法にコード化された候補にはランクが付けられ、最も確からしいマッピングを提供するために、適法にコード化された候補の予想ランク付けと結合される。
【００１１】
適法な数値コードの少なくとも一つのテキスト文字列は、特定の範囲の文字と関連付けられてよい。したがって、統計的な分析は、電子文書のテキスト文字列を少なくとも一つの適法な数値コードの特定の範囲の文字と比較することを含んでよい。
【００１２】
適法な数値コードの少なくとも一つのテキスト文字列は、テキスト文字列の特定のロケールでの特定の符号化と関連付けられてよい。したがって、統計的な分析は、電子文書のテキスト文字列が特定のロケールでの特定の符号化を含むかどうかを判断することを含んでよい。
【００１３】
該方法は、最も一般的に使用される適法な数値コードのランク付けを決定するために、適法な数値コードの統計的な分析を周期的に実施することも備えてよい。次に、この最も一般的に使用される適法な数値コードのランク付けは、適法にコード化された候補の予想ランク付けとして使用される。一つまたは複数の適法な数値コードは、特定の地理的地域内の好ましいコードであってよい。この場合、適法にコード化される候補の該予想ランク付けは、電子文書が特定の地理的地域で符号化されるときに好ましいコードに有利なように重み付けされてよい。
【００１４】
テキスト文字列を試験することは、電子文書の各テキスト文字列をバイト単位で調べることと、各テキスト文字列が適法な数値コードの一つの規則と一致するかどうかを判断することと、適法な数値コードの一つの規則と一致しない各テキスト文字列を特定することとを備える。このプロセスは各適法な数値コード毎に繰り返される。
【００１５】
適法な数値コードの少なくとも一つは言語と相関してよい。この場合、適法にコード化された候補をランク付けることは、バイトの発生頻度が、言語に対応し、言語を適法な数値コードの一つと相関させる文字の使用パターンと対応するかどうかを判断することを含んでよい。
【発明を実施するための最良の形態】
【００１６】
複数の図を通して類似する数値が類似するパーツを表す図面を参照して、マッピングの候補の集合の中からメッセージデータの文字マッピングを推定することにより電子文書で活用される符号化を検出する方法１０が提供される。それぞれの特定のマッピングは一式の規則等の柔軟な形式を使用して表現できる。一般的には、本符号化検出器方法１０は、ＩＳＯ  ８８５９−１（ラテン１）またはＵＴＦ−８符号化のユニコード等の標準的な文字マッピング方式を活用する。典型的な文字セットとその対応する数値コードまたは符号化方式を以下に示す。
【００１７】
！  ＵＴＦ−８（マルチバイト符号化による汎用文字セット）
１バイト(0x00 - 0xFF)
２から４バイト(0xC2 - 0xF4, [0x80 - 0xBF], [0x80 - 0xBF], [0x80 - 0xBF])
！  ＡＳＣＩＩ（共通した単一バイト符号化を使用する複数の文字セット）
印刷不可(0x00 - 0x1F)
印刷可能(0x20 - 0x7F)
拡張(0x80 - 0xFF)
拡張ＡＳＣＩＩは、ＩＳＯ−８８５９−１、ＩＳＯ−８８５９−５、ＩＳＯ−８８５９−７等の単一バイト符号化とみなされる場合
！  シフトＪＩＳ（マルチバイト符号化による共通日本語文字セット）
1バイト(0x00 - 0x7F, 0xA1 - 0xDF)
２バイト(0x81 - 0x9F, 0xE0 - 0xFC, [0x3F - 0xFC])
！  ＧＢＫ（マルチバイト符号化による共通中国語文字セット）
1バイト(0x00 - 0x7F)
２バイト(0x81 - 0xFE, [0x40 - 0xFF])
【００１８】
それぞれの特定のマッピングは、一式の規則等の柔軟な形式を使用して表現できる。これにより追加されるマッピングを処理するための簡単な拡張が可能になる。
【００１９】
符号化検出器方法１０は、未知のマッピングを有するテキスト文字列であることが知られている、ユーザ、即ちコンピュータ（Ｓ１４）に入力された、あるいはそれによって受信された（Ｓ１２）データを検査することによって機能する。特定のフィールドが文字列としてタイプコード化されるので、このような公知のテキスト文字列の識別は、多くのプロトコルで容易に行われる。これらのプロトコルで文字列として定義されるフィールドは、例えば、コンピュータとプリンタの間でテキスト情報を通過させるために使用される。印刷の動作で使用されるプロトコルの例としては、ＬＰＲ、ＩＰＰ、ＨＴＴＰ、Ｋｅｒｂｅｒｏｓ、ＤＨＣＰ、ＬＤＡＰ、ＳＭＴＰ（拡張付き）、ＰＯＰ３、ＤＮＳ、ＮｅｔＢＩＯＳ、ポート９１００、ＳＭＢ認証、Ｓａｍｂａ、ＩＰＸ／ＳＰＸ、Ｐｓｅｒｖｅｒ、ＡｐｐｌｅＴａｌｋ、ＵＳＢ及びプリンタパラレルポートを含む。
【００２０】
符号化検出１０は、最初に、テキストが適法な数値コードだけを含んでいるかどうかを判断するために、公知のテキスト文字列を試験すること（Ｓ１６）により先に進む。上述の文字方式からわかるように、特定の符号化方式ではいくつかの数値コード範囲は許されていない。例えば、単純なＡＳＣＩＩ（オリジナルの７ビットの符号化）は０ｘ７Ｆより上のコードは可能でない。印刷可能ＡＳＣＩＩだけが０ｘ２０と０ｘ７Ｆの間のコードが可能である。
【００２１】
次に、候補のランク付けを行う（Ｓ１８）ために、適法にコード化されたマッピングの候補ごとにテキスト中に出現する数値コードの統計が分析される。単純な統計は、適法なマッピングの候補を進めるまたは排除する特定の範囲に文字を含む。特定のロケールにおける特定の符号化による文字の発生に関するさらに複雑な統計は、さらに微妙な違いを示すために使用できる。統計的な分析は、特定のコード使用の評価を介するマッピングの候補のランク付けである。
【００２２】
最後に、このマッピングの候補のランク付けは、最善の推定値または最も確からしい文字マッピングを提供する（Ｓ２０）ために、マッピングの集合の予想されるランキングと結合される。マッピングが一意ではないので、予想される集合を使用すると、一般的に生じるマッピングだけではなく局所的に好ましいマッピングの指定が可能になる。
【００２３】
前述された符号化検出器の方法は、以下に示される単純で高水準のアルゴリズムによりＸＯＧ／ＳＥＢＵエンデバー（Ｅｎｄｅａｖｏｒ）コントローラで実現された。
【００２４】
【数１】
2007048284.tif 000003
【００２５】
上述のシステム実行は２段階でされる。走査段階では、テキスト本体のすべての入力文字列が適法性について試験され、対応する統計が蓄積される。選択段階では、適法な候補及びその統計が好ましいランク付けと結合され、最善に推測される符号化を決定する。
【００２６】
走査段階は、入力テキストをバイト単位で調べる並行状態機械（parallel state machine）（Ｓ２２）により実現される。各状態遷移に関連付けられているのは、カウントまたはフラグに特定の状態だけではなく適法性も判断する（Ｓ２４）アクションルーチンの集合である。状態機械は、規則の拡大を可能にする柔軟な表（テーブル）形式により表現される。規則に従わないテキスト文字列（Ｓ２６）にはフラグが立てられる（Ｓ２８）、あるいはそれ以外の方法で識別される。次に、コンピュータは、各テキスト文字列のあらゆるバイトが調べられたかどうかを判断する（Ｓ３０）。テキスト文字列のすべてが調べられていない場合（Ｓ３２）、次のテキスト文字列が調べられる（Ｓ２２）。テキスト文字列のすべてが調べられた場合（Ｓ３４）、次に、コンピュータはテキスト文字列統計を評価すること（Ｓ１８）に進む。統計は状態機械表の中のフラグによってトリガされるコード化ルーチンの集合として実現される。
【００２７】
ＡＳＣＩＩ等の単純な符号化の場合、状態機械は複数の単純なチェックを実行する。バイトが（２０）１６未満である場合、文字列は印刷不可とフラグが立てられる（Ｓ２８）。任意のバイトが１２７を超えると、それは拡張とフラグが立てられる（Ｓ２８）。したがって、文字列の符号化は、２状態の状態機械を使用するだけでＡＳＣＩＩ、印刷可能ＡＳＣＩＩまたは拡張ＡＳＣＩＩと判断できるであろう。
【００２８】
シフトＪＩＳ等の複数バイトの符号化の場合、状態機械はわずかにより複雑化しているにすぎない。例えば、２バイトのシフトＪＩＳ文字の場合、第一のバイトが（８０）１６である場合、状態機械は状態２になり、即座にシフトＪＩＳ符号化には無効と文字列にフラグを立てる（Ｓ２８）。しかしながら、第一のバイトが（８１）１６である場合には、それは状態１になる。この状態にある間、次のバイトは第二の拡張ページの有効な範囲に対して試験される。この例を続けると、バイトは（３Ｆ）１６未満でよく、その場合文字と文字列は無効である、あるいはそれは（４０）１６と（ＦＣ）１６の間であってよく、その場合文字はシフトＪＩＳ符号化には有効とみなされ、状態機械は次のバイトを試験するために状態０に戻るであろう。
【００２９】
文字列が複数の符号化でも有効であってよいことが理解されなければならない。例えば、バイトＡｅ６  ｄｆ＠は、ＩＳＯ−８８５９−１のＡａｅβ＠を、ＧＢＫのＡ＠を表現する。いったん文字列の統計が記録されると、それらは最善の符号化の候補を特定する（Ｓ２０）ためにハードコード化された一式の規則に対して適法性を立証される。例えば、Ａｅ６  ｄｆ＠が２個の拡張ＡＳＣＩＩバイトを含んでいるという事実は、それがＡＳＣＩＩ文字列ではありえないことを暗示している。この例では、拡張ＡＳＣＩＩ、シフトＪＩＳ及びＧＢＫが、三つの考えられる符号化の候補である。
【００３０】
ＡＳＣＩＩ符号化状態機械は、バイトのストリームが拡張ＡＳＣＩＩであるかどうかを判断するために利用される。しかしながら、この状態機械はここに説明されている優先リストの仕組みによる以外の特定の単一バイト符号化を区別できない。バイトの頻度（Ｓ３６）、コードの連字（bi-gram）、及び三連字（tri-gram）の発生（Ｓ３８、Ｓ４０）を表す統計は、区別化を改善するために使用できる。これは、共通文字符号化にマップする異なる言語での文字または短いサブストリングの自然な使用パターンに基づいている。この技法は試験され、ユーザ名等の短い文字列でも効果的であることが判明している。
【００３１】
選択段階は、最善の符号化の候補を選択する（Ｓ２０）ために、好ましい符号化の優先順位が付けられたリストとともに、走査段階によって生成される符号化の優先順位が付けられたリストを使用する。好ましい符号化は二つの符号化リストとして実現され、それぞれが優先順位順で並べられる。第一のリストは、使用の特定のロケールにカスタマイズされた構成可能リストである。第二は、第一のリストが構成されていない場合に使用されるデフォルトのリストである。
【図面の簡単な説明】
【００３２】
【図１】電子文書中で活用される符号化を検出する方法の流れ図である。
【図２】電子文書で活用される符号化を検出する方法のテキスト文字列試験ルーチンの流れ図である。
【図３】電子文書で活用される符号化を検出する方法のマッピングの候補のランク付けルーチンの流れ図である。
【図１】
2007048284.tif 000004
【図２】
2007048284.tif 000005
【図３】
2007048284.tif 000006