特許第6702589号(P6702589)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ワットスリーワーズ リミテッドの特許一覧

特許6702589電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法
<>
  • 特許6702589-電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 図000003
  • 特許6702589-電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 図000004
  • 特許6702589-電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 図000005
  • 特許6702589-電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 図000006
  • 特許6702589-電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 図000007
  • 特許6702589-電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6702589
(24)【登録日】2020年5月11日
(45)【発行日】2020年6月3日
(54)【発明の名称】電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法
(51)【国際特許分類】
   G06F 40/268 20200101AFI20200525BHJP
   G06F 16/903 20190101ALI20200525BHJP
【FI】
   G06F17/27 660
   G06F16/903
【請求項の数】25
【全頁数】20
(21)【出願番号】特願2017-535694(P2017-535694)
(86)(22)【出願日】2016年1月2日
(65)【公表番号】特表2018-506115(P2018-506115A)
(43)【公表日】2018年3月1日
(86)【国際出願番号】EP2016050002
(87)【国際公開番号】WO2016110455
(87)【国際公開日】20160714
【審査請求日】2018年12月13日
(31)【優先権主張番号】1500104.3
(32)【優先日】2015年1月6日
(33)【優先権主張国】GB
(73)【特許権者】
【識別番号】517228308
【氏名又は名称】ワットスリーワーズ リミテッド
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ゲインセイリンガム、モハン
【審査官】 成瀬 博之
(56)【参考文献】
【文献】 米国特許出願公開第2004/0220920(US,A1)
【文献】 特開2009−151734(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 40/00−40/58
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するためのコンピュータ実装方法であって、
a)前記入力ストリングの冒頭サブストリングと、前記単語のリストにおける各単語の冒頭サブストリングとの間の編集距離の値を受け付けるために、前記電子デバイスのメモリ内に配列を設ける段階と、
b)前記編集距離の値を計算すべく、前記単語のリストにおける各単語を前記受け付けられた入力ストリングと比較する編集距離アルゴリズムを適用する段階と、
c)前記単語のリストの1又は複数の単語について、それが、以前に検討された単語の接頭部と重複する文字数Kを決定することにより段階b)を修正し、前記以前に検討された単語の前記K個の接頭文字についての前記編集距離の値の一部又は全部を使用して、検討中の前記単語のための前記メモリの配列に編集距離の値を保持する段階とを備え、
段階b)は、一たび、受け付けられた入力ストリングにとっての予め定められた数の単語の候補が選択されると終了され、
前記方法はさらに、
d)受け付けられた入力ストリングにとっての前記予め定められた数の単語の候補を前記電子デバイスの位置特定モジュールに入力する段階であって、前記位置特定モジュールは、受け付けられた入力ストリングにとっての前記予め定められた数の単語の候補を、数値的な位置座標に解決する、段階
を備える方法。
【請求項2】
前記配列は、キャッシュメモリに設けられる、請求項1に記載の方法。
【請求項3】
段階b)は、文字を含まない空語又は空ストリングに適用される、請求項1又は2に記載の方法。
【請求項4】
段階b)は、前記単語のリスト内のいくつかの単語であって、前記リストにおいて間隔を空けて配置されている、いくつかの単語に適用される、請求項1又は2に記載の方法。
【請求項5】
前記単語のリストは、順序付けられた単語のリストを含み、段階b)は、前記順序付けられた単語のリストにおいて第1番目の単語に適用される、請求項1、3、又は4の何れか一項に記載の方法。
【請求項6】
単語の前記編集距離の値は、編集距離テーブルの形態で提供される、請求項1からの何れか一項に記載の方法。
【請求項7】
前記保持する段階は、以前に検討された単語についての編集距離テーブルの最初のK+1個の行又は列を、検討中の単語についての前記編集距離テーブルの前記最初のK+1個の行又は列として保持する段階を含む、請求項に記載の方法。
【請求項8】
段階cに続いて、前記編集距離アルゴリズムを使用して、前記単語のリスト内の各単語についての前記編集距離テーブルの更なる行を計算する段階d)を更に備える、請求項又はに記載の方法。
【請求項9】
メモリ内に1つの配列だけを設ける段階を備える、請求項1からの何れか一項に記載の方法。
【請求項10】
前記編集距離アルゴリズムは、ワグナー‐フィッシャーアルゴリズムを含む、請求項1からの何れか一項に記載の方法。
【請求項11】
ワグナー‐フィッシャーアルゴリズムによって決定される標準的な値で、各編集距離テーブルの第1行及び第1列を予め割り当てる段階を更に備える、請求項からの何れか一項に記載の方法。
【請求項12】
前記単語のリストが未だ順序付けられていない場合、
前記未だ順序付けられていない単語のリスト内の各単語と、前記未だ順序付けられていない単語のリスト内のその元の位置の指標を関連付ける段階と、
前記未だ順序付けられていない単語のリスト内の前記単語を、前記未だ順序付けられていない単語のリスト内のそれらの元の位置の、それらの関連付けられた指標を有する、順序付けられた単語のリストへと再配列する段階とを更に備える、請求項1から11の何れか一項に記載の方法。
【請求項13】
前記未だ順序付けられていない単語のリストの順序を再配列する前記段階は、アルファベット順に、及び、数値的に、のうち少なくとも何れかで、前記単語を配列する段階を含む、請求項12に記載の方法。
【請求項14】
前記方法は、前記リストの前記単語を、順序付けられた単語のリストへと順序付ける段階を備え、前記単語のリストの前記単語を順序付けられた単語のリストへと配列するプロセスは、オフラインで行われる、一回だけ行われる、又は、オフラインで一回だけ行われる、請求項1から13の何れか一項に記載の方法。
【請求項15】
メモリに設けられた前記配列の2次元のサイズは、予期される受け付けられた入力ストリング又は許容される入力ストリングより大きい、又はそれに等しい第1の次元と、前記単語のリスト内の最長単語の長さより大きい、又はそれに等しい第2の次元とを有する、請求項1から14の何れか一項に記載の方法。
【請求項16】
単語についての編集距離テーブルを計算する前記段階は、一たび、前記単語についての前記編集距離テーブルの所与の行における全てのエントリが閾値より大きいと決定されると終了される、請求項から、及び11の何れか一項に記載の方法。
【請求項17】
単語についての編集距離テーブルを計算する前記段階は、一たび、受け付けられた入力ストリングにとっての予め定められた数の単語の候補が選択されると終了される、請求項から11、及び16の何れか一項に記載の方法。
【請求項18】
受け付けられた入力ストリングにとっての前記予め定められた数の単語の候補は、優先度付きキューデータ構造を使用することによって選択される、請求項17に記載の方法。
【請求項19】
受け付けられた入力ストリングにとっての前記予め定められた数の単語の候補は、二分ヒープにおいて実装された優先度付きキューデータ構造を使用することによって選択される、請求項17に記載の方法。
【請求項20】
前記方法は、完全に前記電子デバイスにおいて実装される、請求項1から19の何れか一項に記載の方法。
【請求項21】
前記方法は、サーバベースの方法である、請求項1から19の何れか一項に記載の方法。
【請求項22】
電子デバイスであって、前記電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するための、電子デバイスであって、
機械可読命令を格納するメモリと、
請求項1から21の何れか一項に記載の方法の段階を実施すべく前記機械可読命令を実行するプロセッサとを備えるデバイス。
【請求項23】
電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するためのシステムであって、
機械可読命令を格納するメモリ、及び、前記機械可読命令を実行するプロセッサを有するサーバと、
機械可読命令を格納するメモリ、及び、前記機械可読命令を実行するプロセッサを有する電子デバイスとを備え、
前記サーバ及び前記電子デバイスは、ネットワークを通じて互いに通信し、
前記電子デバイスにおける受け付けられたストリングに基づいて前記電子デバイスによって前記サーバに送信された要求に応答して、前記サーバは、請求項1から19の何れか一項に記載の方法の段階を実施する、システム。
【請求項24】
請求項1から21の何れか一項に記載の方法の段階を電子デバイスのプロセッサに実施させるためのプログラム。
【請求項25】
請求項1から19の何れか一項に記載の方法の段階をサーバのプロセッサに実施させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電子デバイスにおいて受け付けられた入力ストリングの、考えられる置き換えとして単語の候補を提案するためのコンピュータ実装方法に関する。
【背景技術】
【0002】
ユーザ入力を受け付けるよう適合された電子デバイスを使用する場合、ユーザが、単語又は他の入力データをミスタイプするかもしれない状況が多数ある。デバイスの中には、ユーザが入力中のテキストを修正する、又は当該テキストに対する修正を提案するために予測的なテキストシステムを利用するものがあるが、予測的なテキストシステムには多数の制約がある。他の場合では、ユーザは、テキストではない何か、又はテキストに加えて何かを入力中のこともあり、その結果、予測的なテキストシステムは、完全に関連性のあるものではないかもしれない。従って、ユーザが情報をやり取りしているシステムに、ユーザが入力したかもしれないものの置き換え又は修正の考えられる候補を決定する能力を提供するための余地がかなり残っている。
【0003】
出願人の、2014年4月14日に出願された国際(PCT)特許出願番号PCT/GB2014/051152(出願人が先に開示したシステム)は、位置識別子を生成する方法を開示している。当該方法は、位置の地理座標を取得する段階と、地理座標を一意の単語群に変換する段階とを備える。複数の単語は、覚えやすい位置識別子として提供される。逆に、位置の地理座標を、その関連付けられた一意の単語群から特定することが可能である。
【0004】
しかしながら、ユーザは、単語ベースの位置識別子を、特に、これが受け付け後しばらくして入力される場合、ミスタイプし、及び/又は間違って記憶するかもしれず、それにより、解決不可能な単語ベースの位置識別子の入力、すなわち、容認できる入力として認識されない単語ベースの位置識別子の結果として、彼らはおそらく、誤った地理的位置の解決を受ける、又は、位置出力を全く受けないということになるという点で問題が生じることがある。この問題は、例えば、どの国に、又は適用可能ならば、どの都市に解決された地理的位置があるのか、又は近いのかを強調し、これにより、ユーザが、それが正しい又は期待される出力であるかどうかを判断でき、それにより、エラーが起こったかもしれないことをユーザに明らかにすることによって、ある程度までユーザインタフェース内で緩和され得る。
【0005】
エラーを特定し、位置の正しい3語連鎖の考えられる候補を提案する上では、かなりの技術的困難がある。これらの困難は、限定はされないが、以下のものを含む。
(i)必要な応答時間は、ユーザに効果的であるよう短くなくてはならないが、出願人が先に開示したシステムでは、ユーザが意図したかもしれない、考えられる3語の組み合わせが約57兆個あり、最新のデスクトップパーソナルコンピュータにおいてですら、これらを一つずつスキャンするプロシージャはどれも実現可能でなく、ハンドヘルド又は携帯型の電子デバイスにおいてはなお一層実現可能ではない。
(ii)1つの選択肢を検討する場合、受け付けられた元の入力文字ストリング又はそのようなストリングの一部に対するその近接度をある程度のものにする必要がある。このプロシージャは、何度も、すなわち、ユーザが意図したかもしれない位置の各々について一回呼び出されるので、この場合も計算効率のよいことを必要とする。このプロセスのある部分又は全体は、多数の容認できる入力のどれが実際の入力に近い又は最も近いかを決定する際、それらの容認できる入力を含む辞書に対する実際の入力の類似度を比較する段階と、場合により、当該容認できる入力を、実際の入力に対するそれらの近接度の観点からランク付け又はスコア付けする段階とを含むことが多い。
(iii)当該方法は、メモリが限られていることが多いスマートフォン又はタブレットコンピュータ又は同様のものなどの携帯型又はハンドヘルドの電子デバイスにおいて動作するよう適合される必要があり、故に、当該方法は、できるだけ少ないメモリを利用する必要がある。
【0006】
[本発明の目的]
本発明の目的は、入力文字ストリングの予想される置き換えとして単語の候補を提案するためのシステムに関連する1又は複数の問題をある程度まで緩和又は除去することである。
【0007】
上記の目的は、主クレームの特徴の組み合わせによって達成される。従属クレームは本発明の更に有益な実施形態を開示する。
【0008】
本発明の別の目的は、出願人が先に開示したシステムに関連する1又は複数の問題をある程度まで緩和又は除去することである。
【0009】
当業者ならば、以下の説明から、本発明の他の目的を導き出すであろう。従って、上記の目的の記述は、網羅的ではなく、単に本発明の多数の目的の一部を示す役割を果たす。
【発明の概要】
【0010】
第1の主態様において、本発明は電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するためのコンピュータ実装方法を提供する。当該方法は、a)入力ストリングの冒頭サブストリングと、単語のリスト内の単語の一部又は全部のセットにおける各単語の冒頭サブストリングとの間の編集距離の値を受け付けるために、メモリ内に配列を設ける段階と、b)前述の編集距離の値を取得すべく、選択された単語を受け付けられた入力ストリングと比較する編集距離アルゴリズムを適用する段階と、c)単語のセットの1又は複数の単語について、それが、以前に検討された単語の接頭部と重複する文字数Kを決定し、以前に検討された単語のK個の接頭文字についての編集距離の値の一部又は全部を使用して、検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階とを備える。段階b)は、空語又は空ストリング""、すなわち、文字を含まない単語又はストリングに適用されるのが好ましい。当該配列は、キャッシュメモリに設けられてよい。なぜなら、それは、電子デバイス内の典型的なキャッシュメモリに収まるほど小さいからである。編集距離の値を受け付けるために、メモリに1つの配列だけが設けられるのが好ましい。単語の編集距離の値は、編集距離テーブルの形態で提供されてよい。検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階は、以前に検討された単語についての編集距離テーブルの最初のK+1個の行又は列からの既に存在する編集距離の値を、検討中の単語の編集距離テーブルに保持する段階を含んでよい。最初のK+1個の行又は列の編集距離の値は、再計算される必要はない。なぜなら、それらは、以前に検討された単語についてのテーブルから現在検討中の単語についてのテーブルへは変わらないままだからである。これは、検討中の単語についてのテーブルは、以前に検討された単語についてのテーブルを使用して、配列において用意されるということによる。当該方法において、段階b)は、単語のセット内のいくつかの単語に適用されてよい。ここで、当該単語は、順序付けられたリストにおいて間隔を空けて配置されている。当該方法において、段階b)は、空語に適用されるのが好ましい。当該方法において、段階cは、単語のセット内の各単語に適用されるのが好ましい。しかしながら、当該方法は、任意の順序の単語のセット内の単語に適用され得るものの、特定の順序の単語を検討する上で利点があることを理解されたい。一実施形態において、当該単語は、逆の順序で検討されてよいが、このこともまた、当該方法の実装に必須ではない。
【0011】
第2の主態様において、本発明は、電子デバイスであって、当該電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するための、電子デバイスを提供する。当該デバイスは、機械可読命令を格納するメモリと、当該機械可読命令を実行して、本発明の第1の主態様に係る方法の段階を実施するよう構成されたプロセッサとを備える。当該電子デバイスは携帯型電子デバイスであるのが好ましが、デスクトップコンピュータなどのパーソナルコンピュータ(PC)を含んでよい。
【0012】
第3の主態様において、本発明は、電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するためのシステムを提供する。当該システムは、機械可読命令を格納するメモリ、及び当該機械可読命令を実行するよう構成されたプロセッサを有するサーバと、機械可読命令を格納するメモリ、及び当該機械可読命令を実行するよう構成されたプロセッサを有する電子デバイスとを備え、当該サーバ及び電子デバイスは、ネットワークを通じて互いに通信するよう構成され、デバイスにおける受け付けられたストリングに基づいて、電子デバイスによってサーバに送信された要求に応答して、サーバは本発明の第1の主態様に係る方法の段階を実施する。
【0013】
第4の主態様において、本発明は、本発明の第1の主態様に係る方法の段階を実施するための、電子デバイスのプロセッサによって実行可能な機械可読命令を格納するコンピュータ可読媒体を提供する。
【0014】
第5の主態様において、本発明は、本発明の第1の主態様に係る方法の段階を実施するための、サーバのプロセッサによって実行可能な機械可読命令を格納するコンピュータ可読媒体を提供する。
【0015】
本発明の概要は、必ずしも、本発明を定義するために必須の全ての特徴を開示しているわけではなく、本発明は、開示されている特徴の部分的組み合わせに在してよい。
【図面の簡単な説明】
【0016】
本発明の上記の特徴及び更なる特徴が、次の添付の図面に関連してほんの一例として提供されている以下の好適な実施形態の説明から明らかになる。
図1】編集距離テーブルの例を示す。
図2】本発明に係るシステムの例の図である。
図3図2のシステムにおいて使用されるユーザデバイスの例の図である。
図4a】本発明の方法を示す一連の編集距離テーブルの1つである。
図4b】本発明の方法を示す一連の編集距離テーブルの1つである。
図4c】本発明の方法を示す一連の編集距離テーブルの1つである。
【発明を実施するための形態】
【0017】
以下の説明は、好適な実施形態をほんの一例として、かつ、本発明を実行に移すために必要な特徴の組み合わせに限定することなく説明するものである。
【0018】
本明細書における「一実施形態」又は「実施形態」に関する言及は、当該実施形態に関連して説明される特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれることを意味している。本明細書の様々な箇所における「一実施形態において」という文言の出現は、必ずしも全てが同じ実施形態を指すわけではなく、他の実施形態を互いに排除する別個の又は代替の実施形態であるわけでもない。更に、いくつかの実施形態によって示され得、他の実施形態によっては示され得ない様々な特徴が説明される。同様に、いくつかの実施形態の要件であり得、他の実施形態の要件ではあり得ない様々な要件が説明される。
【0019】
図に示される要素は、様々な形態のハードウェア、ソフトウェア、又はそれらの組み合わせで実装されてよいことを理解されたい。これらの要素は、プロセッサ、メモリ、及び入出力インタフェースを含んでよい1又は複数の適切にプログラムされた汎用デバイスにおいて、ハードウェアとソフトウェアとの組み合わせで実装されるのが好ましい。
【0020】
本説明は、本発明の原理を示している。故に、当業者ならば、本発明の原理を具現化し、その主旨及び範囲内に含まれる様々な構成を、本明細書においては明示的に説明も示されもしていないが、案出できることが理解される。
【0021】
更に、本明細書において本発明の原理、態様、及び実施形態、並びにそれらの特定の例を記載する全ての記述は、それらの構造的等価物及び機能的等価物の両方を包含するよう意図されている。加えて、そのような等価物は、現在知られている等価物、及び将来開発される等価物、すなわち、構造を問わず、同一の機能を実行する開発されるあらゆる要素、の両方を含むことが意図されている。
【0022】
本明細書の特許請求の範囲において、特定の機能を実行するための手段として表わされる任意の要素は、その機能を実行する何れかのやり方を包含するよう意図されている。そのやり方は、例えば、a)その機能を実行する回路素子の組み合わせ、又は、b)任意の形態のソフトウェアであって、従って、ファームウェア、マイクロコード又は同様のものを含み、当該ソフトウェアを実行してその機能を実行するための適切な回路と組み合わせられた、任意の形態のソフトウェアを含む。そのような特許請求の範囲によって定義される本発明は、記載した様々な手段によって提供された機能が、特許請求の範囲が必要とする態様で組み合わせられ、まとめられるという事実に在する。故に、それらの機能を提供できるあらゆる手段は、本明細書において示されるものと等価であると見なされる。
【0023】
受け付けられた入力ストリング、例えば単語、の目標単語への近接度の標準的な大きさは、'編集距離'群の任意の1つのものによって与えられる。周知の例は、それら2つの間のレーベンシュタイン距離であり、当該レーベンシュタイン距離は、前者を後者に変形するのに必要な文字の挿入、削除、及び置換(総括して、操作)の最小数を数える。変形は、2つの隣接する文字の転置の操作を含む。別の変形は、レーベンシュタイン距離への重みの導入を含む。挿入、削除、置換、及び(適用可能な場合は)転置の各々には、'重み'又は'コスト'が割り当てられ、重み付き編集距離は、適切な変形を実行する一連の操作の最小合計コストとして定義される。この変形の部分変形は、置換のコストが、置換する文字及び置換される文字に依存することを可能にする。例えば、標準的なキーボード上でタイピングするユーザによって生成されたエラーを修正するよう試みる場合、キーボード上で近接する文字を含む置換にはより低いコストが割り当てられてよい。上記の変形の全ては、ユーザ入力の予測を含む、多くの適用におけるより良好な類似度の大きさである編集距離の値を生じる。
【0024】
2つのストリングの間の編集距離を計算する従来の方法の1つは、ワグナー‐フィッシャー(Wagner−Fischer)アルゴリズムである。このアルゴリズムは、上述の変形の何れにも対処するよう適合され得る。基本的に、ワグナー‐フィッシャーアルゴリズムは、第1のストリングの全ての冒頭サブストリングから、第2のストリングの全ての冒頭サブストリングまでの編集距離を含むテーブルの構築に在する。冒頭サブストリングは、元のストリングの始まりと完全に一致するストリングである。故に、'here'は、'there'のサブストリングではあるが、冒頭サブストリングではない。一方、'the'は、'there'それ自体であるように、'there'の冒頭サブストリングである。空ストリング""は、全てのストリングの冒頭サブストリングを備える。
【0025】
図1を参照すると、示されているのは、受け付けられた入力ストリングと、目標の又は意図された入力ストリングとを含むと見なされてよい2つのストリングについての編集距離テーブルの例である。本明細書においては、ミスタイプされた入力ストリングについて言及されるが、そのようなミスタイプされた入力ストリングは、つづりの、構文の、又は文法の誤りを含むと仮定されるべきではないということは注目に値する。それらは、一見正しい入力であるように思われ得るが、使用するとき、それらが入力されている意図されるアプリケーション又はプロセスにとって誤った又は誤りのある入力を含み得る。
【0026】
図1において、テーブルは、元のストリング"an act"から目標ストリング"a cat"までの(転置を有する)重み付けのないレーベンシュタイン距離の計算を示している。図1のテーブルは、http://scarcitycomputing.blogspot.co.uk/2013/04/damerau−levenshtein−edit−distance.htmlにおいてアクセス可能な掲載物"Computing in the Age of Scarcity by James M. Jensen II"において見つけられる。20と記されたセルは、ストリング内のスペースを考慮に入れた"an"から"a"までの距離を提供し、1に等しい。なぜなら、当該変形は、1つの文字、すなわち'n'を削除することによって実行され得るからである。30と記されたセルは、"an ac"から"a ca"までの距離を提供し、2に等しい。なぜなら、当該変形は、'n'を削除し、'ac'を'ca'に転置することによって実行され得るからである。40と記されたセルは、"an act"から"a cat"までの距離、すなわち、本例で要求される実際の編集距離を提供し、2に等しい。なぜなら、当該変形は、'n'を削除し、'ac'から'ca'へ転置することによって実行され得るからである。右下側のセルの値40は、従って、入力ストリングの目標ストリングへの近接度の編集距離の大きさ又は値を含む。
【0027】
そのような編集距離テーブルにおいて、最上行は常に、値、0,1,2,...を順に含むことに留意されたい。なぜなら、長さkの元のストリングの冒頭サブストリングを(長さ0の目標ストリングの冒頭サブストリングである)空ストリング""に変える唯一の方法は、k回の削除を実行することによるからである。削除がコストdを有する重み付きの場合では、最上行は、0,d,2d,3d,...を順に含むだろう。同様に、左端の列は常に、値、0,1,2,...を順に含む。なぜなら、""を長さkのサブストリングに変える唯一の方法は、k回の挿入を実行することによるからである。挿入がコストiを有する重み付きの場合では、左端の列は、0,i,2i,3i,...を順に含むだろう。
【0028】
通常の重み付きの場合では、d(r,c)が、長さrの元のストリングの冒頭サブストリングから、長さcの目標ストリングの冒頭サブストリングまでの編集距離として示される場合、以下のようになる。
d(0,c)=ci、式中、iは挿入コストである。
d(r,0)=rd、式中、dは削除コストである。
【0029】
転置のない場合では、他の全てのセルは、次式を使用して計算され得る。
【数1】
式中、s[r−1,c−1]は、r番目の元の文字をc番目の目標文字で置換するコストである。文字が等しい場合、これは'0'でなくてはならず、その結果、通常求められる特性である、ストリングからそれ自体までの編集距離もまた0であるということが確保されることに留意されたい。この'min'の中の3式のそれぞれは、編集距離を導き出すのに使用され得る操作のうちの1つに対応している。例えば、第1式のd+d(r−1,c)は、以下の段階によって、元のストリングを目標ストリングに変形する方法を指している。
a)最後の文字を削除する段階、次に、
b)結果として得られた長さr−1の元のストリングの冒頭サブストリングであるストリングを(長さcを有する)目標ストリングで置き換える段階。
【0030】
故に、テーブルの全てのセルの値は、それらの上及び/又は左のセルの値に基づいて計算される。ワグナー‐フィッシャーアルゴリズムは単に、上から下、左から右に順に全てのセルの値を計算することからなる。テーブルの右下のエントリが、要求される実際の編集距離の値を与える。
【0031】
本発明は、しかしながら、2つのストリングの間の編集距離を見つけることだけでなく、受け付けられた入力ストリングからの低い編集距離を有する、固定辞書内の単語の候補を見つけるという問題にも関する。
【0032】
これを計算する従来のやり方は、辞書内の全ての単語にわたる繰り返しを含む。各辞書語について、受け付けられた入力ストリングと辞書語との間の編集距離は、例えば、ワグナー‐フィッシャーアルゴリズムを使用して計算される。受け付けられた入力ストリングからの最も低い編集距離を有する辞書語が、単語の候補として選択される。
【0033】
この従来の方法の基本前提は、受け付けられた入力ストリングと比較して、辞書内の各単語を順番に検討することが必要であるということだが、例えば30,000から80,000語の辞書において、全ての単語が考えられる候補であると考えて、各ミススペルについて辞書全体を調べるのは現実的ではない。
【0034】
従来の方法に対する代替又は改善は、'トライを使用する高速かつ簡単なレーベンシュタイン距離(Fast and Easy Levenshtein distance using a Trie)'を含む。この改善された手法は、トライと称されるデータ構造を構築する。トライでは、2又はそれより多くの単語の共通の接頭部が1つのノードで明示的に表されている。次に、当該手法は、トライ構造を使用して当該構造を再帰的にトラバースし、2つの単語が共通の接頭部を共有する場合、関連するテーブル行は厳密に一回計算されることを確保する。しかしながら、本手法にはかなりの技術的困難がある。特に、トライは莫大な量のメモリを消費し、それがあまりにも莫大なため、32ビットのオペレーティングシステムによって課される2GBから4GBの制限に適合すらしないこともある。
【0035】
このように大量のメモリの利用は明らかに望ましくなく、実際に、多くのハンドヘルド又は携帯型の電子デバイスにおいては実現可能ですらない。それはまた、即座に明らかにはなり得ない欠点をもたらす。最新のコンピュータにおいて、メモリから値をフェッチするためにかかる時間は、プロセッサが原始的な計算を行うのにかかる時間を大きく超える。この影響は、'キャッシュ'と称される迅速にアクセス可能な非常に少量のメモリを有することによって緩和される。当該システムは、関連データがプロセッサによって要求される前に、主メモリから当該データをキャッシュに予めロードしようとヒューリスティックに試みる。これに失敗した場合、かなりの減速をもたらす。実際に、この状況は、プロセッサが典型的に、最も速いレベルのものが最小のメモリ容量を有する2つ又は3つのレベルの'キャッシュ'を有するという点でわずかに簡略化し過ぎたものになっている。最小キャッシュは典型的には、約32kBのサイズを有し、最大キャッシュは、PCでは約8MB、及びタブレットコンピュータ又は同様のものでは約1MBである。
【0036】
キャッシュミスが確実に回避され得る状況が2つある。第1の状況は、検討される必要があるデータの全てがキャッシュに収まる場合であり、利用されるキャッシュが小さければ小さいほど、プログラムはより速くなる。第2の状況は、大量のデータがアクセスされているが、当該データは順次アクセスされている場合である。このアクセスパターンはごく一般的かつ極めて予測可能なので、システムは通常難なくそれを認識し、プロセッサによってデータを要求される前に、それをキャッシュに予めロードする。
【0037】
トライデータ構造の場合、それが2GBから4GBの制限に適合することすらないかもしれないという事実は、それが完全にキャッシュに収まることはないということを極めて明らかにする。更に、トライデータ構造は、多数のノードから築き上げられ、当該多数のノードは通常、メモリ内で互いに遠く離れて位置している。システムがトライをトラバースするとき、システムは通常、順次アクセスとは非常にかけ離れたメモリアクセスパターンでノードからノードへジャンプする。この結果は、かなりの数の不経済な、すなわち遅い、キャッシュミスをもたらす。
【0038】
上記において概説された改善された方法の第2の主な欠点は、それがトライの新しいノードに到達するたびに、テーブルの新たな行を(メモリから)'割り当てる'ことである。メモリ割り当てと、それに関連付けられなくてはならない暗黙的又は明示的な割り当て解除とは、検討中のアルゴリズムの文脈においては遅い操作である。更に、メモリ割り当ては通常、割り当てられたオブジェクトがメモリのどこに存在するかについて何の保証も与えず、これにより、トライベースの手法においては、テーブル行はメモリ内で広く離散した場所にあることもある。これは更にキャッシュ性能を低下させる、すなわち、キャッシュミス率がより高くなる。
【0039】
第3の欠点は、トライデータ構造は、構築に大量の時間を要求し、これにより、アプリケーションのスタートアップが遅くなる。このことは、多くのシステム、特に移動中に使用されるハンドヘルドのシステム又はデバイスにとって望ましくない。
【0040】
第4の欠点は、トライベースの手法が、末尾呼び出し最適化に適さない形態の反復を使用することである。これは、かなりの時間と空間オーバーヘッドとを含むことで知られている。
【0041】
より低いメモリ使用量を有する改善された従来の方法の他の変形物においてですら、メモリ使用量は依然として高く、ほとんどの場合、構築されたデータ構造が完全にキャッシュに収まることはない。データ構造の部分部分は、離して割り当てられ、故に、メモリ内に広くばらまかれ、これにより、メモリアクセスは順次的でなくなる。故に、当該手法は多数のキャッシュミスを生じる。テーブル行を離して割り当てることに起因する当該問題は、本手法の下でもまた変わらない。また、遅いスタートアップと反復とに関連する問題も依然残る。
【0042】
本発明は、上記問題に対する新しい解決策を提案した。当該解決策は、当該方法が、携帯型若しくはハンドヘルドの電子デバイス、又はデスクトップPCなどの電子デバイスにおいて、高速かつ計算効率的な態様で完全に実装されることを可能にする。
【0043】
再び図、特に、図2及び図3を参照すると、本発明のシステム1は、いくつかのユーザデバイス2及びセントラルサーバ3を備える。ユーザデバイス2は、スマートフォン、タブレットコンピュータ、又は同様のものなどのハンドヘルド及び/又は携帯型の電子デバイス2a、及び/又はパーソナルコンピュータ(PC)2bを含む。ユーザデバイス2の各々は、インターネット4などのネットワークを通じてセントラルサーバ3と通信可能であるが、このことは、本発明の方法が電子デバイス2a又はPC2bにおいて完全に実行される場合には必須ではない。そのような場合では、電子デバイス2は、ネットワークに接続される必要はない。明確にするために、図1では3つだけの電子デバイス2aと、1つのPC2bとが示されているが、実際には、システム1は多数の電子デバイス2を含んでよいことが理解されるであろう。しかし、本発明の方法が1つの電子処理デバイス2において実装されてよいときは、このこともまた必須ではない。
【0044】
図2は、システム1の電子デバイス2aの例を更に詳細に示している。図2に示されるように、電子デバイス2aは、データプロセッサ10、視覚ディスプレイ11、ユーザ命令がデバイス2aに入力され、情報がユーザに提示及び/又は表示されることを可能にするユーザインタフェース12、スピーカ13、及びマイク14を含む。電子デバイス2aの様々なコンポーネントは、メモリに格納された機械語を実行するプロセッサ10の制御のもと動作する。当該メモリはまた、キャッシュメモリを含む。ユーザインタフェース12は、タッチスクリーンディスプレイとして視覚ディスプレイと統合されてよい。他の例では、ユーザインタフェース12は、視覚ディスプレイから切り離された専用のキーパッドであってよい。これらのコンポーネントを含む電子デバイスは当業者には周知であるので、これらはここで詳細に説明される必要はない。ユーザPC2bが類似の機能を有することが理解されるであろう。
【0045】
更に、電子デバイス2aは、位置決定手段15、マッピング又はナビゲーションモジュール16、及び位置特定モジュール11を備えてよい。ナビゲーションモジュール16及び位置特定モジュール17は、位置決定手段15から位置情報を受けるよう構成されている。示された例において、位置決定手段15は、いわゆるGPSなどのグローバルポジショニングシステムである。他の例では、種々の衛星利用ナビゲーションシステムが使用されてよい。ナビゲーションモジュール16及び位置特定モジュール17は、専用のハードウェアを備えてよい、又は、電子デバイス2aのプロセッサ10において動作するソフトウェアプログラム又はアプリケーションを備えてよい。いくつかの例では、ユーザPC2bは、位置決定手段15を備えなくてよい。いくつかの例では、位置決定手段を備えないユーザPC2bは、依然として、電子デバイス2aの位置決定手段などの別個の位置決定手段から位置情報にアクセスしてよい。
【0046】
位置特定モジュール17は、位置決定手段15によって提供された位置情報を使用して位置ベースのサービスをユーザに提供する。
【0047】
一般的に言えば、電子デバイス2a又はPC2bは、一実施形態において、デバイスそれ自体の位置、又は、ユーザによって選択された位置の地理座標をマッピング又はナビゲーションモジュール16において決定するよう構成されている。これらの数値座標は、次に、電子デバイス2a若しくはPC2bそれ自体において、又は、出願人の国際(PCT)特許出願番号PCT/GB2014/051152に開示されている態様でサーバ3を用いて、若しくは任意の他の適切なそのようなシステムを用いて、単語ベースの一意の位置識別子に解決され得る。
【0048】
本明細書において開示される方法は、しかしながら、単語ベースの地理的位置識別子に限定されるのではなく、容認できる単語の辞書又はデータストアを有するデバイス又はシステムにおいて任意の入力文字ストリングに対して使用され得る。本発明の文脈において、用語'単語'は、自然言語の単語だけを含むように解釈されるのではなく、任意の入力された文字の、アルファベットの、数字の、又はその他のストリングを含んでよい。当該任意の入力されたストリングは、'単語'、例えば、デバイス又はシステムの辞書又はデータストアの容認できる又は予め定義された文字ストリングのエントリを含む若しくはそれに一致する、又は、辞書又はデータストアの何れかのそのような単語エントリを含む若しくはそれに一致するよう意図されている。
【0049】
同じ又は別の実施形態において、単独の電子デバイス2a若しくはPC2b、又は、サーバ3と通信する電子デバイス2a若しくはPC2bは、複数語文字ストリングであることが好ましい受け付けられた文字の入力ストリングを地理的位置座標のセットなどの関連付けられた側面に解決するよう構成されている。位置ではないものに基づくいくつかの実施形態では、受け付けられた文字の入力ストリングは、検索クエリ又は製品識別子、例えば、バーコード番号又は同様のものなどの関連付けられた側面に解決される。
【0050】
より具体的には、及び、以下の説明からより明らかになるように、本発明の方法は、電子デバイス2において受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するためのコンピュータ実装方法を備える。当該方法は、a)入力ストリングの冒頭サブストリングと、単語のリスト内の単語の一部又は全部のセットにおける各単語の冒頭サブストリングとの間の編集距離の値を受け付けるために、メモリ内に配列を設ける段階と、b)前述の編集距離の値を取得すべく、単語のセット内であってもなくてもよく、(0個の文字からなる)空語であってもなくてもよい選択された単語を、受け付けられた入力ストリングと比較する編集距離アルゴリズムを適用する段階と、c)単語のセットの1又は複数の単語について、それが、以前に検討された単語の接頭部と重複する文字数Kを決定し、以前に検討された単語のK個の接頭文字についての編集距離の値の一部又は全部を使用して、検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階とを備える。段階b)は、文字を有さない空語又は空ストリング""に適用されてよい。なぜなら、このことが、編集距離の値の計算が初期化されることを可能にするからである。当該配列は、キャッシュメモリに設けられてよい。なぜなら、それは、電子デバイス内の典型的なキャッシュメモリに収まるほど小さいからである。編集距離の値を受け付けるために、メモリに1つの配列だけが設けられるのが好ましい。単語の編集距離の値は、編集距離テーブルの形態で提供されてよい。検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階は、以前に検討された単語についての編集距離テーブルの最初のK+1個の行又は列からの既に存在する編集距離の値を、検討中の単語の編集距離テーブルに保持する段階を含んでよい。最初のK+1個の行又は列の編集距離の値は変わらないままなので、再計算される必要はない。単語のリストは、当該リストの各単語と、その先行する単語との間の重複量を増やす、又は最適化するよう構成された順序付けられた単語のリストを含むのが好ましい。当該方法において、段階b)は、単語のセット内のいくつかの単語に適用されてよい。ここで、当該単語は、順序付けられたリストにおいて間隔を空けて配置されている。当該方法において、段階b)は、順序付けられた単語のリストにおいて最も早くに現れる、選択された単語のセットの第1番目の単語に適用されてよい。当該方法において、段階cは、単語のセット内の各単語に順に適用されるのが好ましい。単語が任意の特定の順序で検討されることは当該方法の実装にとって必須ではないが、このことは利点をもたらす。単語は、恣意的な順序を含む任意の順序で検討されてよい。
【0051】
以下の説明において、'単語'について、又は'単語のリスト'について言及する。しかし、この文脈における用語'単語'は、電子デバイスへの任意の受け付けられた入力ストリングを含み得、'単語のリスト'は、任意の単語のリストを含み得ることが理解されるであろう。第1の、一回だけの、好ましくはオフラインの段階において、単語のリストは、アルファベット順に、及び/又は数値的に、及び/又は何らかの予め定義された順序付けスキームによって、ソートされる又は順序付けられる。順序付けの目的は、リスト内の各単語とその次の単語との間の平均重複量をできるだけ多くする、すなわち増やすことである。つまり、ソート後、リスト内の各単語は、その直前の1又は複数の単語と長い接頭部を共有するという傾向が非常に強い。
【0052】
単語のリストの並べ替えは好ましくはオフラインで行われ、故に、一回行われれば十分なので、本発明の方法を具現化するプログラムの任意のインスタンシエーションは、ソートされていない単語のリストではなく順序付けられた単語のリストと共に分配されるのが好ましい。単語のリストが、いくつかのアプリケーションについて未だ順序付けられていない場合では、元のソートされていない単語のリスト内の単語の位置は、関心のある、又は有用なままであってよい。この場合、ソートされていないリスト内の各単語は、ソートが実行される前のその位置を示す数値又は別の識別子と、それらの元の位置の指標と共に列挙された順序付けられた数値とでタグ付けされてよい。
【0053】
受け付けられた入力ストリングについての単語のリスト内の単語の一部又は全部のセットについての、好ましくは編集距離テーブルの形態で提供された編集距離の値を処理すべく、単語のセットの各々についての編集距離を計算するのに要求されるテーブルの全てを格納するために、メモリ内に1つの配列を設ける。本発明の予期せぬ利点は、1つの配列が、キャッシュメモリ内に収容されるのに十分小さいということである。
【0054】
単語のセットの各単語について、ワグナー‐フィッシャーアルゴリズムなどの編集距離アルゴリズムが適用されて、関連する編集距離テーブルが構築される。このことは、単語のセット内の第1番目の単語、例えば、単語のリストの第1番目の単語、を検討しない場合、処理中の単語のリストからの単語が以前に検討された単語と重複する最大文字数Kの決定を下す段階を含むのが好ましい。例えば、単語'cheating'を考えると、及び、単語'cheater'が検討されたばかりであれば、Kは5である。検討中の単語及び以前に検討された単語について、編集距離テーブルの最初のK+1行が同じであることは、編集距離アルゴリズムの特徴である。その結果として、ストリング'cheating'及び'cheater'は、それらの編集距離テーブルにおいて同じ最初の6行を有する。以前に検討された単語についての編集距離テーブルが計算されたのならば、その編集距離テーブルの最初のK+1行は、現在の単語についての編集距離テーブルのK+1行の正しい値を既に含む。その結果、当該方法は、以前に検討された単語についての最初のK+1行の編集距離の値を保持することによって、現在の単語についてのK+1行の計算をスキップすることができる。編集距離テーブルの構成は、上記方法が、テーブルの行ではなく列に適用されるようなものであり得、行に配置される編集距離の値を参照することは慣習的なことに過ぎないことが理解されるであろう。
【0055】
また、単語のリストが好ましくは順序付けられている、例えば、アルファベット順に、及び/又は数値的に、及び/又は任意の他の適切な順序付けスキームによって順序付けられたならば、これによって、各単語とその先行するものとの間の大きな重複がもたらされる。その結果として、重複の範囲の計算は、スキップされたテーブル行の再計算と比較して非常に速いので、この変形物は、編集距離アルゴリズムが適用される場合、時間の大部分を節約する。
【0056】
本発明の方法は、1つの予め割り当てられた配列を使用し、検討される辞書内の各単語についてその同じ1つの配列が再使用されて、ワグナー‐フィッシャープロシージャにおけるテーブルを表すのが好ましい。当該配列の2つの次元は、それぞれ、a)予期される又は許容される入力ストリングの長さ、及びb)辞書の最長単語の長さを超えるよう選択されるのが好ましい。この配列は、殆どの最新のコンピュータシステム及びコンピュータデバイスにおいて見られる最小キャッシュより大幅に小さいので、それへのアクセスは、テーブルアクセスに起因する最小のキャッシュミスしか伴わない。正確な実装パラメータに応じて、当該配列は1kB又はそれより小さい容量を占有し得る。実際に、当該配列は最小キャッシュに収まるので、それへのアクセスは極めて速い。更に、上述したように、非常に特殊な最適化と併せて1つの配列を再利用することで、キャッシュの効果が考慮されない場合ですら、元のままのアルゴリズムに比べてはるかに速いアルゴリズムがもたらされる。実際に、プロシージャ中にメモリが割り当てられる、又は割り当て解除されることはなく、その結果、割り当て及び割り当て解除に係る直接的なコストと、キャッシュミスの増加に起因する間接的なコストとの両方が回避される。
【0057】
単語のリストは、その自然な形式で、すなわち、単語の配列として使用されるのが好ましい。故に、データ構造を構築する必要があるために減速されることがない。更に、単語のリストは厳密に順次アクセスされる、つまり、第1番目の単語にアクセスし、次に第2番目の単語にアクセスする、といった具合にアクセスするのが好ましい。単語のリストそれ自体が賢明に割り当てられた場合、これにより、単語のリストへのアクセスに起因する最小のキャッシュミスしかもたらされない。
【0058】
ワグナー‐フィッシャープロシージャにおけるテーブルは、最小空間を使用して格納され、単語のリストはその自然な形式でアクセスされるので、本明細書において説明される本発明の方法は、事実上空間オーバーヘッドを有さない。
【0059】
当該方法は、反復を使用しないので、関連する時間及び空間オーバーヘッドを回避する。
【0060】
本発明の方法を、出願人の先の特許出願において開示されたものなどの特定の用途に適用する場合、受け付けられた入力ストリングの予想される置き換えとして単語の候補を提案するために適用される種々のスキームがあり得る。そのようなスキームの1つは、受け付けられた入力ストリングの所与の編集距離閾値内の全ての辞書語を見つけること、又は、編集距離の観点から、受け付けられた入力ストリングに最も近いM個の単語を見つけることであってよい。これらは早期終了最適化プロセス(early termination optimisation process)と見なされ得る。
【0061】
後者の場合では、各単語についての編集距離を格納し、それから、最後にM個の最良の単語を決定するのではなく、優先度付きキューなどの標準的なデータ構造が使用されて、M個の最良の単語だけがそれらの編集距離と併せて格納されてよい。Mが事前に分かっているので、優先度付きキューのための空間が予め割り当てられて、編集距離計算処理中の割り当てが回避され得る。優先度付きキューは、主ループを簡略化すべく、選択された高い編集距離を有する'番兵(sentinel)'単語で初期化されるのが好ましい。これらの番兵は常に、検討される最初のM個の単語によって位置をずらされるので、最終的な出力には決して現れない。
【0062】
所与の編集距離内の単語を見つける場合において、編集距離テーブル計算は、単語の編集距離テーブルの所与の行内の全てのエントリが閾値より大きいと決定されたら直ちにその単語について終了するのが好ましく、転置が考慮される場合、転置のコストを加えた前の行の全てのエントリは閾値より大きい。この状況においては、しかしながら、計算の残りは、その結果が、単語の候補を提案するのに有望ではないにもかかわらず続行することがある。
【0063】
M語の場合において、M個の最良の単語の最大編集距離は、好ましくは継続してトラッキングされ、優先度付きキューデータ構造を使用することで、これを行うのが比較的容易になる。継続的に更新された値は、まさに閾値を使用する場合の通りにカットオフとして使用されて、処理を最適化するのが好ましい。両方の場合において、配列内の各行における最小値がトラッキングされて、上記において説明されたように、行の再計算がスキップされる場合、これを再計算することが回避される。
【0064】
別々に又は組み合わせて適用され得る早期終了最適化プロセスは特に効果的である。なぜなら、それらは、主編集距離計算プロセスとの相乗効果を生み出すからである。主編集距離プロセスは、単語の接頭部の計算のスキップを可能にする。一方で、早期終了最適化は、十分な文字が調べられて、単語が有望な候補ではないことを確認したら直ちに単語の検討が終結されることを可能にする。換言すると、これらの最適化は、語尾の複雑さの処理がスキップされることを可能にする。主編集距離プロセス及び(複数の)早期終了プロセスは共に、各後続の単語の中程の小セグメントだけが検討されることを可能にし、これにより、計算効率の良い、高速な処理がもたらされる。
【0065】
例えば、主編集距離プロセスが、単語の最初の40%が(その先行するものの編集距離テーブルのK+1行をコピーすることによって)スキップされることを可能にし、早期終了プロセスの1つ又は両方が、単語の最後の40%がスキップされることを可能にする場合を考えよう。主プロセス又は(複数の)早期終了プロセスは、元の実行時間の60%まで処理時間を低減する(顕著なオーバーヘッドはないと仮定して)。この2つのプロセスが独立であれば、実行時間が元の実行時間の36%まで低減されることが期待されるだろう。しかしながら、2つの処理は相互補完的であり、各単語の20%を検討することだけが必要なので、これは、実行時間を元の実行時間の約20%まで低減するだろう。
【0066】
各単語と、順序付けられた単語のリスト内の次の単語との間の重複は、予め計算され、格納されるのが好ましい。空間におけるコストは、単語のリストそれ自体に比べて小さく、これにより、処理速度のかなりの改善がもたらされる。
【0067】
いくつかの用途において、'早期終了'最適化の1又は複数が適用されている場合、単語が有望ではないと決定するのに十分な行が、多数の後続の単語と共有される。この場合、これら単語を1つずつ検討することを回避するのが好ましい。より具体的には、単語の編集距離テーブルの最初のK+1行が、当該単語が、受け付けられた入力ストリングにとっての有望な候補ではないと分かるのに十分である場合では、先行するものとK個以上の文字の重複を有する全ての後続の単語を次にスキップすることが可能である。これを効率的に行うべく、重複情報は、各単語に、先行するものに対してより短い重複を有するリスト内の次の単語を指させることによって増補される。ポインタのチェーンをたどることで、全ての有望ではない単語を迅速にスキップすることが保証される。
【0068】
また、テーブルの第1行及び第1列は常に同じ値を含むので、配列は、アルゴリズムの開始時にこれらの値で初期化され得、二度と書き込まれ得ないことが好ましい。このことがまた、直接的にも間接的にも、タイムクリティカルな領域のコードの量を低減させ、故に分岐予測を潜在的に向上させる等によってかなりの速度増加を提供する。
【0069】
図4aから図4cを参照すると、一連の編集距離テーブルが示されている。単に例として、入力ストリング'abanden'から始めると、図4aは、本発明の方法の最初の段階の編集距離テーブルを示す。本例において、入力ストリングは、テーブルの最上行にわたって横方向に配置され、結果として得られる編集距離の値を取得すべく入力ストリングが比較される単語は、テーブルの左側、すなわち左端の列に下方へ縦方向に配置されている。テーブルは、メモリの1つの配列内に収容される。テーブルは、例えば、入力ストリングが縦方向に配置され、比較語が横方向に配置されるように、異なって編成され得ることが理解されるであろう。図4aにおいて、比較語は、空語、すなわち、文字のない、又は空ストリングの単語を含む。また、本例では、文字の挿入、削除、又は置換だけが許容され、各操作は、値又はコスト1を有し、単語のリストは'abacus'、'abandon'等から開始する。
【0070】
最初の段階において、空語と比較した入力ストリング'abanden'の編集距離の値が計算される。これにより、図4aに示されるようなテーブルがもたらされる。当該テーブルにおいて、テーブルの最上行だけが、この場合は、空語から入力ストリングに変化するのに必要な文字挿入数(又は逆に、入力ストリングから空語に変化するのに必要な削除数)を示す編集距離の値を含む。本例では、少なくとも入力ストリングほど広く、比較語より深くなくてはならないということを除いて、テーブルのサイズに重要性はない。実際には、テーブルのサイズは両方の点においてより大きい。
【0071】
図4aにおいて、テーブル内の'?'エントリは、読み出される必要のない値を示している。その結果として、テーブル内のこれらの値は初期化すら必要ではない。本例のテーブル内の下線が引かれた値、すなわち'7'は、入力ストリング'abanden'から空語ストリングまでの編集距離を含む。
【0072】
ここで図4bを参照すると、これは単語のリストからの比較語'abacus'の編集距離の値のテーブルを含む。当該方法のこの段階では、図4aのテーブルを含む既存のメモリの配列が再利用されて、単語'abacus'と比較した入力ストリング'abanden'の編集距離の値が取得される。検討されたすぐ前の単語(空語ストリング)と'abacus'とは、0個の文字が重複しているので、K=0であり、故にK+1=1である。その結果として、図4bのテーブルの第1行を計算する必要はなく、図4aのテーブルの第1行が、図4bのテーブルの第1行として保持されるが、図4bのテーブルの次の6つの行は、本例では計算の必要がある。理解されるように、本発明の方法のいくつかの実施形態においては、'abacus'についてのテーブルの次の6つの行のいくつかについての編集距離の値を計算する場合、この比較語が誤った形の入力ストリングにとっての有望な単語の候補ではないと判断又は決定を下し、それにより、この単語の更なる編集距離の値の計算を終了する、すなわち、テーブルを完成しないことが可能である。
【0073】
図4bのテーブルにおいて、完成したテーブルの右端でありかつ下端の編集距離の値、すなわち、下線が引かれた値'4'は、入力ストリング'abanden'から比較語'abacus'までの編集距離の大きさを含む。入力ストリング'abanden'の比較語'abacus'との比較結果のこの値はメモリに格納され、入力ストリングの提案される置き換えとして単語の候補をランク付け又はスコア付けすることによって選択する際に使用され得る。
【0074】
図4cは、本発明の方法における、次の単語の比較のための編集距離の値のテーブルを含む。本例では、入力ストリング'abanden'は、単語のリスト内の次の単語'abandon'と比較される。図4bのテーブルは、この段階での編集距離の値を取得すべく再利用される。入力ストリングに対し、検討されたすぐ前の単語である'abacus'と、現在検討中の単語である単語'abandon'とは、3つの文字'aba'が重複しているので、K=3であり、故に、K+1=4である。その結果として、図4bのテーブルの最初の4行は、図4cのテーブルの最初の4行についての正しい値を既に含んでおり、故に、図4bのテーブルの最初の4行は、図4cのテーブルの最初の4行として保持されており、図4cのテーブルの当該最初の4行の値を計算する必要性をなくす。テーブルを完成するのに図4cのテーブルの残りの4行が計算される必要があり、入力ストリング'abanden'から'abandon'までの編集距離の大きさを含むテーブルにおいて、右端でありかつ下端の下線を引いたエントリは'1'である。図4bのテーブルの場合に取得された編集距離の大きさと比較された図4cのテーブルにおいて取得された編集距離の大きさ'1'は、単語'abandon'が、比較語'abacus'よりも、入力ストリング'abanden'を置き換えるためのより良好な単語の候補であることを示している。
【0075】
本発明の方法は、図4cのテーブルが、単語のリスト内の次の単語などについての編集距離の値を取得するための開始点として働きつつ継続するだろう。それにより、各段階における、相当な数の行についての編集距離の値を計算する必要性をなくす。
【0076】
図4aによって示された、比較語として空語ストリングを使用する最初の段階は利点を提供するが、それは必須の段階ではない。本例の方法は、比較語'abacus'の編集距離の値を計算することによって開始され得る。しかしながら、図4aの最初の段階を使用する利点は、それが、1つの配列における編集距離テーブルの初期化をはるかに簡単にするということである。なぜなら、空ストリングと比較された何れの入力ストリングの第1行も一続きの0,1,2,3,4,5...Sを含むからである。ここで、sは入力ストリングの長さである。その結果として、図4aの最初のテーブル、又は、本方法を使用する任意の最初のテーブルの距離の値を実際に計算する必要はない。
【0077】
また、次のやり方:何か計算が開始する前に、配列の左端の列に値0,1,2,3,4,....h−1を入力するというやり方でテーブルごとの計算数を低減することも可能である。ここで、hは、配列の高さである。これらの値は、全てのテーブルについて有効なので全ての後続の計算を通して保持されてよく、これにより、何れのテーブルの左端の列に関係する如何なる計算も決して行う必要はない。このことはまた、タイムクリティカルなコードが考慮する必要があるエッジケースの数を低減する利点も有し、このことは同様に、更なる速度増加をもたらし得る。
【0078】
当該方法は、順序付けられた比較語のリストに基づいているのが好ましいが、このことは、本発明の方法の実装にとって必須ではない。なぜなら、当該方法は、任意の特定の順序の単語のリストからの単語の検討を必要としないからである。しかしながら、単語のリスト内で単語を順序付けると、各単語とその次の単語との間の重複が増やされ得て、それにより、単語のテーブルが、すぐ前の検討された単語のテーブルからの値を保持できる程度を増加させ得る。
【0079】
本発明の方法は、出願人の先に開示された特許出願において開示された方法において適用されて、システムが、40,000個の容認できる'単語'の'辞書'を使用するとき、地理的位置の指標(indicator)についての予期される3語の入力の任意の1又は複数のものの置き換え又は修正として、予想される単語の候補が選択され得る。
【0080】
本発明が、図面及び先述の説明において詳細に示され説明されているが、本発明は、特性において例示的であって限定的ではないと見なされるべきであり、例示的実施形態のみが示され説明されており、いかなる方法であっても本発明の範囲を限定しないということが理解される。本明細書において説明された特徴の何れかが、何れかの実施形態で使用されてよいことが理解され得る。例示の実施形態は、互いに排除するものではない、又は、本明細書において記載されない他の実施形態を排除するものではない。従って、本発明はまた、上述された例示の実施形態のうちの1又は複数のものの組み合わせを含む実施形態も提供する。本明細書に記載の本発明に対する変形及び変更が、本発明の主旨及び範囲から逸脱することなく成され得、従って、添付の特許請求の範囲によって示される限定のみが課されるべきである。
【0081】
次に続く特許請求の範囲において、及び本発明の前述の説明において、言語又は必要な含意を表現するために文脈上他の意味に解すべき場合を除き、単語「備える(comprise)」、又は「備える(comprises)」若しくは「備える(comprising)」などの変形語は、包含的な意味で、すなわち、述べられた特徴の存在を特定するが、本発明の様々な実施形態における更なる特徴の存在又は追加を除外しないように使用される。
【0082】
何れかの従来技術の公報が本明細書において参照された場合、こうして参照することによって、当該公報が当該技術分野における共通一般知識の一部を形成するものと認めることにはならないことが理解されるべきである。
図1
図2
図3
図4a
図4b
図4c