(57)【特許請求の範囲】
【請求項１】
電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから１又は複数の単語の候補を提案するためのコンピュータ実装方法であって、
ａ）前記入力ストリングの冒頭サブストリングと、前記単語のリストにおける各単語の冒頭サブストリングとの間の編集距離の値を受け付けるために、前記電子デバイスのメモリ内に配列を設ける段階と、
ｂ）前記編集距離の値を計算すべく、前記単語のリストにおける各単語を前記受け付けられた入力ストリングと比較する編集距離アルゴリズムを適用する段階と、
ｃ）前記単語のリストの１又は複数の単語について、それが、以前に検討された単語の接頭部と重複する文字数Ｋを決定することにより段階ｂ）を修正し、前記以前に検討された単語の前記Ｋ個の接頭文字についての前記編集距離の値の一部又は全部を使用して、検討中の前記単語のための前記メモリの配列に編集距離の値を保持する段階とを備え、
段階ｂ）は、一たび、受け付けられた入力ストリングにとっての予め定められた数の単語の候補が選択されると終了され、
前記方法はさらに、
ｄ）受け付けられた入力ストリングにとっての前記予め定められた数の単語の候補を前記電子デバイスの位置特定モジュールに入力する段階であって、前記位置特定モジュールは、受け付けられた入力ストリングにとっての前記予め定められた数の単語の候補を、数値的な位置座標に解決する、段階
を備える方法。
【請求項２】
前記配列は、キャッシュメモリに設けられる、請求項１に記載の方法。
【請求項３】
段階ｂ）は、文字を含まない空語又は空ストリングに適用される、請求項１又は２に記載の方法。
【請求項４】
段階ｂ）は、前記単語のリスト内のいくつかの単語であって、前記リストにおいて間隔を空けて配置されている、いくつかの単語に適用される、請求項１又は２に記載の方法。
【請求項５】
前記単語のリストは、順序付けられた単語のリストを含み、段階ｂ）は、前記順序付けられた単語のリストにおいて第１番目の単語に適用される、請求項１、３、又は４の何れか一項に記載の方法。
【請求項６】
単語の前記編集距離の値は、編集距離テーブルの形態で提供される、請求項１から５の何れか一項に記載の方法。
【請求項７】
前記保持する段階は、以前に検討された単語についての編集距離テーブルの最初のＫ＋１個の行又は列を、検討中の単語についての前記編集距離テーブルの前記最初のＫ＋１個の行又は列として保持する段階を含む、請求項６に記載の方法。
【請求項８】
段階ｃに続いて、前記編集距離アルゴリズムを使用して、前記単語のリスト内の各単語についての前記編集距離テーブルの更なる行を計算する段階ｄ）を更に備える、請求項６又は７に記載の方法。
【請求項９】
メモリ内に１つの配列だけを設ける段階を備える、請求項１から８の何れか一項に記載の方法。
【請求項１０】
前記編集距離アルゴリズムは、ワグナー‐フィッシャーアルゴリズムを含む、請求項１から９の何れか一項に記載の方法。
【請求項１１】
ワグナー‐フィッシャーアルゴリズムによって決定される標準的な値で、各編集距離テーブルの第１行及び第１列を予め割り当てる段階を更に備える、請求項６から８の何れか一項に記載の方法。
【請求項１２】
前記単語のリストが未だ順序付けられていない場合、
前記未だ順序付けられていない単語のリスト内の各単語と、前記未だ順序付けられていない単語のリスト内のその元の位置の指標を関連付ける段階と、
前記未だ順序付けられていない単語のリスト内の前記単語を、前記未だ順序付けられていない単語のリスト内のそれらの元の位置の、それらの関連付けられた指標を有する、順序付けられた単語のリストへと再配列する段階とを更に備える、請求項１から１１の何れか一項に記載の方法。
【請求項１３】
前記未だ順序付けられていない単語のリストの順序を再配列する前記段階は、アルファベット順に、及び、数値的に、のうち少なくとも何れかで、前記単語を配列する段階を含む、請求項１２に記載の方法。
【請求項１４】
前記方法は、前記リストの前記単語を、順序付けられた単語のリストへと順序付ける段階を備え、前記単語のリストの前記単語を順序付けられた単語のリストへと配列するプロセスは、オフラインで行われる、一回だけ行われる、又は、オフラインで一回だけ行われる、請求項１から１３の何れか一項に記載の方法。
【請求項１５】
メモリに設けられた前記配列の２次元のサイズは、予期される受け付けられた入力ストリング又は許容される入力ストリングより大きい、又はそれに等しい第１の次元と、前記単語のリスト内の最長単語の長さより大きい、又はそれに等しい第２の次元とを有する、請求項１から１４の何れか一項に記載の方法。
【請求項１６】
単語についての編集距離テーブルを計算する前記段階は、一たび、前記単語についての前記編集距離テーブルの所与の行における全てのエントリが閾値より大きいと決定されると終了される、請求項６から８、及び１１の何れか一項に記載の方法。
【請求項１７】
単語についての編集距離テーブルを計算する前記段階は、一たび、受け付けられた入力ストリングにとっての予め定められた数の単語の候補が選択されると終了される、請求項６から８、１１、及び１６の何れか一項に記載の方法。
【請求項１８】
受け付けられた入力ストリングにとっての前記予め定められた数の単語の候補は、優先度付きキューデータ構造を使用することによって選択される、請求項１７に記載の方法。
【請求項１９】
受け付けられた入力ストリングにとっての前記予め定められた数の単語の候補は、二分ヒープにおいて実装された優先度付きキューデータ構造を使用することによって選択される、請求項１７に記載の方法。
【請求項２０】
前記方法は、完全に前記電子デバイスにおいて実装される、請求項１から１９の何れか一項に記載の方法。
【請求項２１】
前記方法は、サーバベースの方法である、請求項１から１９の何れか一項に記載の方法。
【請求項２２】
電子デバイスであって、前記電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから１又は複数の単語の候補を提案するための、電子デバイスであって、
機械可読命令を格納するメモリと、
請求項１から２１の何れか一項に記載の方法の段階を実施すべく前記機械可読命令を実行するプロセッサとを備えるデバイス。
【請求項２３】
電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから１又は複数の単語の候補を提案するためのシステムであって、
機械可読命令を格納するメモリ、及び、前記機械可読命令を実行するプロセッサを有するサーバと、
機械可読命令を格納するメモリ、及び、前記機械可読命令を実行するプロセッサを有する電子デバイスとを備え、
前記サーバ及び前記電子デバイスは、ネットワークを通じて互いに通信し、
前記電子デバイスにおける受け付けられたストリングに基づいて前記電子デバイスによって前記サーバに送信された要求に応答して、前記サーバは、請求項１から１９の何れか一項に記載の方法の段階を実施する、システム。
【請求項２４】
請求項１から２１の何れか一項に記載の方法の段階を電子デバイスのプロセッサに実施させるためのプログラム。
【請求項２５】
請求項１から１９の何れか一項に記載の方法の段階をサーバのプロセッサに実施させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子デバイスにおいて受け付けられた入力ストリングの、考えられる置き換えとして単語の候補を提案するためのコンピュータ実装方法に関する。
【背景技術】
【０００２】
ユーザ入力を受け付けるよう適合された電子デバイスを使用する場合、ユーザが、単語又は他の入力データをミスタイプするかもしれない状況が多数ある。デバイスの中には、ユーザが入力中のテキストを修正する、又は当該テキストに対する修正を提案するために予測的なテキストシステムを利用するものがあるが、予測的なテキストシステムには多数の制約がある。他の場合では、ユーザは、テキストではない何か、又はテキストに加えて何かを入力中のこともあり、その結果、予測的なテキストシステムは、完全に関連性のあるものではないかもしれない。従って、ユーザが情報をやり取りしているシステムに、ユーザが入力したかもしれないものの置き換え又は修正の考えられる候補を決定する能力を提供するための余地がかなり残っている。 
【０００３】
出願人の、２０１４年４月１４日に出願された国際（ＰＣＴ）特許出願番号ＰＣＴ／ＧＢ２０１４／０５１１５２（出願人が先に開示したシステム）は、位置識別子を生成する方法を開示している。当該方法は、位置の地理座標を取得する段階と、地理座標を一意の単語群に変換する段階とを備える。複数の単語は、覚えやすい位置識別子として提供される。逆に、位置の地理座標を、その関連付けられた一意の単語群から特定することが可能である。 
【０００４】
しかしながら、ユーザは、単語ベースの位置識別子を、特に、これが受け付け後しばらくして入力される場合、ミスタイプし、及び／又は間違って記憶するかもしれず、それにより、解決不可能な単語ベースの位置識別子の入力、すなわち、容認できる入力として認識されない単語ベースの位置識別子の結果として、彼らはおそらく、誤った地理的位置の解決を受ける、又は、位置出力を全く受けないということになるという点で問題が生じることがある。この問題は、例えば、どの国に、又は適用可能ならば、どの都市に解決された地理的位置があるのか、又は近いのかを強調し、これにより、ユーザが、それが正しい又は期待される出力であるかどうかを判断でき、それにより、エラーが起こったかもしれないことをユーザに明らかにすることによって、ある程度までユーザインタフェース内で緩和され得る。
【０００５】
エラーを特定し、位置の正しい３語連鎖の考えられる候補を提案する上では、かなりの技術的困難がある。これらの困難は、限定はされないが、以下のものを含む。
（ｉ）必要な応答時間は、ユーザに効果的であるよう短くなくてはならないが、出願人が先に開示したシステムでは、ユーザが意図したかもしれない、考えられる３語の組み合わせが約５７兆個あり、最新のデスクトップパーソナルコンピュータにおいてですら、これらを一つずつスキャンするプロシージャはどれも実現可能でなく、ハンドヘルド又は携帯型の電子デバイスにおいてはなお一層実現可能ではない。
（ｉｉ）１つの選択肢を検討する場合、受け付けられた元の入力文字ストリング又はそのようなストリングの一部に対するその近接度をある程度のものにする必要がある。このプロシージャは、何度も、すなわち、ユーザが意図したかもしれない位置の各々について一回呼び出されるので、この場合も計算効率のよいことを必要とする。このプロセスのある部分又は全体は、多数の容認できる入力のどれが実際の入力に近い又は最も近いかを決定する際、それらの容認できる入力を含む辞書に対する実際の入力の類似度を比較する段階と、場合により、当該容認できる入力を、実際の入力に対するそれらの近接度の観点からランク付け又はスコア付けする段階とを含むことが多い。
（ｉｉｉ）当該方法は、メモリが限られていることが多いスマートフォン又はタブレットコンピュータ又は同様のものなどの携帯型又はハンドヘルドの電子デバイスにおいて動作するよう適合される必要があり、故に、当該方法は、できるだけ少ないメモリを利用する必要がある。 
【０００６】
［本発明の目的］
本発明の目的は、入力文字ストリングの予想される置き換えとして単語の候補を提案するためのシステムに関連する１又は複数の問題をある程度まで緩和又は除去することである。
【０００７】
上記の目的は、主クレームの特徴の組み合わせによって達成される。従属クレームは本発明の更に有益な実施形態を開示する。
【０００８】
本発明の別の目的は、出願人が先に開示したシステムに関連する１又は複数の問題をある程度まで緩和又は除去することである。
【０００９】
当業者ならば、以下の説明から、本発明の他の目的を導き出すであろう。従って、上記の目的の記述は、網羅的ではなく、単に本発明の多数の目的の一部を示す役割を果たす。
【発明の概要】
【００１０】
第１の主態様において、本発明は電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから１又は複数の単語の候補を提案するためのコンピュータ実装方法を提供する。当該方法は、ａ）入力ストリングの冒頭サブストリングと、単語のリスト内の単語の一部又は全部のセットにおける各単語の冒頭サブストリングとの間の編集距離の値を受け付けるために、メモリ内に配列を設ける段階と、ｂ）前述の編集距離の値を取得すべく、選択された単語を受け付けられた入力ストリングと比較する編集距離アルゴリズムを適用する段階と、ｃ）単語のセットの１又は複数の単語について、それが、以前に検討された単語の接頭部と重複する文字数Ｋを決定し、以前に検討された単語のＫ個の接頭文字についての編集距離の値の一部又は全部を使用して、検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階とを備える。段階ｂ）は、空語又は空ストリング""、すなわち、文字を含まない単語又はストリングに適用されるのが好ましい。当該配列は、キャッシュメモリに設けられてよい。なぜなら、それは、電子デバイス内の典型的なキャッシュメモリに収まるほど小さいからである。編集距離の値を受け付けるために、メモリに１つの配列だけが設けられるのが好ましい。単語の編集距離の値は、編集距離テーブルの形態で提供されてよい。検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階は、以前に検討された単語についての編集距離テーブルの最初のＫ＋１個の行又は列からの既に存在する編集距離の値を、検討中の単語の編集距離テーブルに保持する段階を含んでよい。最初のＫ＋１個の行又は列の編集距離の値は、再計算される必要はない。なぜなら、それらは、以前に検討された単語についてのテーブルから現在検討中の単語についてのテーブルへは変わらないままだからである。これは、検討中の単語についてのテーブルは、以前に検討された単語についてのテーブルを使用して、配列において用意されるということによる。当該方法において、段階ｂ）は、単語のセット内のいくつかの単語に適用されてよい。ここで、当該単語は、順序付けられたリストにおいて間隔を空けて配置されている。当該方法において、段階ｂ）は、空語に適用されるのが好ましい。当該方法において、段階ｃは、単語のセット内の各単語に適用されるのが好ましい。しかしながら、当該方法は、任意の順序の単語のセット内の単語に適用され得るものの、特定の順序の単語を検討する上で利点があることを理解されたい。一実施形態において、当該単語は、逆の順序で検討されてよいが、このこともまた、当該方法の実装に必須ではない。 
【００１１】
第２の主態様において、本発明は、電子デバイスであって、当該電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから１又は複数の単語の候補を提案するための、電子デバイスを提供する。当該デバイスは、機械可読命令を格納するメモリと、当該機械可読命令を実行して、本発明の第１の主態様に係る方法の段階を実施するよう構成されたプロセッサとを備える。当該電子デバイスは携帯型電子デバイスであるのが好ましが、デスクトップコンピュータなどのパーソナルコンピュータ（ＰＣ）を含んでよい。
【００１２】
第３の主態様において、本発明は、電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから１又は複数の単語の候補を提案するためのシステムを提供する。当該システムは、機械可読命令を格納するメモリ、及び当該機械可読命令を実行するよう構成されたプロセッサを有するサーバと、機械可読命令を格納するメモリ、及び当該機械可読命令を実行するよう構成されたプロセッサを有する電子デバイスとを備え、当該サーバ及び電子デバイスは、ネットワークを通じて互いに通信するよう構成され、デバイスにおける受け付けられたストリングに基づいて、電子デバイスによってサーバに送信された要求に応答して、サーバは本発明の第１の主態様に係る方法の段階を実施する。 
【００１３】
第４の主態様において、本発明は、本発明の第１の主態様に係る方法の段階を実施するための、電子デバイスのプロセッサによって実行可能な機械可読命令を格納するコンピュータ可読媒体を提供する。
【００１４】
第５の主態様において、本発明は、本発明の第１の主態様に係る方法の段階を実施するための、サーバのプロセッサによって実行可能な機械可読命令を格納するコンピュータ可読媒体を提供する。
【００１５】
本発明の概要は、必ずしも、本発明を定義するために必須の全ての特徴を開示しているわけではなく、本発明は、開示されている特徴の部分的組み合わせに在してよい。
【図面の簡単な説明】
【００１６】
本発明の上記の特徴及び更なる特徴が、次の添付の図面に関連してほんの一例として提供されている以下の好適な実施形態の説明から明らかになる。
【図１】編集距離テーブルの例を示す。
【図２】本発明に係るシステムの例の図である。
【図３】図２のシステムにおいて使用されるユーザデバイスの例の図である。
【図４ａ】本発明の方法を示す一連の編集距離テーブルの１つである。
【図４ｂ】本発明の方法を示す一連の編集距離テーブルの１つである。
【図４ｃ】本発明の方法を示す一連の編集距離テーブルの１つである。
【発明を実施するための形態】
【００１７】
以下の説明は、好適な実施形態をほんの一例として、かつ、本発明を実行に移すために必要な特徴の組み合わせに限定することなく説明するものである。
【００１８】
本明細書における「一実施形態」又は「実施形態」に関する言及は、当該実施形態に関連して説明される特定の特徴、構造、又は特性が、本発明の少なくとも１つの実施形態に含まれることを意味している。本明細書の様々な箇所における「一実施形態において」という文言の出現は、必ずしも全てが同じ実施形態を指すわけではなく、他の実施形態を互いに排除する別個の又は代替の実施形態であるわけでもない。更に、いくつかの実施形態によって示され得、他の実施形態によっては示され得ない様々な特徴が説明される。同様に、いくつかの実施形態の要件であり得、他の実施形態の要件ではあり得ない様々な要件が説明される。
【００１９】
図に示される要素は、様々な形態のハードウェア、ソフトウェア、又はそれらの組み合わせで実装されてよいことを理解されたい。これらの要素は、プロセッサ、メモリ、及び入出力インタフェースを含んでよい１又は複数の適切にプログラムされた汎用デバイスにおいて、ハードウェアとソフトウェアとの組み合わせで実装されるのが好ましい。
【００２０】
本説明は、本発明の原理を示している。故に、当業者ならば、本発明の原理を具現化し、その主旨及び範囲内に含まれる様々な構成を、本明細書においては明示的に説明も示されもしていないが、案出できることが理解される。
【００２１】
更に、本明細書において本発明の原理、態様、及び実施形態、並びにそれらの特定の例を記載する全ての記述は、それらの構造的等価物及び機能的等価物の両方を包含するよう意図されている。加えて、そのような等価物は、現在知られている等価物、及び将来開発される等価物、すなわち、構造を問わず、同一の機能を実行する開発されるあらゆる要素、の両方を含むことが意図されている。
【００２２】
本明細書の特許請求の範囲において、特定の機能を実行するための手段として表わされる任意の要素は、その機能を実行する何れかのやり方を包含するよう意図されている。そのやり方は、例えば、ａ）その機能を実行する回路素子の組み合わせ、又は、ｂ）任意の形態のソフトウェアであって、従って、ファームウェア、マイクロコード又は同様のものを含み、当該ソフトウェアを実行してその機能を実行するための適切な回路と組み合わせられた、任意の形態のソフトウェアを含む。そのような特許請求の範囲によって定義される本発明は、記載した様々な手段によって提供された機能が、特許請求の範囲が必要とする態様で組み合わせられ、まとめられるという事実に在する。故に、それらの機能を提供できるあらゆる手段は、本明細書において示されるものと等価であると見なされる。 
【００２３】
受け付けられた入力ストリング、例えば単語、の目標単語への近接度の標準的な大きさは、'編集距離'群の任意の１つのものによって与えられる。周知の例は、それら２つの間のレーベンシュタイン距離であり、当該レーベンシュタイン距離は、前者を後者に変形するのに必要な文字の挿入、削除、及び置換（総括して、操作）の最小数を数える。変形は、２つの隣接する文字の転置の操作を含む。別の変形は、レーベンシュタイン距離への重みの導入を含む。挿入、削除、置換、及び（適用可能な場合は）転置の各々には、'重み'又は'コスト'が割り当てられ、重み付き編集距離は、適切な変形を実行する一連の操作の最小合計コストとして定義される。この変形の部分変形は、置換のコストが、置換する文字及び置換される文字に依存することを可能にする。例えば、標準的なキーボード上でタイピングするユーザによって生成されたエラーを修正するよう試みる場合、キーボード上で近接する文字を含む置換にはより低いコストが割り当てられてよい。上記の変形の全ては、ユーザ入力の予測を含む、多くの適用におけるより良好な類似度の大きさである編集距離の値を生じる。
【００２４】
２つのストリングの間の編集距離を計算する従来の方法の1つは、ワグナー‐フィッシャー（Ｗａｇｎｅｒ−Ｆｉｓｃｈｅｒ）アルゴリズムである。このアルゴリズムは、上述の変形の何れにも対処するよう適合され得る。基本的に、ワグナー‐フィッシャーアルゴリズムは、第１のストリングの全ての冒頭サブストリングから、第２のストリングの全ての冒頭サブストリングまでの編集距離を含むテーブルの構築に在する。冒頭サブストリングは、元のストリングの始まりと完全に一致するストリングである。故に、'ｈｅｒｅ'は、'ｔｈｅｒｅ'のサブストリングではあるが、冒頭サブストリングではない。一方、'ｔｈｅ'は、'ｔｈｅｒｅ'それ自体であるように、'ｔｈｅｒｅ'の冒頭サブストリングである。空ストリング""は、全てのストリングの冒頭サブストリングを備える。
【００２５】
図１を参照すると、示されているのは、受け付けられた入力ストリングと、目標の又は意図された入力ストリングとを含むと見なされてよい２つのストリングについての編集距離テーブルの例である。本明細書においては、ミスタイプされた入力ストリングについて言及されるが、そのようなミスタイプされた入力ストリングは、つづりの、構文の、又は文法の誤りを含むと仮定されるべきではないということは注目に値する。それらは、一見正しい入力であるように思われ得るが、使用するとき、それらが入力されている意図されるアプリケーション又はプロセスにとって誤った又は誤りのある入力を含み得る。 
【００２６】
図１において、テーブルは、元のストリング"ａｎ  ａｃｔ"から目標ストリング"ａ  ｃａｔ"までの（転置を有する）重み付けのないレーベンシュタイン距離の計算を示している。図１のテーブルは、ｈｔｔｐ：／／ｓｃａｒｃｉｔｙｃｏｍｐｕｔｉｎｇ．ｂｌｏｇｓｐｏｔ．ｃｏ．ｕｋ／２０１３／０４／ｄａｍｅｒａｕ−ｌｅｖｅｎｓｈｔｅｉｎ−ｅｄｉｔ−ｄｉｓｔａｎｃｅ．ｈｔｍｌにおいてアクセス可能な掲載物"Ｃｏｍｐｕｔｉｎｇ  ｉｎ  ｔｈｅ  Ａｇｅ  ｏｆ  Ｓｃａｒｃｉｔｙ  ｂｙ  Ｊａｍｅｓ  Ｍ．  Ｊｅｎｓｅｎ  ＩＩ"において見つけられる。２０と記されたセルは、ストリング内のスペースを考慮に入れた"ａｎ"から"ａ"までの距離を提供し、１に等しい。なぜなら、当該変形は、１つの文字、すなわち'ｎ'を削除することによって実行され得るからである。３０と記されたセルは、"ａｎ  ａｃ"から"ａ  ｃａ"までの距離を提供し、２に等しい。なぜなら、当該変形は、'ｎ'を削除し、'ａｃ'を'ｃａ'に転置することによって実行され得るからである。４０と記されたセルは、"ａｎ  ａｃｔ"から"ａ  ｃａｔ"までの距離、すなわち、本例で要求される実際の編集距離を提供し、２に等しい。なぜなら、当該変形は、'ｎ'を削除し、'ａｃ'から'ｃａ'へ転置することによって実行され得るからである。右下側のセルの値４０は、従って、入力ストリングの目標ストリングへの近接度の編集距離の大きさ又は値を含む。
【００２７】
そのような編集距離テーブルにおいて、最上行は常に、値、０，１，２，...を順に含むことに留意されたい。なぜなら、長さｋの元のストリングの冒頭サブストリングを（長さ０の目標ストリングの冒頭サブストリングである）空ストリング""に変える唯一の方法は、ｋ回の削除を実行することによるからである。削除がコストｄを有する重み付きの場合では、最上行は、０，ｄ，２ｄ，３ｄ，...を順に含むだろう。同様に、左端の列は常に、値、０，１，２，...を順に含む。なぜなら、""を長さｋのサブストリングに変える唯一の方法は、ｋ回の挿入を実行することによるからである。挿入がコストｉを有する重み付きの場合では、左端の列は、０，ｉ，２ｉ，３ｉ，...を順に含むだろう。
【００２８】
通常の重み付きの場合では、ｄ（ｒ，ｃ）が、長さｒの元のストリングの冒頭サブストリングから、長さｃの目標ストリングの冒頭サブストリングまでの編集距離として示される場合、以下のようになる。
ｄ（０，ｃ）＝ｃｉ、式中、ｉは挿入コストである。
ｄ（ｒ，０）＝ｒｄ、式中、ｄは削除コストである。
【００２９】
転置のない場合では、他の全てのセルは、次式を使用して計算され得る。
【数１】
0006702589.tif 000002
式中、ｓ［ｒ−１，ｃ−１］は、ｒ番目の元の文字をｃ番目の目標文字で置換するコストである。文字が等しい場合、これは'０'でなくてはならず、その結果、通常求められる特性である、ストリングからそれ自体までの編集距離もまた０であるということが確保されることに留意されたい。この'ｍｉｎ'の中の３式のそれぞれは、編集距離を導き出すのに使用され得る操作のうちの１つに対応している。例えば、第１式のｄ＋ｄ（ｒ−１，ｃ）は、以下の段階によって、元のストリングを目標ストリングに変形する方法を指している。
ａ）最後の文字を削除する段階、次に、
ｂ）結果として得られた長さｒ−１の元のストリングの冒頭サブストリングであるストリングを（長さｃを有する）目標ストリングで置き換える段階。 
【００３０】
故に、テーブルの全てのセルの値は、それらの上及び／又は左のセルの値に基づいて計算される。ワグナー‐フィッシャーアルゴリズムは単に、上から下、左から右に順に全てのセルの値を計算することからなる。テーブルの右下のエントリが、要求される実際の編集距離の値を与える。 
【００３１】
本発明は、しかしながら、２つのストリングの間の編集距離を見つけることだけでなく、受け付けられた入力ストリングからの低い編集距離を有する、固定辞書内の単語の候補を見つけるという問題にも関する。 
【００３２】
これを計算する従来のやり方は、辞書内の全ての単語にわたる繰り返しを含む。各辞書語について、受け付けられた入力ストリングと辞書語との間の編集距離は、例えば、ワグナー‐フィッシャーアルゴリズムを使用して計算される。受け付けられた入力ストリングからの最も低い編集距離を有する辞書語が、単語の候補として選択される。
【００３３】
この従来の方法の基本前提は、受け付けられた入力ストリングと比較して、辞書内の各単語を順番に検討することが必要であるということだが、例えば３０，０００から８０，０００語の辞書において、全ての単語が考えられる候補であると考えて、各ミススペルについて辞書全体を調べるのは現実的ではない。
【００３４】
従来の方法に対する代替又は改善は、'トライを使用する高速かつ簡単なレーベンシュタイン距離（Ｆａｓｔ  ａｎｄ  Ｅａｓｙ  Ｌｅｖｅｎｓｈｔｅｉｎ  ｄｉｓｔａｎｃｅ  ｕｓｉｎｇ  ａ  Ｔｒｉｅ）'を含む。この改善された手法は、トライと称されるデータ構造を構築する。トライでは、２又はそれより多くの単語の共通の接頭部が１つのノードで明示的に表されている。次に、当該手法は、トライ構造を使用して当該構造を再帰的にトラバースし、２つの単語が共通の接頭部を共有する場合、関連するテーブル行は厳密に一回計算されることを確保する。しかしながら、本手法にはかなりの技術的困難がある。特に、トライは莫大な量のメモリを消費し、それがあまりにも莫大なため、３２ビットのオペレーティングシステムによって課される２ＧＢから４ＧＢの制限に適合すらしないこともある。
【００３５】
このように大量のメモリの利用は明らかに望ましくなく、実際に、多くのハンドヘルド又は携帯型の電子デバイスにおいては実現可能ですらない。それはまた、即座に明らかにはなり得ない欠点をもたらす。最新のコンピュータにおいて、メモリから値をフェッチするためにかかる時間は、プロセッサが原始的な計算を行うのにかかる時間を大きく超える。この影響は、'キャッシュ'と称される迅速にアクセス可能な非常に少量のメモリを有することによって緩和される。当該システムは、関連データがプロセッサによって要求される前に、主メモリから当該データをキャッシュに予めロードしようとヒューリスティックに試みる。これに失敗した場合、かなりの減速をもたらす。実際に、この状況は、プロセッサが典型的に、最も速いレベルのものが最小のメモリ容量を有する２つ又は３つのレベルの'キャッシュ'を有するという点でわずかに簡略化し過ぎたものになっている。最小キャッシュは典型的には、約３２ｋＢのサイズを有し、最大キャッシュは、ＰＣでは約８ＭＢ、及びタブレットコンピュータ又は同様のものでは約１ＭＢである。
【００３６】
キャッシュミスが確実に回避され得る状況が２つある。第１の状況は、検討される必要があるデータの全てがキャッシュに収まる場合であり、利用されるキャッシュが小さければ小さいほど、プログラムはより速くなる。第２の状況は、大量のデータがアクセスされているが、当該データは順次アクセスされている場合である。このアクセスパターンはごく一般的かつ極めて予測可能なので、システムは通常難なくそれを認識し、プロセッサによってデータを要求される前に、それをキャッシュに予めロードする。 
【００３７】
トライデータ構造の場合、それが２ＧＢから４ＧＢの制限に適合することすらないかもしれないという事実は、それが完全にキャッシュに収まることはないということを極めて明らかにする。更に、トライデータ構造は、多数のノードから築き上げられ、当該多数のノードは通常、メモリ内で互いに遠く離れて位置している。システムがトライをトラバースするとき、システムは通常、順次アクセスとは非常にかけ離れたメモリアクセスパターンでノードからノードへジャンプする。この結果は、かなりの数の不経済な、すなわち遅い、キャッシュミスをもたらす。
【００３８】
上記において概説された改善された方法の第２の主な欠点は、それがトライの新しいノードに到達するたびに、テーブルの新たな行を（メモリから）'割り当てる'ことである。メモリ割り当てと、それに関連付けられなくてはならない暗黙的又は明示的な割り当て解除とは、検討中のアルゴリズムの文脈においては遅い操作である。更に、メモリ割り当ては通常、割り当てられたオブジェクトがメモリのどこに存在するかについて何の保証も与えず、これにより、トライベースの手法においては、テーブル行はメモリ内で広く離散した場所にあることもある。これは更にキャッシュ性能を低下させる、すなわち、キャッシュミス率がより高くなる。
【００３９】
第３の欠点は、トライデータ構造は、構築に大量の時間を要求し、これにより、アプリケーションのスタートアップが遅くなる。このことは、多くのシステム、特に移動中に使用されるハンドヘルドのシステム又はデバイスにとって望ましくない。
【００４０】
第４の欠点は、トライベースの手法が、末尾呼び出し最適化に適さない形態の反復を使用することである。これは、かなりの時間と空間オーバーヘッドとを含むことで知られている。
【００４１】
より低いメモリ使用量を有する改善された従来の方法の他の変形物においてですら、メモリ使用量は依然として高く、ほとんどの場合、構築されたデータ構造が完全にキャッシュに収まることはない。データ構造の部分部分は、離して割り当てられ、故に、メモリ内に広くばらまかれ、これにより、メモリアクセスは順次的でなくなる。故に、当該手法は多数のキャッシュミスを生じる。テーブル行を離して割り当てることに起因する当該問題は、本手法の下でもまた変わらない。また、遅いスタートアップと反復とに関連する問題も依然残る。
【００４２】
本発明は、上記問題に対する新しい解決策を提案した。当該解決策は、当該方法が、携帯型若しくはハンドヘルドの電子デバイス、又はデスクトップＰＣなどの電子デバイスにおいて、高速かつ計算効率的な態様で完全に実装されることを可能にする。
【００４３】
再び図、特に、図２及び図３を参照すると、本発明のシステム１は、いくつかのユーザデバイス２及びセントラルサーバ３を備える。ユーザデバイス２は、スマートフォン、タブレットコンピュータ、又は同様のものなどのハンドヘルド及び／又は携帯型の電子デバイス２ａ、及び／又はパーソナルコンピュータ（ＰＣ）２ｂを含む。ユーザデバイス２の各々は、インターネット４などのネットワークを通じてセントラルサーバ３と通信可能であるが、このことは、本発明の方法が電子デバイス２ａ又はＰＣ２ｂにおいて完全に実行される場合には必須ではない。そのような場合では、電子デバイス２は、ネットワークに接続される必要はない。明確にするために、図１では３つだけの電子デバイス２ａと、１つのＰＣ２ｂとが示されているが、実際には、システム１は多数の電子デバイス２を含んでよいことが理解されるであろう。しかし、本発明の方法が１つの電子処理デバイス２において実装されてよいときは、このこともまた必須ではない。
【００４４】
図２は、システム１の電子デバイス２ａの例を更に詳細に示している。図２に示されるように、電子デバイス２ａは、データプロセッサ１０、視覚ディスプレイ１１、ユーザ命令がデバイス２ａに入力され、情報がユーザに提示及び／又は表示されることを可能にするユーザインタフェース１２、スピーカ１３、及びマイク１４を含む。電子デバイス２ａの様々なコンポーネントは、メモリに格納された機械語を実行するプロセッサ１０の制御のもと動作する。当該メモリはまた、キャッシュメモリを含む。ユーザインタフェース１２は、タッチスクリーンディスプレイとして視覚ディスプレイと統合されてよい。他の例では、ユーザインタフェース１２は、視覚ディスプレイから切り離された専用のキーパッドであってよい。これらのコンポーネントを含む電子デバイスは当業者には周知であるので、これらはここで詳細に説明される必要はない。ユーザＰＣ２ｂが類似の機能を有することが理解されるであろう。
【００４５】
更に、電子デバイス２ａは、位置決定手段１５、マッピング又はナビゲーションモジュール１６、及び位置特定モジュール１１を備えてよい。ナビゲーションモジュール１６及び位置特定モジュール１７は、位置決定手段１５から位置情報を受けるよう構成されている。示された例において、位置決定手段１５は、いわゆるＧＰＳなどのグローバルポジショニングシステムである。他の例では、種々の衛星利用ナビゲーションシステムが使用されてよい。ナビゲーションモジュール１６及び位置特定モジュール１７は、専用のハードウェアを備えてよい、又は、電子デバイス２ａのプロセッサ１０において動作するソフトウェアプログラム又はアプリケーションを備えてよい。いくつかの例では、ユーザＰＣ２ｂは、位置決定手段１５を備えなくてよい。いくつかの例では、位置決定手段を備えないユーザＰＣ２ｂは、依然として、電子デバイス２ａの位置決定手段などの別個の位置決定手段から位置情報にアクセスしてよい。
【００４６】
位置特定モジュール１７は、位置決定手段１５によって提供された位置情報を使用して位置ベースのサービスをユーザに提供する。
【００４７】
一般的に言えば、電子デバイス２ａ又はＰＣ２ｂは、一実施形態において、デバイスそれ自体の位置、又は、ユーザによって選択された位置の地理座標をマッピング又はナビゲーションモジュール１６において決定するよう構成されている。これらの数値座標は、次に、電子デバイス２ａ若しくはＰＣ２ｂそれ自体において、又は、出願人の国際（ＰＣＴ）特許出願番号ＰＣＴ／ＧＢ２０１４／０５１１５２に開示されている態様でサーバ３を用いて、若しくは任意の他の適切なそのようなシステムを用いて、単語ベースの一意の位置識別子に解決され得る。
【００４８】
本明細書において開示される方法は、しかしながら、単語ベースの地理的位置識別子に限定されるのではなく、容認できる単語の辞書又はデータストアを有するデバイス又はシステムにおいて任意の入力文字ストリングに対して使用され得る。本発明の文脈において、用語'単語'は、自然言語の単語だけを含むように解釈されるのではなく、任意の入力された文字の、アルファベットの、数字の、又はその他のストリングを含んでよい。当該任意の入力されたストリングは、'単語'、例えば、デバイス又はシステムの辞書又はデータストアの容認できる又は予め定義された文字ストリングのエントリを含む若しくはそれに一致する、又は、辞書又はデータストアの何れかのそのような単語エントリを含む若しくはそれに一致するよう意図されている。
【００４９】
同じ又は別の実施形態において、単独の電子デバイス２ａ若しくはＰＣ２ｂ、又は、サーバ３と通信する電子デバイス２ａ若しくはＰＣ２ｂは、複数語文字ストリングであることが好ましい受け付けられた文字の入力ストリングを地理的位置座標のセットなどの関連付けられた側面に解決するよう構成されている。位置ではないものに基づくいくつかの実施形態では、受け付けられた文字の入力ストリングは、検索クエリ又は製品識別子、例えば、バーコード番号又は同様のものなどの関連付けられた側面に解決される。
【００５０】
より具体的には、及び、以下の説明からより明らかになるように、本発明の方法は、電子デバイス２において受け付けられた入力ストリングに基づいて、単語のリストから１又は複数の単語の候補を提案するためのコンピュータ実装方法を備える。当該方法は、ａ）入力ストリングの冒頭サブストリングと、単語のリスト内の単語の一部又は全部のセットにおける各単語の冒頭サブストリングとの間の編集距離の値を受け付けるために、メモリ内に配列を設ける段階と、ｂ）前述の編集距離の値を取得すべく、単語のセット内であってもなくてもよく、（０個の文字からなる）空語であってもなくてもよい選択された単語を、受け付けられた入力ストリングと比較する編集距離アルゴリズムを適用する段階と、ｃ）単語のセットの１又は複数の単語について、それが、以前に検討された単語の接頭部と重複する文字数Ｋを決定し、以前に検討された単語のＫ個の接頭文字についての編集距離の値の一部又は全部を使用して、検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階とを備える。段階ｂ）は、文字を有さない空語又は空ストリング""に適用されてよい。なぜなら、このことが、編集距離の値の計算が初期化されることを可能にするからである。当該配列は、キャッシュメモリに設けられてよい。なぜなら、それは、電子デバイス内の典型的なキャッシュメモリに収まるほど小さいからである。編集距離の値を受け付けるために、メモリに１つの配列だけが設けられるのが好ましい。単語の編集距離の値は、編集距離テーブルの形態で提供されてよい。検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階は、以前に検討された単語についての編集距離テーブルの最初のＫ＋１個の行又は列からの既に存在する編集距離の値を、検討中の単語の編集距離テーブルに保持する段階を含んでよい。最初のＫ＋１個の行又は列の編集距離の値は変わらないままなので、再計算される必要はない。単語のリストは、当該リストの各単語と、その先行する単語との間の重複量を増やす、又は最適化するよう構成された順序付けられた単語のリストを含むのが好ましい。当該方法において、段階ｂ）は、単語のセット内のいくつかの単語に適用されてよい。ここで、当該単語は、順序付けられたリストにおいて間隔を空けて配置されている。当該方法において、段階ｂ）は、順序付けられた単語のリストにおいて最も早くに現れる、選択された単語のセットの第１番目の単語に適用されてよい。当該方法において、段階ｃは、単語のセット内の各単語に順に適用されるのが好ましい。単語が任意の特定の順序で検討されることは当該方法の実装にとって必須ではないが、このことは利点をもたらす。単語は、恣意的な順序を含む任意の順序で検討されてよい。
【００５１】
以下の説明において、'単語'について、又は'単語のリスト'について言及する。しかし、この文脈における用語'単語'は、電子デバイスへの任意の受け付けられた入力ストリングを含み得、'単語のリスト'は、任意の単語のリストを含み得ることが理解されるであろう。第１の、一回だけの、好ましくはオフラインの段階において、単語のリストは、アルファベット順に、及び／又は数値的に、及び／又は何らかの予め定義された順序付けスキームによって、ソートされる又は順序付けられる。順序付けの目的は、リスト内の各単語とその次の単語との間の平均重複量をできるだけ多くする、すなわち増やすことである。つまり、ソート後、リスト内の各単語は、その直前の１又は複数の単語と長い接頭部を共有するという傾向が非常に強い。 
【００５２】
単語のリストの並べ替えは好ましくはオフラインで行われ、故に、一回行われれば十分なので、本発明の方法を具現化するプログラムの任意のインスタンシエーションは、ソートされていない単語のリストではなく順序付けられた単語のリストと共に分配されるのが好ましい。単語のリストが、いくつかのアプリケーションについて未だ順序付けられていない場合では、元のソートされていない単語のリスト内の単語の位置は、関心のある、又は有用なままであってよい。この場合、ソートされていないリスト内の各単語は、ソートが実行される前のその位置を示す数値又は別の識別子と、それらの元の位置の指標と共に列挙された順序付けられた数値とでタグ付けされてよい。
【００５３】
受け付けられた入力ストリングについての単語のリスト内の単語の一部又は全部のセットについての、好ましくは編集距離テーブルの形態で提供された編集距離の値を処理すべく、単語のセットの各々についての編集距離を計算するのに要求されるテーブルの全てを格納するために、メモリ内に１つの配列を設ける。本発明の予期せぬ利点は、１つの配列が、キャッシュメモリ内に収容されるのに十分小さいということである。
【００５４】
単語のセットの各単語について、ワグナー‐フィッシャーアルゴリズムなどの編集距離アルゴリズムが適用されて、関連する編集距離テーブルが構築される。このことは、単語のセット内の第１番目の単語、例えば、単語のリストの第１番目の単語、を検討しない場合、処理中の単語のリストからの単語が以前に検討された単語と重複する最大文字数Ｋの決定を下す段階を含むのが好ましい。例えば、単語'ｃｈｅａｔｉｎｇ'を考えると、及び、単語'ｃｈｅａｔｅｒ'が検討されたばかりであれば、Ｋは５である。検討中の単語及び以前に検討された単語について、編集距離テーブルの最初のＫ＋１行が同じであることは、編集距離アルゴリズムの特徴である。その結果として、ストリング'ｃｈｅａｔｉｎｇ'及び'ｃｈｅａｔｅｒ'は、それらの編集距離テーブルにおいて同じ最初の６行を有する。以前に検討された単語についての編集距離テーブルが計算されたのならば、その編集距離テーブルの最初のＫ＋１行は、現在の単語についての編集距離テーブルのＫ＋１行の正しい値を既に含む。その結果、当該方法は、以前に検討された単語についての最初のＫ＋１行の編集距離の値を保持することによって、現在の単語についてのＫ＋１行の計算をスキップすることができる。編集距離テーブルの構成は、上記方法が、テーブルの行ではなく列に適用されるようなものであり得、行に配置される編集距離の値を参照することは慣習的なことに過ぎないことが理解されるであろう。
【００５５】
また、単語のリストが好ましくは順序付けられている、例えば、アルファベット順に、及び／又は数値的に、及び／又は任意の他の適切な順序付けスキームによって順序付けられたならば、これによって、各単語とその先行するものとの間の大きな重複がもたらされる。その結果として、重複の範囲の計算は、スキップされたテーブル行の再計算と比較して非常に速いので、この変形物は、編集距離アルゴリズムが適用される場合、時間の大部分を節約する。
【００５６】
本発明の方法は、１つの予め割り当てられた配列を使用し、検討される辞書内の各単語についてその同じ１つの配列が再使用されて、ワグナー‐フィッシャープロシージャにおけるテーブルを表すのが好ましい。当該配列の２つの次元は、それぞれ、ａ）予期される又は許容される入力ストリングの長さ、及びｂ）辞書の最長単語の長さを超えるよう選択されるのが好ましい。この配列は、殆どの最新のコンピュータシステム及びコンピュータデバイスにおいて見られる最小キャッシュより大幅に小さいので、それへのアクセスは、テーブルアクセスに起因する最小のキャッシュミスしか伴わない。正確な実装パラメータに応じて、当該配列は１ｋＢ又はそれより小さい容量を占有し得る。実際に、当該配列は最小キャッシュに収まるので、それへのアクセスは極めて速い。更に、上述したように、非常に特殊な最適化と併せて１つの配列を再利用することで、キャッシュの効果が考慮されない場合ですら、元のままのアルゴリズムに比べてはるかに速いアルゴリズムがもたらされる。実際に、プロシージャ中にメモリが割り当てられる、又は割り当て解除されることはなく、その結果、割り当て及び割り当て解除に係る直接的なコストと、キャッシュミスの増加に起因する間接的なコストとの両方が回避される。
【００５７】
単語のリストは、その自然な形式で、すなわち、単語の配列として使用されるのが好ましい。故に、データ構造を構築する必要があるために減速されることがない。更に、単語のリストは厳密に順次アクセスされる、つまり、第１番目の単語にアクセスし、次に第２番目の単語にアクセスする、といった具合にアクセスするのが好ましい。単語のリストそれ自体が賢明に割り当てられた場合、これにより、単語のリストへのアクセスに起因する最小のキャッシュミスしかもたらされない。
【００５８】
ワグナー‐フィッシャープロシージャにおけるテーブルは、最小空間を使用して格納され、単語のリストはその自然な形式でアクセスされるので、本明細書において説明される本発明の方法は、事実上空間オーバーヘッドを有さない。
【００５９】
当該方法は、反復を使用しないので、関連する時間及び空間オーバーヘッドを回避する。
【００６０】
本発明の方法を、出願人の先の特許出願において開示されたものなどの特定の用途に適用する場合、受け付けられた入力ストリングの予想される置き換えとして単語の候補を提案するために適用される種々のスキームがあり得る。そのようなスキームの１つは、受け付けられた入力ストリングの所与の編集距離閾値内の全ての辞書語を見つけること、又は、編集距離の観点から、受け付けられた入力ストリングに最も近いＭ個の単語を見つけることであってよい。これらは早期終了最適化プロセス（ｅａｒｌｙ  ｔｅｒｍｉｎａｔｉｏｎ  ｏｐｔｉｍｉｓａｔｉｏｎ  ｐｒｏｃｅｓｓ）と見なされ得る。 
【００６１】
後者の場合では、各単語についての編集距離を格納し、それから、最後にＭ個の最良の単語を決定するのではなく、優先度付きキューなどの標準的なデータ構造が使用されて、Ｍ個の最良の単語だけがそれらの編集距離と併せて格納されてよい。Ｍが事前に分かっているので、優先度付きキューのための空間が予め割り当てられて、編集距離計算処理中の割り当てが回避され得る。優先度付きキューは、主ループを簡略化すべく、選択された高い編集距離を有する'番兵（ｓｅｎｔｉｎｅｌ）'単語で初期化されるのが好ましい。これらの番兵は常に、検討される最初のＭ個の単語によって位置をずらされるので、最終的な出力には決して現れない。
【００６２】
所与の編集距離内の単語を見つける場合において、編集距離テーブル計算は、単語の編集距離テーブルの所与の行内の全てのエントリが閾値より大きいと決定されたら直ちにその単語について終了するのが好ましく、転置が考慮される場合、転置のコストを加えた前の行の全てのエントリは閾値より大きい。この状況においては、しかしながら、計算の残りは、その結果が、単語の候補を提案するのに有望ではないにもかかわらず続行することがある。 
【００６３】
Ｍ語の場合において、Ｍ個の最良の単語の最大編集距離は、好ましくは継続してトラッキングされ、優先度付きキューデータ構造を使用することで、これを行うのが比較的容易になる。継続的に更新された値は、まさに閾値を使用する場合の通りにカットオフとして使用されて、処理を最適化するのが好ましい。両方の場合において、配列内の各行における最小値がトラッキングされて、上記において説明されたように、行の再計算がスキップされる場合、これを再計算することが回避される。
【００６４】
別々に又は組み合わせて適用され得る早期終了最適化プロセスは特に効果的である。なぜなら、それらは、主編集距離計算プロセスとの相乗効果を生み出すからである。主編集距離プロセスは、単語の接頭部の計算のスキップを可能にする。一方で、早期終了最適化は、十分な文字が調べられて、単語が有望な候補ではないことを確認したら直ちに単語の検討が終結されることを可能にする。換言すると、これらの最適化は、語尾の複雑さの処理がスキップされることを可能にする。主編集距離プロセス及び（複数の）早期終了プロセスは共に、各後続の単語の中程の小セグメントだけが検討されることを可能にし、これにより、計算効率の良い、高速な処理がもたらされる。
【００６５】
例えば、主編集距離プロセスが、単語の最初の４０％が（その先行するものの編集距離テーブルのＫ＋１行をコピーすることによって）スキップされることを可能にし、早期終了プロセスの１つ又は両方が、単語の最後の４０％がスキップされることを可能にする場合を考えよう。主プロセス又は（複数の）早期終了プロセスは、元の実行時間の６０％まで処理時間を低減する（顕著なオーバーヘッドはないと仮定して）。この２つのプロセスが独立であれば、実行時間が元の実行時間の３６％まで低減されることが期待されるだろう。しかしながら、２つの処理は相互補完的であり、各単語の２０％を検討することだけが必要なので、これは、実行時間を元の実行時間の約２０％まで低減するだろう。
【００６６】
各単語と、順序付けられた単語のリスト内の次の単語との間の重複は、予め計算され、格納されるのが好ましい。空間におけるコストは、単語のリストそれ自体に比べて小さく、これにより、処理速度のかなりの改善がもたらされる。
【００６７】
いくつかの用途において、'早期終了'最適化の１又は複数が適用されている場合、単語が有望ではないと決定するのに十分な行が、多数の後続の単語と共有される。この場合、これら単語を１つずつ検討することを回避するのが好ましい。より具体的には、単語の編集距離テーブルの最初のＫ＋１行が、当該単語が、受け付けられた入力ストリングにとっての有望な候補ではないと分かるのに十分である場合では、先行するものとＫ個以上の文字の重複を有する全ての後続の単語を次にスキップすることが可能である。これを効率的に行うべく、重複情報は、各単語に、先行するものに対してより短い重複を有するリスト内の次の単語を指させることによって増補される。ポインタのチェーンをたどることで、全ての有望ではない単語を迅速にスキップすることが保証される。
【００６８】
また、テーブルの第１行及び第１列は常に同じ値を含むので、配列は、アルゴリズムの開始時にこれらの値で初期化され得、二度と書き込まれ得ないことが好ましい。このことがまた、直接的にも間接的にも、タイムクリティカルな領域のコードの量を低減させ、故に分岐予測を潜在的に向上させる等によってかなりの速度増加を提供する。
【００６９】
図４ａから図４ｃを参照すると、一連の編集距離テーブルが示されている。単に例として、入力ストリング'ａｂａｎｄｅｎ'から始めると、図４ａは、本発明の方法の最初の段階の編集距離テーブルを示す。本例において、入力ストリングは、テーブルの最上行にわたって横方向に配置され、結果として得られる編集距離の値を取得すべく入力ストリングが比較される単語は、テーブルの左側、すなわち左端の列に下方へ縦方向に配置されている。テーブルは、メモリの１つの配列内に収容される。テーブルは、例えば、入力ストリングが縦方向に配置され、比較語が横方向に配置されるように、異なって編成され得ることが理解されるであろう。図４ａにおいて、比較語は、空語、すなわち、文字のない、又は空ストリングの単語を含む。また、本例では、文字の挿入、削除、又は置換だけが許容され、各操作は、値又はコスト１を有し、単語のリストは'ａｂａｃｕｓ'、'ａｂａｎｄｏｎ'等から開始する。 
【００７０】
最初の段階において、空語と比較した入力ストリング'ａｂａｎｄｅｎ'の編集距離の値が計算される。これにより、図４ａに示されるようなテーブルがもたらされる。当該テーブルにおいて、テーブルの最上行だけが、この場合は、空語から入力ストリングに変化するのに必要な文字挿入数（又は逆に、入力ストリングから空語に変化するのに必要な削除数）を示す編集距離の値を含む。本例では、少なくとも入力ストリングほど広く、比較語より深くなくてはならないということを除いて、テーブルのサイズに重要性はない。実際には、テーブルのサイズは両方の点においてより大きい。
【００７１】
図４ａにおいて、テーブル内の'？'エントリは、読み出される必要のない値を示している。その結果として、テーブル内のこれらの値は初期化すら必要ではない。本例のテーブル内の下線が引かれた値、すなわち'７'は、入力ストリング'ａｂａｎｄｅｎ'から空語ストリングまでの編集距離を含む。
【００７２】
ここで図４ｂを参照すると、これは単語のリストからの比較語'ａｂａｃｕｓ'の編集距離の値のテーブルを含む。当該方法のこの段階では、図４ａのテーブルを含む既存のメモリの配列が再利用されて、単語'ａｂａｃｕｓ'と比較した入力ストリング'ａｂａｎｄｅｎ'の編集距離の値が取得される。検討されたすぐ前の単語（空語ストリング）と'ａｂａｃｕｓ'とは、０個の文字が重複しているので、Ｋ＝０であり、故にＫ＋１＝１である。その結果として、図４ｂのテーブルの第１行を計算する必要はなく、図４ａのテーブルの第１行が、図４ｂのテーブルの第１行として保持されるが、図４ｂのテーブルの次の６つの行は、本例では計算の必要がある。理解されるように、本発明の方法のいくつかの実施形態においては、'ａｂａｃｕｓ'についてのテーブルの次の６つの行のいくつかについての編集距離の値を計算する場合、この比較語が誤った形の入力ストリングにとっての有望な単語の候補ではないと判断又は決定を下し、それにより、この単語の更なる編集距離の値の計算を終了する、すなわち、テーブルを完成しないことが可能である。 
【００７３】
図４ｂのテーブルにおいて、完成したテーブルの右端でありかつ下端の編集距離の値、すなわち、下線が引かれた値'４'は、入力ストリング'ａｂａｎｄｅｎ'から比較語'ａｂａｃｕｓ'までの編集距離の大きさを含む。入力ストリング'ａｂａｎｄｅｎ'の比較語'ａｂａｃｕｓ'との比較結果のこの値はメモリに格納され、入力ストリングの提案される置き換えとして単語の候補をランク付け又はスコア付けすることによって選択する際に使用され得る。
【００７４】
図４ｃは、本発明の方法における、次の単語の比較のための編集距離の値のテーブルを含む。本例では、入力ストリング'ａｂａｎｄｅｎ'は、単語のリスト内の次の単語'ａｂａｎｄｏｎ'と比較される。図４ｂのテーブルは、この段階での編集距離の値を取得すべく再利用される。入力ストリングに対し、検討されたすぐ前の単語である'ａｂａｃｕｓ'と、現在検討中の単語である単語'ａｂａｎｄｏｎ'とは、３つの文字'ａｂａ'が重複しているので、Ｋ＝３であり、故に、Ｋ＋１＝４である。その結果として、図４ｂのテーブルの最初の４行は、図４ｃのテーブルの最初の４行についての正しい値を既に含んでおり、故に、図４ｂのテーブルの最初の４行は、図４ｃのテーブルの最初の４行として保持されており、図４ｃのテーブルの当該最初の４行の値を計算する必要性をなくす。テーブルを完成するのに図４ｃのテーブルの残りの４行が計算される必要があり、入力ストリング'ａｂａｎｄｅｎ'から'ａｂａｎｄｏｎ'までの編集距離の大きさを含むテーブルにおいて、右端でありかつ下端の下線を引いたエントリは'１'である。図４ｂのテーブルの場合に取得された編集距離の大きさと比較された図４ｃのテーブルにおいて取得された編集距離の大きさ'１'は、単語'ａｂａｎｄｏｎ'が、比較語'ａｂａｃｕｓ'よりも、入力ストリング'ａｂａｎｄｅｎ'を置き換えるためのより良好な単語の候補であることを示している。
【００７５】
本発明の方法は、図４ｃのテーブルが、単語のリスト内の次の単語などについての編集距離の値を取得するための開始点として働きつつ継続するだろう。それにより、各段階における、相当な数の行についての編集距離の値を計算する必要性をなくす。 
【００７６】
図４ａによって示された、比較語として空語ストリングを使用する最初の段階は利点を提供するが、それは必須の段階ではない。本例の方法は、比較語'ａｂａｃｕｓ'の編集距離の値を計算することによって開始され得る。しかしながら、図４ａの最初の段階を使用する利点は、それが、１つの配列における編集距離テーブルの初期化をはるかに簡単にするということである。なぜなら、空ストリングと比較された何れの入力ストリングの第１行も一続きの０，１，２，３，４，５...Ｓを含むからである。ここで、ｓは入力ストリングの長さである。その結果として、図４ａの最初のテーブル、又は、本方法を使用する任意の最初のテーブルの距離の値を実際に計算する必要はない。 
【００７７】
また、次のやり方：何か計算が開始する前に、配列の左端の列に値０，１，２，３，４，...．ｈ−１を入力するというやり方でテーブルごとの計算数を低減することも可能である。ここで、ｈは、配列の高さである。これらの値は、全てのテーブルについて有効なので全ての後続の計算を通して保持されてよく、これにより、何れのテーブルの左端の列に関係する如何なる計算も決して行う必要はない。このことはまた、タイムクリティカルなコードが考慮する必要があるエッジケースの数を低減する利点も有し、このことは同様に、更なる速度増加をもたらし得る。 
【００７８】
当該方法は、順序付けられた比較語のリストに基づいているのが好ましいが、このことは、本発明の方法の実装にとって必須ではない。なぜなら、当該方法は、任意の特定の順序の単語のリストからの単語の検討を必要としないからである。しかしながら、単語のリスト内で単語を順序付けると、各単語とその次の単語との間の重複が増やされ得て、それにより、単語のテーブルが、すぐ前の検討された単語のテーブルからの値を保持できる程度を増加させ得る。 
【００７９】
本発明の方法は、出願人の先に開示された特許出願において開示された方法において適用されて、システムが、４０，０００個の容認できる'単語'の'辞書'を使用するとき、地理的位置の指標（ｉｎｄｉｃａｔｏｒ）についての予期される３語の入力の任意の１又は複数のものの置き換え又は修正として、予想される単語の候補が選択され得る。
【００８０】
本発明が、図面及び先述の説明において詳細に示され説明されているが、本発明は、特性において例示的であって限定的ではないと見なされるべきであり、例示的実施形態のみが示され説明されており、いかなる方法であっても本発明の範囲を限定しないということが理解される。本明細書において説明された特徴の何れかが、何れかの実施形態で使用されてよいことが理解され得る。例示の実施形態は、互いに排除するものではない、又は、本明細書において記載されない他の実施形態を排除するものではない。従って、本発明はまた、上述された例示の実施形態のうちの１又は複数のものの組み合わせを含む実施形態も提供する。本明細書に記載の本発明に対する変形及び変更が、本発明の主旨及び範囲から逸脱することなく成され得、従って、添付の特許請求の範囲によって示される限定のみが課されるべきである。
【００８１】
次に続く特許請求の範囲において、及び本発明の前述の説明において、言語又は必要な含意を表現するために文脈上他の意味に解すべき場合を除き、単語「備える（ｃｏｍｐｒｉｓｅ）」、又は「備える（ｃｏｍｐｒｉｓｅｓ）」若しくは「備える（ｃｏｍｐｒｉｓｉｎｇ）」などの変形語は、包含的な意味で、すなわち、述べられた特徴の存在を特定するが、本発明の様々な実施形態における更なる特徴の存在又は追加を除外しないように使用される。
【００８２】
何れかの従来技術の公報が本明細書において参照された場合、こうして参照することによって、当該公報が当該技術分野における共通一般知識の一部を形成するものと認めることにはならないことが理解されるべきである。
【図１】
0006702589.tif 000003
【図２】
0006702589.tif 000004
【図３】
0006702589.tif 000005
【図４ａ】
0006702589.tif 000006
【図４ｂ】
0006702589.tif 000007
【図４ｃ】
0006702589.tif 000008