【文献】
Non Breaking Spaces Before Punctuation In French (espaces inse'cables),Apacha OpenOffice Wiki,2012年 8月29日,[平成29年8月25日検索],インターネット,URL,https://wiki.openoffice.org/wiki/Non_Breaking_Spaces_Before_Punctuation_In_French_(espaces_inse'cables)
(58)【調査した分野】(Int.Cl.,DB名)
前記フォーマットモジュールは、複数の言語をサポートし、前記言語識別器は、前記サポートされている言語のうち、前記電子文字列が書かれている可能性が最も高い言語をさらに識別するように構成される、
ことを特徴とする請求項2に記載のフォーマットモジュール。
前記1又はそれ以上の操作は一連の操作を含み、前記比較機構は、あるルールが適用可能であると判明した時に、前記電子文字列に前記一連の操作を適用するように構成される、
ことを特徴とする請求項1又は2に記載のフォーマットモジュール。
前記文字識別器は、1つのルールセットが各サポートされている言語のためのものである複数のルールセットを含み、前記比較機構は、前記最も可能性の高い言語に対応する前記ルールセットの各ルールを前記電子文字列と比較するように構成される、
ことを特徴とする請求項5に記載のフォーマットモジュール。
前記ルールセットは、文脈ルール、文字ルール及びカテゴリルールを含み、前記比較機構は、適用可能なルールが識別されるまで、又は適用可能なルールが識別されずに全てのルールが枯渇するまで、文脈ルール、文字ルール、次にカテゴリルールの順番で前記ルールを比較するように構成される、
ことを特徴とする請求項1に記載のフォーマットモジュール。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明の目的は、電子文字列内のスペースが正しくフォーマットされているかどうかをユーザが気にすることなくメッセージの内容に集中できるように、電子文字列内のスペースを自動的にフォーマットするための手段を提供することである。また、電子文字列内のスペースを、電子文字列が書かれている言語の慣習に基づいて正しくフォーマットするための手段を提供することも本発明の目的である。
【課題を解決するための手段】
【0008】
本発明の第1の態様では、少なくとも1つの言語をサポートし、サポートされている言語で書かれた電子文字列内のスペースをフォーマットするように構成されたフォーマットモジュールを提供し、このフォーマットモジュールは、
電子文字列がサポートされている言語で書かれているかどうかを識別するように構成された言語識別器と、
電子文字列内の特定の文字又は特定の文字列を識別するように構成された文字識別器と、
を備え、フォーマットモジュールは、サポートされている言語が識別されると、この識別された言語、及び識別された特定の文字又は文字列に基づいて電子文字列内のスペースをフォーマットするように構成される。
【0009】
電子文字列内のスペースをフォーマットすることは、電子文字列においてスペースを挿入及び/又は削除することを含むことが好ましい。
【0010】
好ましい実施形態では、文字識別器が、
各ルールが電子文字列内の識別すべき特定の文字又は文字列に関連する少なくとも1つのルールセットと、
ルールが適用可能であるかどうかを識別するために、少なくとも1つのルールセットのうちの1つのルールセットの各ルールを電子文字列と比較するように構成された比較機構と、
を含み、各ルールは、サポートされている言語、及び特定の文字又は文字列を所与として、フォーマットモジュールによって電子文字列に適用すべきスペースのフォーマットを記述する1又はそれ以上の操作に関連し、
フォーマットモジュールは、適用可能なルールに関連する1又はそれ以上の操作を電子文字列に適用することにより、電子文字列内のスペースをフォーマットするように構成される。
【0011】
比較機構は、サポートされている言語が識別された時にのみ、少なくとも1つのルールセットのうちの1つのルールセットの各ルールを電子文字列と比較するように構成されることが好ましい。
【0012】
フォーマットモジュールは複数の言語をサポートし、言語識別器は、サポートされている言語のうち、電子文字列が書かれている可能性が最も高い言語をさらに識別するように構成されることが好ましい。
【0013】
文字識別器は、句読点を識別するように構成することができ、フォーマットモジュールは、句読点に基づいて句読点の両側のスペースをフォーマットするように構成することができる。
【0014】
文字識別器は、電子文字列における特定の文脈を識別するように構成することができ、フォーマットモジュールは、文脈に基づいて電子文字列内のスペースをフォーマットするように構成することができる。
【0015】
文字識別器は、電子文字列における句読点を識別するように構成することができ、フォーマットモジュールは、句読点のカテゴリに基づいて、句読点の両側のスペースをフォーマットするように構成することができる。
【0016】
1又はそれ以上の操作は一連の操作を含むことができ、比較機構は、あるルールが適用可能であると判明した時に、電子文字列に一連の操作を適用するように構成される。
【0017】
フォーマットモジュールが複数の言語に対応するように構成されている場合、文字識別器は、1つのルールセットが各サポートされている言語のためのものである複数のルールセットを含むことが好ましく、比較機構は、最も可能性の高い言語に対応するルールセットの各ルールを電子文字列と比較するように構成される。
【0018】
フォーマットモジュールは、各言語に関連するルールセット、各言語族に関連するルールセット及び世界中の全ての言語に関連するルールセットを含むことができ、これらのルールは、サポートされている言語が識別されると、適用可能なルールが識別されるまで、又は適用可能なルールが識別されずに全てのルールが枯渇するまで、比較機構が、まず言語に固有のルールセットからの各ルールを比較し、次に言語が属する言語族に適用可能なルールセットからの各ルールを比較し、次に全ての言語に適用可能なルールセットの各ルールを比較するように階層構造で適用される。
【0019】
比較機構は、ルールを特定の所定の順序で比較するように構成されることが好ましい。ルールセットは、文脈ルール、文字ルール及びカテゴリルールを含むことが好ましく、比較機構は、適用可能なルールが識別されるまで、又は適用可能なルールが識別されずに全てのルールが枯渇するまで、文脈ルール、文字ルール、次にカテゴリルールの順番でルールを比較するように構成されることが好ましい。
【0020】
本発明の第2の態様では、少なくとも1つの言語に対応し、電子文字列内のスペースをフォーマットするように構成されたフォーマットモジュールを提供し、このフォーマットモジュールは、
電子文字列内の句読点を識別するように構成された句読点識別器を備え、
フォーマットモジュールは、サポートされている言語が識別されると、電子文字列が書かれている言語、識別された句読点、及び句読点の文脈に基づいて電子文字列内のスペースをフォーマットするように構成される。
【0021】
本発明の第3の態様では、電子装置にテキストを入力するためのシステムを提供し、このシステムは、
電子文字列を入力として受け取るように構成されるとともに、訂正された電子文字列を生成して出力するように構成されたテキスト予測エンジンと、
上述したフォーマットモジュールと、
を備え、フォーマットモジュールは、訂正された電子文字列を入力として受け取るとともに、サポートされている言語が識別されると、訂正された電子文字列内のスペースをフォーマットすることによってフォーマット済みの文字列を生成するように構成される。
【0022】
本発明の第4の態様では、電子装置にテキストを入力するためのシステムを提供し、このシステムは、
電子文字列を入力として受け取るように構成されたテキスト予測エンジンを備え、このテキスト予測エンジンは、
電子文字列が書かれている可能性が最も高い言語を識別し、該識別された言語に基づいて電子文字列を訂正するように構成された言語識別器を含み、
テキスト予測エンジンは、訂正された電子文字列を生成して出力するとともに、識別された言語を出力するように構成され、システムは、
少なくとも1つの言語をサポートし、識別された言語及び訂正された電子文字列を受け取るように構成されるとともに、識別された言語がサポートされている時に電子文字列内のスペースをフォーマットするように構成されたフォーマットモジュールをさらに備え、このフォーマットモジュールは、
電子文字列内の特定の文字又は特定の文字列を識別するように構成された文字識別器を含み、
フォーマットモジュールは、識別された言語及び識別された特定の文字又は特定の文字列に基づいて、電子文字列内のスペースをフォーマットするように構成される。
【0023】
本発明の第5の態様では、少なくとも1つの言語をサポートするとともに文字識別器を有するフォーマットモジュールを用いて、電子文字列内のスペースをフォーマットする方法を提供し、この方法は、
電子文字列が、フォーマットモジュールによってサポートされている言語で書かれているかどうかを識別するステップと、
文字識別器を用いて、電子文字列内の特定の文字又は特定の文字列を識別するステップと、
サポートされている言語が識別されると、フォーマットモジュールを用いて、識別された言語及び識別された特定の文字又は文字列に基づいて電子文字列内のスペースをフォーマットするステップと、
を含む。
【0024】
フォーマットモジュールは、電子文字列がフォーマットモジュールによってサポートされている言語で書かれているかどうかを識別するための言語識別器を備えることができる。フォーマットモジュールは複数の言語をサポートし、この方法は、言語識別器を用いて、電子文字列の最も可能性の高い言語を識別するステップをさらに含むことが好ましい。
【0025】
電子文字列の最も可能性の高い言語はテキスト予測エンジンによって識別することができ、この方法は、最も可能性の高い言語をフォーマットモジュールに送信し、このフォーマットモジュールが、この最も可能性の高い言語がフォーマットモジュールによってサポートされているかどうかを識別するステップをさらに含む。
【0026】
言語識別器は、各ルールが電子文字列内のスペースのフォーマットを定める少なくとも1つのルールセット及び比較機構を含むことが好ましく、この方法は、
文字列にルールが適用可能であるかどうかを識別するために、比較機構を用いて、少なくとも1つのルールセットのうちの1つのルールセットの各ルールを電子文字列と比較するステップと、
比較機構を用いて、文字列に特定のルールが適用可能であることを識別するステップと、
電子文字列に適用可能なルールを適用して電子文字列内のスペースをフォーマットするステップと、
をさらに含む。
【0027】
比較機構は、サポートされている言語が識別された時にのみ、少なくとも1つのルールセットのうちの1つのルールセットの各ルールを電子文字列と比較することが好ましい。
【0028】
各ルールは、識別すべき特定の文字又は文字列に関連することができ、各ルールは、サポートされている言語及び特定の文字又は文字列を所与として、フォーマットモジュールによって電子文字列に適用すべきスペースのフォーマットを記述する1又はそれ以上の操作に関連する。この方法では、適用可能なルールを適用するステップが、この適用可能なルールに関連する1又はそれ以上の操作を電子文字列に適用するステップを含むことが好ましい。
【0029】
特定の文字を識別するステップは、句読点を識別するステップを含むことができ、電子文字列内のスペースをフォーマットするステップは、句読点の形式に基づいて句読点の両側のスペースをフォーマットするステップを含むことができる。
【0030】
特定の文字列を識別するステップは、特定の文脈を識別するステップを含むことができ、電子文字列内のスペースをフォーマットするステップは、文脈に基づいてスペースをフォーマットするステップを含むことができる。
【0031】
特定の文字を識別するステップは、句読点を識別するステップを含むことができ、電子文字列内のスペースをフォーマットするステップは、句読点のカテゴリに基づいて句読点の両側のスペースをフォーマットするステップを含むことができる。
【0032】
各ルールが1又はそれ以上の操作に関連する場合、1又はそれ以上の操作は一連の操作を含むことができ、この一連の操作は、電子文字列に順に適用される。
【0033】
フォーマットモジュールが複数の言語をサポートしている場合、言語識別器は、1つのルールセットが各サポートされている言語のためのものである複数のルールセットを含むことができ、各ルールを電子文字列と比較するステップは、最も可能性の高い言語に対応するルールセットの各ルールを比較するステップを含む。
【0034】
フォーマットモジュールは、各サポートされている言語に関連するルールセット、各言語族に関連するルールセット及び世界中の全ての言語に関連するルールセットを含むことができ、この方法は、言語が識別されると、適用可能なルールが識別されるまで、又は適用可能なルールが識別されずに全てのルールが枯渇するまで、比較機構が、まず言語に固有のルールセットからの各ルールを比較し、次に言語が属する言語族に適用可能なルールセットからの各ルールを比較し、次に全ての言語に適用可能なルールセットの各ルールを比較するように階層構造でルールを適用するステップを含む。
【0035】
比較機構は、ルールを特定の所定の順序で比較することが好ましい。
【0036】
ルールセットは、文脈ルール、文字ルール及びカテゴリルールを含むことができ、この方法は、適用可能なルールが識別されるまで、又は適用可能なルールが識別されずに全てのルールが枯渇するまで、文脈ルール、文字ルール、次にカテゴリルールの順番でルールを比較するステップを含むことが好ましい。
【0037】
本発明の第6の態様では、上述した方法をプロセッサに実行させるためのコンピュータプログラム手段を記憶したコンピュータ可読媒体を含むコンピュータプログラム製品を提供する。
【0038】
以下の添付図面を参照しながら本発明を詳細に説明する。
【発明を実施するための形態】
【0040】
本発明は、特定の文章が書かれる言語の慣習に基づいて文章のスペースをフォーマットするように構成されたフォーマットモジュールを提供する。このフォーマットモジュールは、電子文字列内のスペースを挿入及び/又は削除することによってスペースをフォーマットする。
【0041】
必須ではないが、フォーマットモジュール10は、
図1に示すようなテキスト予測エンジン30を含む電子装置100などのシステムの一部であることが好ましい。この電子装置は、PDA、タブレット、ラップトップコンピュータ又は携帯電話機などのモバイル装置であることが好ましい。フォーマットモジュールは、ユーザがテキストメッセージとして入力した電子文字列内のスペースをフォーマットするために使用することができる。ユーザは、仮想キーボードなどの入力機構を介してテキストを入力することにより、電子装置100のテキスト入力システム50と相互作用する。予測テキスト入力システムの特定の事例では、テキスト予測エンジン30を、タイプミス又はスペルミスした単語を訂正するように構成するとともに、ユーザが次に何を書こうとしているかを予測するように構成することができ、従って装置に対するテキスト入力の性能及び品質を向上させることができる。このようなテキスト予測エンジン30の例は英国特許出願第2011/001419号に記載されており、この特許出願はその全体が引用により本明細書に組み入れられる。
【0042】
図1から分かるように、装置100に文字列が入力される。この文字列はテキスト予測エンジン30に渡され、このテキスト予測エンジン30が、この文字列を修正してスペルミスした単語を訂正し、及び/又は単語を予測することができる。テキスト予測エンジン30によってこのように修正された文字列はフォーマットモジュール10に渡される。フォーマットモジュール10は、
図1及び
図2に示すように、スペースをフォーマットしたバージョンの修正済み文字列を出力するように構成される。フォーマットモジュールは、文字列内のスペースを挿入及び/又は削除することによって文字列のスペースをフォーマットする。フォーマットモジュール10は、文字列が書かれている言語がフォーマットモジュール10によってサポートされている場合に、この文字列のスペースをフォーマットする。
【0043】
図2に、本発明によるフォーマットモジュール10を示す。フォーマットモジュール10は、少なくとも1つの言語をサポートするように構成される。フォーマットモジュール10は、電子文字列がフォーマットモジュール10によってサポートされている言語で書かれているかどうかを識別するように構成された言語識別器20を含む。言語識別器20は、電子文字列がフォーマットモジュール10によってサポートされている言語で書かれているかどうかを識別するために、当業で周知の一般的な特性を有する1又はそれ以上の統計的言語モデルを利用する。
【0044】
好ましい実施形態では、フォーマットモジュール10が複数の言語をサポートする。従って、好ましい実施形態では、言語識別器20が、各々がフォーマットモジュール10によってサポートされている異なる言語に対応する複数の統計的言語モデルを含み、言語識別器20は、サポートされている可能性が最も高い電子文字列の言語を識別するようにさらに構成される。いかなる段階においても、フォーマットモジュール10は、各々が言語モデルに関連する「活格言語」のリストを維持するように構成される。
【0045】
最も可能性の高い現在の言語を識別するための1つの処理は、ある文脈を所与として言語の確率を最大化し、すなわち以下の(ベイズのルールを用いた)式に従ってP(言語|文脈)を最大化することである。
【0046】
P(言語|文脈)の絶対値が重要でない時には、言語のランク付けのみが重要であるため、言語に依存しないP(文脈)の項は式から外すことができる。また、言語全体にわたる一様な事前確率であるP(言語)=kも、言語に対して一定であるので外すことができる。これらの仮定を行うと、言語識別器が推定に必要とする数量は、P(文脈|言語)のみである。通常、文脈は一連の単語にすぎず、従って言語識別器は、P(文脈|言語)を推定するために、条件付き確率推定の「チェーン」を用いて以下のような「マルコフ」の条件付き独立仮定を行うことが好ましい。
【0047】
従って、各言語は、局所的文脈を所与として単語の確率を推定することができる(国際公開第2012/042217号に記載されている当業で周知の)平滑化したnグラム言語モデルによって個別にモデル化される。
【0048】
構文情報及び/又は意味情報を含むような異なるタイプの言語モデル使用する他のP(文脈|言語)推定方法も存在する。別の可能性は、隠れマルコフモデル(HMM)を用いて観察されない言語「状態」の進行を推定することであろう。さらなる可能性は、例えばサポートベクターマシン(SVM)又はニューラルネットワークなどの監視下識別分類モデルを用いて言語を予測することであろう。
【0049】
言語識別器20は、入力文字列を一連の用語に変換するために、当業で周知のトークナイザを使用する。
【0050】
図1に示すようなシステムでは、言語識別器がフォーマットモジュール10内に提供されるのではなく、予測エンジン30が言語識別器を含むことができる。上述したように、言語識別器は、トークナイザ及び複数の言語モデルを含み、これらは、全体が引用により本明細書に組み入れられる国際公開第2012/042217号に記載される予測エンジンなどの予測エンジン内に既に存在している可能性がある。
【0051】
言語識別器20は、文脈を所与として最も可能性の高い言語を推定するために、サポートされている各言語での文脈の可能性を順に計算するように構成され、最も可能性の高い言語を選択する。文脈(一連の用語)の可能性は、先行する用語を所与とした各用語の確率の積であり、国際公開第2012/042217号のテキスト予測エンジンに関連して記載されているような平滑化したnグラムモデルによって計算される。
【0052】
ユーザがタイピング中に言語を切り換えた場合、句読点の前後のスペースのフォーマットは、例えば「Bonjour mon ami ! How are you doing? Talk to you soon.」のように、書かれた言語に応じて文章間で異なることができる。
【0053】
言語の変化を識別できるフォーマットモジュール10を提供するために、例えばユーザが文章間で言語を切り換えた場合、言語識別器20は、最も可能性の高い言語を推定するために使用される文脈の量を制限するように構成されることが好ましい。これにより、最も可能性の高い言語を識別するためのモデル内に近時性の基本形がもたらされ、すなわち文書内でより最近に使用された言語は、かなり前に使用された言語よりも直感的に可能性が高い。例えば、1つの実施形態では、言語識別器20が、文脈の6つの最新の単語を使用することができる。しかしながら、この文脈の最新の単語数は、ユーザが言語を切り換える頻度、及びいずれかの所与の言語におけるこれらの単語の入力ストリームの長さに応じて選択することができる。
【0054】
言語識別器20は、電子文字列が書かれている言語がフォーマットモジュール10によってサポートされているかどうかを識別するように構成されることが好ましい。非限定的な例として、言語識別器20は、各々がサポートされている言語に対応する言語識別器の言語モデルの1つに文字列の文脈用語が全く存在しない場合、この電子文字列がサポートされていない言語で書かれていると識別することができる。従って、言語モデルの1つに文脈用語のうちの1つ又はそれ以上が存在すると判定された場合、言語識別器は、この電子文字列がサポートされている言語で書かれていると判断する。この例に対する変形は、言語識別器20が、電子文字列がサポートされている言語で書かれていると判断するために、言語モデル内に特定の割合又は比率の文脈単語が存在するかどうか、例えば文脈用語の1/4、2/3、又はその他のいずれかの割合又は比率が言語モデルの1つに存在するかどうかを識別するように構成される例である。電子文字列の言語がサポートされているかどうかを判断するには、他のあらゆる好適な方法を使用することができる。
【0055】
図3に示すように、文字識別器40は、各ルールが識別すべき文字又は特定の文字列に関連するルールセット70と、ルールが適用可能であるかどうかを判断するために、ルールセット70の各ルールを電子文字列と比較するように構成された比較機構60とを含むことが好ましい。ルールが適用可能である場合、例えばルールが特定の句読点に関連するものであってこのルールを適用できると判明した場合、この句読点が電子文字列内に存在するという理由で文字又は特定の文字列が識別される。電子文字列は、例えば1回につき1つの文字のように順番にフォーマットモジュール10に渡されて、比較機構60が、受け取った最後の文字又は最後の文字列と各ルールを比較することが好ましい。
【0056】
従って、文字識別器40は、これらのルールを使用して、句読点などの特定の文字又は文字列が電子文字列内にいつ発生したかを識別する。さらに、これらのルールは、そのルールに関連する1又はそれ以上の操作により、電子文字列に適用すべきスペースフォーマット、すなわちスペースを挿入及び/又は削除すべきかどうかを定める。従って、あるルールが特定の文字又は文字列に適用可能であると判明すると、このルールに関連する操作が電子文字列に適用されて電子文字列内のスペースがフォーマットされ、例えば特定の文字が句読点である場合、この操作は、以下で詳細に説明するように句読点の両側のスペースのフォーマットを定めることができる。
【0057】
ルールセット70は、フォーマットモジュール10によってサポートされている各言語のための複数のルールセットを含むことが好ましい。比較機構60は、最もサポートされている可能性が高い言語として言語識別器2によって識別された言語に関するルールセットを比較するように構成される。言語識別器20が単一の言語をサポートする実施形態では、比較機構60が、その言語に対応する単一のルールセット70を含み、電子文字列の言語がサポートされている言語として識別された場合には、ルールセット70をこの電子文字列と比較するように構成される。文字列の言語がサポートされている言語として識別されなかった場合、比較機構60は適用可能なルールを探索しない。
【0058】
フォーマットモジュール10は、システム設計者が新たなルール及び関連操作をフォーマットモジュールに手動で追加できるように構成される。これらのルール及び関連操作は、フォーマットモジュールの他の構成要素に影響を与えることなく更新することができる。
【0059】
ルールは、Rule::(C、s、A、S)のように4タプルによって定められることが好ましい。
【0060】
::は、「のタイプを有する」と読むことができる演算子である。
【0061】
Cは、タイプF::[文字]→{真、偽}の関数を実行する正規表現の形を取り、例えば、入力文字列を受け入れて、ルールを適用可能であるかどうか、従ってそのルールに関連する一連の操作を適用すべきかどうかを示すブールを戻す条件文である。比較機構60は、タイプF::[文字]→{真、偽}の関数を実行することにより、電子文字列内の特定の文字又は文字列を識別する。従って、このフィールドは必須であり、決して空にはならない。
【0062】
sは、場合によってシステムが以前のルールの適用を「思い出す」ことを可能にする状態を表す。例えば、システムが状態を維持する必要がない時には、この状態を「None」にすることができ、或いは、例えば左括弧「(」と右括弧「)」のように、区切子が対で登場し、一方のみで存在することができない場合、この状態を「Open」又は「Close」にすることができる。
【0063】
Aは、一連の操作、すなわちA::[Action]である。特別な事例では、[ ]によって表される空のシーケンスとすることができる。操作は、特定の文字列の文脈を所与とした時に(例えば、数式の文脈において句読点が発見された場合に)フォーマットモジュール10が例えば句読点に適用すべきスペースフォーマットを記述できるようにする手段である。比較機構60によって電子文字列の句読点がルールの1つに一致すると判断された場合、このルールによって保持される各操作が好ましくは順に句読点に適用されて、句読点の両側のスペースの正しいフォーマットが確実になる。例えば、句読点がピリオドであれば、最も可能性の高い言語が英語である場合、この操作は、ピリオドの前のスペースを(このようなスペースが存在する場合)削除して、ピリオドの後ろにスペースを(このようなスペースが無い場合)挿入するものとすることができる。
【0064】
フォーマットモジュールは、タイプA及びタイプBという2つの操作タイプを含むことができる。
【0065】
タイプAの操作は、以下のように、文字列に作用してフォーマット済みの文字列を戻し、フォーマット以外によって文字列を変化させない関数である。
操作A::[文字]→[文字]
【0066】
例えば、「単語.単語」の場合→「単語. 単語」となる。
【0067】
タイプBの操作は、以下のように、ある文字列を所与として、この文字列を変化させることなくシステムの状態を表すコードを戻す関数である。
操作B::[文字]→新たな状態
【0068】
この新たな状態は、例えば「単語.」→「システムの遷移状態」のように、システムが、例えば次の文字を大文字にすべきか否かを定めるための遷移状態に入ることができる考えられる状態のいずれかである。
【0069】
Sは、「二次ルール」として知られている再帰的な一連のルール、すなわちS::[Rule]である。Ruleがいずれの二次ルールも記述していない場合、Sはφによって表される。二次ルールは、親ルールの操作が適用される前にチェックされ、この二次ルールによって記述されている因子に応じ、条件文Cのための別の挙動を可能にする。二次ルールのための入力は、親ルールのための入力と同じ電子文字列であるが、二次ルールのための条件文Cの焦点は、親ルールを誘発した文字に先行する文字列内の文字である。
【0070】
例えば、電子文字列が1回につき1つの文字のように順番にフォーマットモジュールに渡されるような好ましい実施形態では、比較機構が、受け取った最後の文字と各親ルールとを比較する。親ルールが適用可能であり、親ルールが少なくとも1つの二次ルールを含むと判明した場合、(条件文Cは、親ルールでは最後の文字に焦点を当て、二次ルールでは最後から二番目の文字に焦点を当てるので)比較機構は、少なくとも1つの二次ルールを文字列の最後から二番目の文字と比較する。
【0071】
以下、二次ルールの適用についてさらに詳細に説明する。二次ルールは必須ではないので、一般的なRuleの形態ではこのフィールドを省くことができる。
【0072】
フォーマットモジュール10を設計する際には、設計者がルールに関連する一連の操作を所定の操作候補の組から選択することができる。この一連の操作は、あらゆる順序及びあらゆる反復回数のあらゆる数の操作候補を含むことができる。上述したように、フォーマットモジュール10は、フォーマットモジュール10のシステム設計者が、関連する操作を手動で拡張して言語又はテキスト入力システムの要件に適応させることを可能にする。
【0073】
好ましい実施形態では、フォーマットモジュールが、文脈ルール、カテゴリルール及び文字ルールという、上述したルールの3つの特殊化を含む。この特殊化されたルールは、自然言語における句読点の使用法を得るための強力なツールを提供する。
【0074】
文脈ルールは、文脈ルール::(C、None、A、φ)という形のルールである。Cに存在する正規表現は文脈のみに適用され、この正規表現は、例えば「www」のように、電子文字列の文脈における特定の文字列に対応する。状態が「None」であるので、文脈ルールが状態を有すること又は維持することは決してない。文脈ルールは「二次ルール」を有していない。
【0075】
文脈ルールの例としては、例えば「
www.site.com」のように文脈内に「www」が存在する時に、区切子「.」のいずれの側にも自動的にスペースを挿入すべきではない旨を明記するURLのためのルールがある。
【0076】
従って、文脈ルールの例は、文脈ルール::(′www′、None、[DeleteSpaceBefore,DeleteSpaceAfter]、φ)となる。
【0077】
カテゴリルールは、カテゴリルール::(C、None、A、S)の形を取ることが好ましい。
このルールは、電子文字列内の文字のユニコードカテゴリをルールによって定められた一連のユニコードカテゴリ、例えば句読点のユニコードカテゴリと照合する。
【0078】
Cは、句読点のユニコードカテゴリを照合することに限定された正規表現である。従って、この種のルールは単一文字にのみ適用される。Sは、例えば、文脈ルール、文字ルール又はカテゴリルールなどの一連の二次ルールである。或いは、二次ルールが定義されていない場合には、このフィールドを空(φ)にすることができる。
【0079】
カテゴリルールの例は以下の通りである。
カテゴリルール::(′P′、None、[DeleteSpaceBefore,InsertSpaceAfter]、φ)、例えば「!」及び「?」は同じスペースを用いてフォーマットすべきであるため、Pは、「!」及び「?」を含むカテゴリなどの句読点のカテゴリに対応する。
【0080】
当業で周知のように、ユニコード規格内の文字は、これらの文字に関連する様々な範囲の特性を有する。これらの特性の1つは、文字が属するカテゴリである。カテゴリルールの条件文Cは、ユニコードカテゴリに関連することができる。文字の一般的カテゴリ値は、その主な使用に基づいて、その文字の基本的分類として機能する。この特性は、広く使用されているASCII文字の下位区分を、文字、数字、句読点及び記号、すなわち、より大きくより包括的なユニコード規格の範囲に適した状態を保つように構成されてさらに細分割される必要がある有用な分類に拡張する。
【0081】
各ユニコードコードポイントには、基準となる一般的カテゴリ値が割り当てられる。一般的カテゴリの各値には2文字の属性値エイリアスが与えられ、第1の文字が、メジャークラスに関する情報を与え、第2の文字が、そのメジャークラスのサブクラスを指定する。各クラスにおいて、「他(other)」というサブクラスは、メジャークラスの残りの文字を収集するにすぎない。例えば、「No」(数字、他)というサブクラスは、10進数又は文字ではないNumberクラスの全ての文字を含む。これらの文字は、同じメジャークラス内におけるこれらのメンバーシップ以外にはほとんど共通点を有していなくてもよい。
【0082】
文字ルールは、文字ルール::(C、s、A、S)の形を取ることが好ましい。このルールは、ルールによって定められた文字を電子文字列内の文字と照合する。従って、この種のルールでは、Cは単一文字しか含むことができない。Cは、電子文字列の文字と照合される単一文字から成る正規表現である。Cは、特定の関心文字のユニコードを定めることができ、このユニコードが電子文字列のユニコードと照合される。
【0083】
sは、None状態:{Open、Close、None}に加えて2つの新たな状態を定めることが好ましい。従って、sは、Open状態又はClose状態にあると考えられる曖昧な対のための操作を決定し、曖昧でない文字の状態は含まない。この定義により、1つの句読点に対して異なる状態を表す2つの異なる一連の操作が必要な場合、システムは、例えば英語の場合には以下の文章を正しくフォーマットするように2つのルールを定める。
And he said ″Goodbye″ and left. It was surprising.(そして彼は「さよなら」と言って去った。驚きであった。)
【0084】
この文章におけるスペースのフォーマットを定める文字ルールは以下の通りである。
ルール1→文字ルール::(′″′、Open、[InsertSpaceBefore,DeleteSpaceAfter]、φ)
ルール2→文字ルール::(′″′、Close、[DeleteSpaceBefore,InsertSpaceAfter]、φ)
ルール3→文字ルール::(′.′、None、[DeleteSpaceBefore,InsertSpaceAfter]、φ)
【0085】
Sは、文脈、カテゴリ又は文字という3つのルールタイプのいずれかを含むことができる一連の二次ルールである。また、Sはさらなるルールを定めることもできず、この場合、このフィールドはφで示される。
【0086】
次に、ルールの反復を説明するための例、特に二次ルールがどのように適用されるかを示す。フランス語では、例えば、
のように、感嘆符「!」又は疑問符「?」の両側にスペースが配置される。しかしながら、例えば、
のように、現在の感嘆符に別の感嘆符が先行する時は、このルールに例外が生じる。この状況にシステムが正しく対処するために、以下のように二次ルールを定めることができる。
ルール1→文字ルール::(′!′、None、[InsertSpaceBefore,InsertSpaceAfter]、[rule2])
ルール1→カテゴリルール::(′P′、None、[DeleteSpaceBefore,InsertSpaceAfter]、φ)
【0087】
この例では、Pは、現在の関心文字の前に生じる、ユニコード規格に従うカテゴリ句読点に関連し、例えば、フォーマットモジュール10が「?!」というシーケンス内の「!」を受け取った場合、Pは「?」を含むカテゴリである。上記の例では、ユーザが最初に「!」とタイプした時に、ルール1が発動される。ルール1の発動ルーチン内では、全ての二次ルールがチェックされるが一致は生じず、「!」に先行する句読点が存在しないので、フォーマットモジュール10によってルール1のデフォルト操作が適用される。その後に感嘆符が挿入されると、ユニコード規格によって「!」がカテゴリ句読点内に存在するので、二次ルールを適合させるためのステップによってルール2が発動され、ルール2に定められた操作が適用される。
【0088】
仮にルール2が存在しなかったとすると、このフォーマットは、
になる。従って、誤ったテキストフォーマットがもたらされる。
【0089】
所与の言語では、一般に電子文字列内のスペースを確実に正しくフォーマットするように定められた複数のルールを有する必要がある。フォーマットモジュール10が所与の言語のスペースのフォーマットパターンを簡潔に指定できるように、異なるルールタイプ、すなわち文脈、カテゴリ及び文字が優先方式を用いて適用されることが好ましい。
【0090】
以下、ルールタイプの適用に優先順位付けすることが好ましい理由を実証する2、3の例を示す。
【0091】
URLという特定の事例では、文脈内に「www」が存在する時には自動的にスペースを挿入すべきでない旨を定める文脈ルールと、ピリオド「.」の句読点が導入された時にはその後にスペースを挿入すべきである旨を示す文字ルールという2つのルールが存在すると仮定する。この状況では、最初に文字ルールが適用され、ユーザが「
www.site.com」と入力した場合、ピリオドのための文字ルールに優先権があるので、区切子からの結果は「www. site. com」になる。このようなURLを正しくフォーマットするには、文脈ルールの方が文字ルールよりも高い優先権を有するべきであり、従って最初に適用されるようにすべきである。
【0092】
別の例では、フォーマットモジュールが、数学カテゴリ内の全ての文字は数学文字の両側にスペースを有する旨を示す第1のカテゴリルールと、「−」(マイナス)という文字はハイフンとして使用される可能性が高いので、この文字はその両側にスペースを有さない旨を定める第2の文字ルールという2つのルールを含む。仮にユーザが「−」を挿入し、カテゴリルールの方が文字ルールよりも高く優先順位付けされている場合には、文字ルールが発動されることは決してない。従って、このシーケンスを正しくフォーマットするには、カテゴリルールよりも文字ルールの方を高く優先順位付けすべきである。
【0093】
優先順位付けされたルールが適用されると、比較機構60は、適用可能なルールの探索を中止する。しかしながら、上述したように、二次ルールセットの一部として異なるルールタイプを適用することもできる。
【0094】
従って、好ましい実施形態では、
図4に示すように、比較機構が、以下の優先順位決定構造に従って個々の言語のルールを比較するように構成され、フォーマットモジュールも、以下の優先順位決定構造に従って個々の言語のルールを適用するように構成される。
文脈ルール→文字ルール→カテゴリルール
【0095】
比較機構60は、この優先順位決定構造を実装するために、ルールタイプを識別するように構成されることが好ましい。比較機構60は、あらゆる好適な手段によってルールタイプを識別するように構成することができる。例えば、各ルールにそのルールタイプをラベル付けすることができ、この場合、比較機構60は、これらのルールを電子文字列と比較する前に、第1のルールタイプの全てのルールを識別してこれらのうちの1つが適用可能であるかを確認するように構成される。所与のタイプのルールをコンテナ内に配置し、比較機構60が所与のコンテナ内の全てのルールを比較してから次のコンテナに移るようにする。別の実施形態では、比較機構60が、異なるルールタイプを識別するためのコードを含むことができる。
【0096】
或いは、優先順位決定構造に従ってルール自体に順序付けし、例えば優先順位決定構造に従ってルール自体をリストすることができる。
【0097】
上記の説明から明らかなように、比較機構60は、ルールが適用可能であると判明した場合には優先順位決定構造を続行せず、例えば
www.site.comにカテゴリルールが適用可能であると判明した場合、比較機構60は適用可能なルールの探索を中止しているので、文字ルールの比較又は適用は行われない。そうでなければ、文脈ルールの後にこの文字ルールが適用された場合、上述したような「www. Site. Com」という誤ったフォーマットが生じてしまう。しかしながら、発動された文字ルールが以下の二次カテゴリルールを含む場合、適用されるルールは、例えばフォーマットモジュールが句読点の反復である「!!」に対処することなどの他のルールタイプの二次ルールを含むことができる。
ルール1→文字ルール::(′!′、None、[InsertSpaceBefore,InsertSpaceAfter]、[Rule2])
ルール2→カテゴリルール::(′P*′、None、[DeleteSpaceBefore,InsertSpaceAfter]、φ)
【0098】
ルールは、英語などの特定の言語、及びラテン語などのその言語が属する言語族に適用することも、或いは世界中の全ての言語に適用することもできる。句読点には、いくつかの言語に共通する複数の慣習が存在する。例えば、全ての言語においてURLは同じ形で書かれており、従ってこれらの言語は全て、これらの要素を正しくフォーマットするのに必要なルールを有していなければならない。
【0099】
フォーマットモジュール10が複数の言語をサポートする好ましい実施形態では、言語識別器20が、識別した言語を比較機構60に渡すように構成され、比較機構60が、このように識別された特定の言語を所与として、ルールセット70からの関連するルールを比較するように構成される。ルールセットは、同じルールが繰り返されることを避けるために、階層化構造で順序付けられることが好ましい。
【0100】
従って、比較機構60は、例えば上述したような文脈ルール→文字ルール→カテゴリルールなどのルール優先順位決定構造に従ってルールを比較するように構成されることに加え、以下のように一般性が高くなる特定の順序でルールを比較するようにさらに構成される。
言語固有のルール→言語族のルール→世界的ルール
【0101】
比較機構60は、ルールをこの順序で比較できるように、言語一般化ルール、すなわちルールが言語固有のルールであるか、言語族のルールであるか、それとも世界的ルールであるかを識別するように構成されることが好ましい。ルールタイプの優先順位決定構造を説明する際には、言語一般化ルールを認識するように比較機構60を符号化し、或いは言語一般化ルールのタイプを識別できるように各ルールにラベル付して、上述したようなコンテナを使用することができる。上述したように、代替例としては、ルールを一般化構造の形に順序付けることを挙げることができる。
【0102】
従って、比較機構60は、ルールタイプと、例えばフランス語に適用可能な文脈ルール(言語固有のルール)などの言語一般化ルールとを識別するように構成されることが好ましい。
【0103】
図5から分かるように、比較機構60は、あるルールが適用可能であると判明するまで上述した優先順位システムに従ってルールを比較し、すなわち、まず言語の一般性が高まる順序で全ての「文脈ルール」を比較し、例えばまず言語固有のルール、次に言語族のルール、そして世界的ルールといった順序で文脈ルールをチェックし、次に、次のルールタイプである文字ルールを言語の一般性が高まる順序で比較し、その後、あるルールが適用可能であると判明するまで同様にカテゴリルールを比較し、判明した時点で適用可能なルールの探索を中止する。或いは、比較機構60は、適用可能なルールが存在せずに全てのルールが枯渇したと判明するまで全てのルールを比較する。
【0104】
比較機構60は、各ルールを電子文字列内の各文字と順番に比較するように構成されることが好ましい。従って、比較機構60が、文字列のある文字に対してルールが適用可能であることを発見した場合、フォーマットモジュール10は、このルールを電子文字列に適用して電子文字列のスペースをフォーマットし、比較機構は、文字列内の次の文字とルールとの比較に移る。同様に、その文字に適用可能なルールが存在しないことが判明した場合にも、比較機構60は、電子文字列内の次の文字とルールとの比較に移る。
【0105】
以上から理解されるように、言語識別器20は、電子文字列が書かれている言語がサポートされているかどうか、及び好ましくはサポートされている可能性が最も高い言語はどれであるかを識別するように構成される。言語識別器20は、ユーザによって言語が切り換えられたかどうかを識別するために、ひいては比較機構60によって電子文字列と比較されているルールセットを変更するために、現在の言語を周期的に、例えば(電子文字列がトークナイザによって一連の用語又は単語に変換される場合には)用語毎に、又は例えば3つの用語毎に識別するように構成することができる。他のあらゆるチェック頻度を使用することができる。言語識別器20が、文字列の言語がフォーマットモジュール10によってサポートされていないと判断した場合、比較機構60は、適用可能なルールの探索を中止する。
【0106】
本発明によるフォーマットモジュール10、又はフォーマットモジュール10を含むシステム100は、動的自動句読法を実行する言語検出及びルール機構を提供する。同じ句読点であっても句読点が発生する文脈に応じて挙動が異なるという可能性を無視する既存のシステムとは異なり、本発明のフォーマットモジュール10は、句読点の文脈に基づいて句読点の両側のスペースをフォーマットすることができる。
【0107】
従って、本発明のフォーマットモジュール10は、目標言語に適した正しくフォーマットされた句読点を生成するのに必要な相互作用を低減することによってユーザの生産性を高めることができる。多言語ユーザの場合、フォーマットモジュール10は、スペースのフォーマットを現在入力されている言語に合わせて自動的に調整できることが好ましい。これにより、ユーザは、様々な目標言語に固有のフォーマットの慣習ではなく、配信されているメッセージに集中できるようになる。
【0108】
さらに、本発明のフォーマットモジュール10は、句読点のスペースをフォーマットする挙動を定める別個の層、すなわちルール及びその関連操作を提供する。これにより、他の言語のスペースフォーマットに影響を与えることなく、又はフォーマットモジュール10全体のアップグレードを必要とすることなく、特定の言語のためのルール及びその関連操作を個別に手動でアップデートして特定の言語のスペースフォーマットを変更することが可能になる。
【0109】
本発明は、好ましくはユーザによって入力された電子文字列内のスペースをフォーマットするための対応する方法も提供する。
図1、及び上述したフォーマットモジュール10、並びにフォーマットモジュール10を含むシステム100を参照すると、この方法は、電子文字列がフォーマットモジュールによってサポートされている言語で書かれているかどうかを識別するステップと、文字識別器40(
図2を参照)を用いて電子文字列内の特定の文字又は特定の文字列を識別するステップと、フォーマットモジュール10を用いて、サポートされている言語が識別された場合、この識別された言語、及び識別された特定の文字又は文字列に基づいて、電子文字列のスペースをフォーマットするステップとを含む。フォーマットモジュール10、及びフォーマットモジュール10を含むシステム100の説明から明らかなように、フォーマットモジュールは、複数の言語をサポートすることが好ましく、またフォーマットモジュール10の言語識別器20、又はシステム100の予測エンジン30の言語識別器によって、サポートされている可能性が最も高い言語を識別することができる。
【0110】
本発明の方法の他の態様は、上記のシステムの説明と同様に容易に判明することができる。例えば、フォーマットモジュールは、電子文字列がフォーマットモジュールによってサポートされている言語で書かれているかどうかを識別し、最も可能性が高い電子文字列の言語を識別するための言語識別器を含む。この方法は、フォーマットモジュールと同様に、比較機構10を用いて、この識別された最も可能性の高い言語などに対応するルールセットを選択するステップも含む。
【0111】
本発明は、本発明による方法をプロセッサに実行させるためのコンピュータプログラム命令を記憶するコンピュータ可読媒体を含むコンピュータプログラム製品も提供する。
【0112】
このコンピュータプログラム製品は、本発明による方法を外部プロセッサに、すなわち電子装置のプロセッサに実行させるためのコンピュータプログラム手段を記憶するデータキャリアとすることができる。このコンピュータプログラム製品は、例えばデータキャリア又は供給者からインターネット又はその他の利用可能なネットワークを介してダウンロードすることもでき、例えば、ダウンロードされた時点でコンピュータプログラム手段を実行するためのプロセッサを含む(携帯電話機などの)モバイル装置又はコンピュータにアプリケーションとしてダウンロードされる。
【0113】
本説明はほんの一例にすぎず、説明した実施形態には、特許請求の範囲に定める本発明の範囲から逸脱することなく変更又は修正を行うことができると理解されるであろう。