JP6702589B2 - 電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 - Google Patents

電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 Download PDF

Info

Publication number
JP6702589B2
JP6702589B2 JP2017535694A JP2017535694A JP6702589B2 JP 6702589 B2 JP6702589 B2 JP 6702589B2 JP 2017535694 A JP2017535694 A JP 2017535694A JP 2017535694 A JP2017535694 A JP 2017535694A JP 6702589 B2 JP6702589 B2 JP 6702589B2
Authority
JP
Japan
Prior art keywords
words
word
list
edit distance
electronic device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017535694A
Other languages
English (en)
Other versions
JP2018506115A (ja
Inventor
ゲインセイリンガム、モハン
Original Assignee
ワットスリーワーズ リミテッド
ワットスリーワーズ リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ワットスリーワーズ リミテッド, ワットスリーワーズ リミテッド filed Critical ワットスリーワーズ リミテッド
Publication of JP2018506115A publication Critical patent/JP2018506115A/ja
Application granted granted Critical
Publication of JP6702589B2 publication Critical patent/JP6702589B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/02Input arrangements using manually operated switches, e.g. using keyboards or dials
    • G06F3/023Arrangements for converting discrete items of information into a coded form, e.g. arrangements for interpreting keyboard generated codes as alphanumeric codes, operand codes or instruction codes
    • G06F3/0233Character input methods
    • G06F3/0237Character input methods using prediction or retrieval techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/232Orthographic correction, e.g. spell checking or vowelisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/274Converting codes to words; Guess-ahead of partial word inputs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Human Computer Interaction (AREA)
  • Machine Translation (AREA)
  • Document Processing Apparatus (AREA)

Description

本発明は、電子デバイスにおいて受け付けられた入力ストリングの、考えられる置き換えとして単語の候補を提案するためのコンピュータ実装方法に関する。
ユーザ入力を受け付けるよう適合された電子デバイスを使用する場合、ユーザが、単語又は他の入力データをミスタイプするかもしれない状況が多数ある。デバイスの中には、ユーザが入力中のテキストを修正する、又は当該テキストに対する修正を提案するために予測的なテキストシステムを利用するものがあるが、予測的なテキストシステムには多数の制約がある。他の場合では、ユーザは、テキストではない何か、又はテキストに加えて何かを入力中のこともあり、その結果、予測的なテキストシステムは、完全に関連性のあるものではないかもしれない。従って、ユーザが情報をやり取りしているシステムに、ユーザが入力したかもしれないものの置き換え又は修正の考えられる候補を決定する能力を提供するための余地がかなり残っている。
出願人の、2014年4月14日に出願された国際(PCT)特許出願番号PCT/GB2014/051152(出願人が先に開示したシステム)は、位置識別子を生成する方法を開示している。当該方法は、位置の地理座標を取得する段階と、地理座標を一意の単語群に変換する段階とを備える。複数の単語は、覚えやすい位置識別子として提供される。逆に、位置の地理座標を、その関連付けられた一意の単語群から特定することが可能である。
しかしながら、ユーザは、単語ベースの位置識別子を、特に、これが受け付け後しばらくして入力される場合、ミスタイプし、及び/又は間違って記憶するかもしれず、それにより、解決不可能な単語ベースの位置識別子の入力、すなわち、容認できる入力として認識されない単語ベースの位置識別子の結果として、彼らはおそらく、誤った地理的位置の解決を受ける、又は、位置出力を全く受けないということになるという点で問題が生じることがある。この問題は、例えば、どの国に、又は適用可能ならば、どの都市に解決された地理的位置があるのか、又は近いのかを強調し、これにより、ユーザが、それが正しい又は期待される出力であるかどうかを判断でき、それにより、エラーが起こったかもしれないことをユーザに明らかにすることによって、ある程度までユーザインタフェース内で緩和され得る。
エラーを特定し、位置の正しい3語連鎖の考えられる候補を提案する上では、かなりの技術的困難がある。これらの困難は、限定はされないが、以下のものを含む。
(i)必要な応答時間は、ユーザに効果的であるよう短くなくてはならないが、出願人が先に開示したシステムでは、ユーザが意図したかもしれない、考えられる3語の組み合わせが約57兆個あり、最新のデスクトップパーソナルコンピュータにおいてですら、これらを一つずつスキャンするプロシージャはどれも実現可能でなく、ハンドヘルド又は携帯型の電子デバイスにおいてはなお一層実現可能ではない。
(ii)1つの選択肢を検討する場合、受け付けられた元の入力文字ストリング又はそのようなストリングの一部に対するその近接度をある程度のものにする必要がある。このプロシージャは、何度も、すなわち、ユーザが意図したかもしれない位置の各々について一回呼び出されるので、この場合も計算効率のよいことを必要とする。このプロセスのある部分又は全体は、多数の容認できる入力のどれが実際の入力に近い又は最も近いかを決定する際、それらの容認できる入力を含む辞書に対する実際の入力の類似度を比較する段階と、場合により、当該容認できる入力を、実際の入力に対するそれらの近接度の観点からランク付け又はスコア付けする段階とを含むことが多い。
(iii)当該方法は、メモリが限られていることが多いスマートフォン又はタブレットコンピュータ又は同様のものなどの携帯型又はハンドヘルドの電子デバイスにおいて動作するよう適合される必要があり、故に、当該方法は、できるだけ少ないメモリを利用する必要がある。
[本発明の目的]
本発明の目的は、入力文字ストリングの予想される置き換えとして単語の候補を提案するためのシステムに関連する1又は複数の問題をある程度まで緩和又は除去することである。
上記の目的は、主クレームの特徴の組み合わせによって達成される。従属クレームは本発明の更に有益な実施形態を開示する。
本発明の別の目的は、出願人が先に開示したシステムに関連する1又は複数の問題をある程度まで緩和又は除去することである。
当業者ならば、以下の説明から、本発明の他の目的を導き出すであろう。従って、上記の目的の記述は、網羅的ではなく、単に本発明の多数の目的の一部を示す役割を果たす。
第1の主態様において、本発明は電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するためのコンピュータ実装方法を提供する。当該方法は、a)入力ストリングの冒頭サブストリングと、単語のリスト内の単語の一部又は全部のセットにおける各単語の冒頭サブストリングとの間の編集距離の値を受け付けるために、メモリ内に配列を設ける段階と、b)前述の編集距離の値を取得すべく、選択された単語を受け付けられた入力ストリングと比較する編集距離アルゴリズムを適用する段階と、c)単語のセットの1又は複数の単語について、それが、以前に検討された単語の接頭部と重複する文字数Kを決定し、以前に検討された単語のK個の接頭文字についての編集距離の値の一部又は全部を使用して、検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階とを備える。段階b)は、空語又は空ストリング""、すなわち、文字を含まない単語又はストリングに適用されるのが好ましい。当該配列は、キャッシュメモリに設けられてよい。なぜなら、それは、電子デバイス内の典型的なキャッシュメモリに収まるほど小さいからである。編集距離の値を受け付けるために、メモリに1つの配列だけが設けられるのが好ましい。単語の編集距離の値は、編集距離テーブルの形態で提供されてよい。検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階は、以前に検討された単語についての編集距離テーブルの最初のK+1個の行又は列からの既に存在する編集距離の値を、検討中の単語の編集距離テーブルに保持する段階を含んでよい。最初のK+1個の行又は列の編集距離の値は、再計算される必要はない。なぜなら、それらは、以前に検討された単語についてのテーブルから現在検討中の単語についてのテーブルへは変わらないままだからである。これは、検討中の単語についてのテーブルは、以前に検討された単語についてのテーブルを使用して、配列において用意されるということによる。当該方法において、段階b)は、単語のセット内のいくつかの単語に適用されてよい。ここで、当該単語は、順序付けられたリストにおいて間隔を空けて配置されている。当該方法において、段階b)は、空語に適用されるのが好ましい。当該方法において、段階cは、単語のセット内の各単語に適用されるのが好ましい。しかしながら、当該方法は、任意の順序の単語のセット内の単語に適用され得るものの、特定の順序の単語を検討する上で利点があることを理解されたい。一実施形態において、当該単語は、逆の順序で検討されてよいが、このこともまた、当該方法の実装に必須ではない。
第2の主態様において、本発明は、電子デバイスであって、当該電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するための、電子デバイスを提供する。当該デバイスは、機械可読命令を格納するメモリと、当該機械可読命令を実行して、本発明の第1の主態様に係る方法の段階を実施するよう構成されたプロセッサとを備える。当該電子デバイスは携帯型電子デバイスであるのが好ましが、デスクトップコンピュータなどのパーソナルコンピュータ(PC)を含んでよい。
第3の主態様において、本発明は、電子デバイスにおいて受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するためのシステムを提供する。当該システムは、機械可読命令を格納するメモリ、及び当該機械可読命令を実行するよう構成されたプロセッサを有するサーバと、機械可読命令を格納するメモリ、及び当該機械可読命令を実行するよう構成されたプロセッサを有する電子デバイスとを備え、当該サーバ及び電子デバイスは、ネットワークを通じて互いに通信するよう構成され、デバイスにおける受け付けられたストリングに基づいて、電子デバイスによってサーバに送信された要求に応答して、サーバは本発明の第1の主態様に係る方法の段階を実施する。
第4の主態様において、本発明は、本発明の第1の主態様に係る方法の段階を実施するための、電子デバイスのプロセッサによって実行可能な機械可読命令を格納するコンピュータ可読媒体を提供する。
第5の主態様において、本発明は、本発明の第1の主態様に係る方法の段階を実施するための、サーバのプロセッサによって実行可能な機械可読命令を格納するコンピュータ可読媒体を提供する。
本発明の概要は、必ずしも、本発明を定義するために必須の全ての特徴を開示しているわけではなく、本発明は、開示されている特徴の部分的組み合わせに在してよい。
本発明の上記の特徴及び更なる特徴が、次の添付の図面に関連してほんの一例として提供されている以下の好適な実施形態の説明から明らかになる。
編集距離テーブルの例を示す。 本発明に係るシステムの例の図である。 図2のシステムにおいて使用されるユーザデバイスの例の図である。 本発明の方法を示す一連の編集距離テーブルの1つである。 本発明の方法を示す一連の編集距離テーブルの1つである。 本発明の方法を示す一連の編集距離テーブルの1つである。
以下の説明は、好適な実施形態をほんの一例として、かつ、本発明を実行に移すために必要な特徴の組み合わせに限定することなく説明するものである。
本明細書における「一実施形態」又は「実施形態」に関する言及は、当該実施形態に関連して説明される特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれることを意味している。本明細書の様々な箇所における「一実施形態において」という文言の出現は、必ずしも全てが同じ実施形態を指すわけではなく、他の実施形態を互いに排除する別個の又は代替の実施形態であるわけでもない。更に、いくつかの実施形態によって示され得、他の実施形態によっては示され得ない様々な特徴が説明される。同様に、いくつかの実施形態の要件であり得、他の実施形態の要件ではあり得ない様々な要件が説明される。
図に示される要素は、様々な形態のハードウェア、ソフトウェア、又はそれらの組み合わせで実装されてよいことを理解されたい。これらの要素は、プロセッサ、メモリ、及び入出力インタフェースを含んでよい1又は複数の適切にプログラムされた汎用デバイスにおいて、ハードウェアとソフトウェアとの組み合わせで実装されるのが好ましい。
本説明は、本発明の原理を示している。故に、当業者ならば、本発明の原理を具現化し、その主旨及び範囲内に含まれる様々な構成を、本明細書においては明示的に説明も示されもしていないが、案出できることが理解される。
更に、本明細書において本発明の原理、態様、及び実施形態、並びにそれらの特定の例を記載する全ての記述は、それらの構造的等価物及び機能的等価物の両方を包含するよう意図されている。加えて、そのような等価物は、現在知られている等価物、及び将来開発される等価物、すなわち、構造を問わず、同一の機能を実行する開発されるあらゆる要素、の両方を含むことが意図されている。
本明細書の特許請求の範囲において、特定の機能を実行するための手段として表わされる任意の要素は、その機能を実行する何れかのやり方を包含するよう意図されている。そのやり方は、例えば、a)その機能を実行する回路素子の組み合わせ、又は、b)任意の形態のソフトウェアであって、従って、ファームウェア、マイクロコード又は同様のものを含み、当該ソフトウェアを実行してその機能を実行するための適切な回路と組み合わせられた、任意の形態のソフトウェアを含む。そのような特許請求の範囲によって定義される本発明は、記載した様々な手段によって提供された機能が、特許請求の範囲が必要とする態様で組み合わせられ、まとめられるという事実に在する。故に、それらの機能を提供できるあらゆる手段は、本明細書において示されるものと等価であると見なされる。
受け付けられた入力ストリング、例えば単語、の目標単語への近接度の標準的な大きさは、'編集距離'群の任意の1つのものによって与えられる。周知の例は、それら2つの間のレーベンシュタイン距離であり、当該レーベンシュタイン距離は、前者を後者に変形するのに必要な文字の挿入、削除、及び置換(総括して、操作)の最小数を数える。変形は、2つの隣接する文字の転置の操作を含む。別の変形は、レーベンシュタイン距離への重みの導入を含む。挿入、削除、置換、及び(適用可能な場合は)転置の各々には、'重み'又は'コスト'が割り当てられ、重み付き編集距離は、適切な変形を実行する一連の操作の最小合計コストとして定義される。この変形の部分変形は、置換のコストが、置換する文字及び置換される文字に依存することを可能にする。例えば、標準的なキーボード上でタイピングするユーザによって生成されたエラーを修正するよう試みる場合、キーボード上で近接する文字を含む置換にはより低いコストが割り当てられてよい。上記の変形の全ては、ユーザ入力の予測を含む、多くの適用におけるより良好な類似度の大きさである編集距離の値を生じる。
2つのストリングの間の編集距離を計算する従来の方法の1つは、ワグナー‐フィッシャー(Wagner−Fischer)アルゴリズムである。このアルゴリズムは、上述の変形の何れにも対処するよう適合され得る。基本的に、ワグナー‐フィッシャーアルゴリズムは、第1のストリングの全ての冒頭サブストリングから、第2のストリングの全ての冒頭サブストリングまでの編集距離を含むテーブルの構築に在する。冒頭サブストリングは、元のストリングの始まりと完全に一致するストリングである。故に、'here'は、'there'のサブストリングではあるが、冒頭サブストリングではない。一方、'the'は、'there'それ自体であるように、'there'の冒頭サブストリングである。空ストリング""は、全てのストリングの冒頭サブストリングを備える。
図1を参照すると、示されているのは、受け付けられた入力ストリングと、目標の又は意図された入力ストリングとを含むと見なされてよい2つのストリングについての編集距離テーブルの例である。本明細書においては、ミスタイプされた入力ストリングについて言及されるが、そのようなミスタイプされた入力ストリングは、つづりの、構文の、又は文法の誤りを含むと仮定されるべきではないということは注目に値する。それらは、一見正しい入力であるように思われ得るが、使用するとき、それらが入力されている意図されるアプリケーション又はプロセスにとって誤った又は誤りのある入力を含み得る。
図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は、従って、入力ストリングの目標ストリングへの近接度の編集距離の大きさ又は値を含む。
そのような編集距離テーブルにおいて、最上行は常に、値、0,1,2,...を順に含むことに留意されたい。なぜなら、長さkの元のストリングの冒頭サブストリングを(長さ0の目標ストリングの冒頭サブストリングである)空ストリング""に変える唯一の方法は、k回の削除を実行することによるからである。削除がコストdを有する重み付きの場合では、最上行は、0,d,2d,3d,...を順に含むだろう。同様に、左端の列は常に、値、0,1,2,...を順に含む。なぜなら、""を長さkのサブストリングに変える唯一の方法は、k回の挿入を実行することによるからである。挿入がコストiを有する重み付きの場合では、左端の列は、0,i,2i,3i,...を順に含むだろう。
通常の重み付きの場合では、d(r,c)が、長さrの元のストリングの冒頭サブストリングから、長さcの目標ストリングの冒頭サブストリングまでの編集距離として示される場合、以下のようになる。
d(0,c)=ci、式中、iは挿入コストである。
d(r,0)=rd、式中、dは削除コストである。
転置のない場合では、他の全てのセルは、次式を使用して計算され得る。
式中、s[r−1,c−1]は、r番目の元の文字をc番目の目標文字で置換するコストである。文字が等しい場合、これは'0'でなくてはならず、その結果、通常求められる特性である、ストリングからそれ自体までの編集距離もまた0であるということが確保されることに留意されたい。この'min'の中の3式のそれぞれは、編集距離を導き出すのに使用され得る操作のうちの1つに対応している。例えば、第1式のd+d(r−1,c)は、以下の段階によって、元のストリングを目標ストリングに変形する方法を指している。
a)最後の文字を削除する段階、次に、
b)結果として得られた長さr−1の元のストリングの冒頭サブストリングであるストリングを(長さcを有する)目標ストリングで置き換える段階。
故に、テーブルの全てのセルの値は、それらの上及び/又は左のセルの値に基づいて計算される。ワグナー‐フィッシャーアルゴリズムは単に、上から下、左から右に順に全てのセルの値を計算することからなる。テーブルの右下のエントリが、要求される実際の編集距離の値を与える。
本発明は、しかしながら、2つのストリングの間の編集距離を見つけることだけでなく、受け付けられた入力ストリングからの低い編集距離を有する、固定辞書内の単語の候補を見つけるという問題にも関する。
これを計算する従来のやり方は、辞書内の全ての単語にわたる繰り返しを含む。各辞書語について、受け付けられた入力ストリングと辞書語との間の編集距離は、例えば、ワグナー‐フィッシャーアルゴリズムを使用して計算される。受け付けられた入力ストリングからの最も低い編集距離を有する辞書語が、単語の候補として選択される。
この従来の方法の基本前提は、受け付けられた入力ストリングと比較して、辞書内の各単語を順番に検討することが必要であるということだが、例えば30,000から80,000語の辞書において、全ての単語が考えられる候補であると考えて、各ミススペルについて辞書全体を調べるのは現実的ではない。
従来の方法に対する代替又は改善は、'トライを使用する高速かつ簡単なレーベンシュタイン距離(Fast and Easy Levenshtein distance using a Trie)'を含む。この改善された手法は、トライと称されるデータ構造を構築する。トライでは、2又はそれより多くの単語の共通の接頭部が1つのノードで明示的に表されている。次に、当該手法は、トライ構造を使用して当該構造を再帰的にトラバースし、2つの単語が共通の接頭部を共有する場合、関連するテーブル行は厳密に一回計算されることを確保する。しかしながら、本手法にはかなりの技術的困難がある。特に、トライは莫大な量のメモリを消費し、それがあまりにも莫大なため、32ビットのオペレーティングシステムによって課される2GBから4GBの制限に適合すらしないこともある。
このように大量のメモリの利用は明らかに望ましくなく、実際に、多くのハンドヘルド又は携帯型の電子デバイスにおいては実現可能ですらない。それはまた、即座に明らかにはなり得ない欠点をもたらす。最新のコンピュータにおいて、メモリから値をフェッチするためにかかる時間は、プロセッサが原始的な計算を行うのにかかる時間を大きく超える。この影響は、'キャッシュ'と称される迅速にアクセス可能な非常に少量のメモリを有することによって緩和される。当該システムは、関連データがプロセッサによって要求される前に、主メモリから当該データをキャッシュに予めロードしようとヒューリスティックに試みる。これに失敗した場合、かなりの減速をもたらす。実際に、この状況は、プロセッサが典型的に、最も速いレベルのものが最小のメモリ容量を有する2つ又は3つのレベルの'キャッシュ'を有するという点でわずかに簡略化し過ぎたものになっている。最小キャッシュは典型的には、約32kBのサイズを有し、最大キャッシュは、PCでは約8MB、及びタブレットコンピュータ又は同様のものでは約1MBである。
キャッシュミスが確実に回避され得る状況が2つある。第1の状況は、検討される必要があるデータの全てがキャッシュに収まる場合であり、利用されるキャッシュが小さければ小さいほど、プログラムはより速くなる。第2の状況は、大量のデータがアクセスされているが、当該データは順次アクセスされている場合である。このアクセスパターンはごく一般的かつ極めて予測可能なので、システムは通常難なくそれを認識し、プロセッサによってデータを要求される前に、それをキャッシュに予めロードする。
トライデータ構造の場合、それが2GBから4GBの制限に適合することすらないかもしれないという事実は、それが完全にキャッシュに収まることはないということを極めて明らかにする。更に、トライデータ構造は、多数のノードから築き上げられ、当該多数のノードは通常、メモリ内で互いに遠く離れて位置している。システムがトライをトラバースするとき、システムは通常、順次アクセスとは非常にかけ離れたメモリアクセスパターンでノードからノードへジャンプする。この結果は、かなりの数の不経済な、すなわち遅い、キャッシュミスをもたらす。
上記において概説された改善された方法の第2の主な欠点は、それがトライの新しいノードに到達するたびに、テーブルの新たな行を(メモリから)'割り当てる'ことである。メモリ割り当てと、それに関連付けられなくてはならない暗黙的又は明示的な割り当て解除とは、検討中のアルゴリズムの文脈においては遅い操作である。更に、メモリ割り当ては通常、割り当てられたオブジェクトがメモリのどこに存在するかについて何の保証も与えず、これにより、トライベースの手法においては、テーブル行はメモリ内で広く離散した場所にあることもある。これは更にキャッシュ性能を低下させる、すなわち、キャッシュミス率がより高くなる。
第3の欠点は、トライデータ構造は、構築に大量の時間を要求し、これにより、アプリケーションのスタートアップが遅くなる。このことは、多くのシステム、特に移動中に使用されるハンドヘルドのシステム又はデバイスにとって望ましくない。
第4の欠点は、トライベースの手法が、末尾呼び出し最適化に適さない形態の反復を使用することである。これは、かなりの時間と空間オーバーヘッドとを含むことで知られている。
より低いメモリ使用量を有する改善された従来の方法の他の変形物においてですら、メモリ使用量は依然として高く、ほとんどの場合、構築されたデータ構造が完全にキャッシュに収まることはない。データ構造の部分部分は、離して割り当てられ、故に、メモリ内に広くばらまかれ、これにより、メモリアクセスは順次的でなくなる。故に、当該手法は多数のキャッシュミスを生じる。テーブル行を離して割り当てることに起因する当該問題は、本手法の下でもまた変わらない。また、遅いスタートアップと反復とに関連する問題も依然残る。
本発明は、上記問題に対する新しい解決策を提案した。当該解決策は、当該方法が、携帯型若しくはハンドヘルドの電子デバイス、又はデスクトップPCなどの電子デバイスにおいて、高速かつ計算効率的な態様で完全に実装されることを可能にする。
再び図、特に、図2及び図3を参照すると、本発明のシステム1は、いくつかのユーザデバイス2及びセントラルサーバ3を備える。ユーザデバイス2は、スマートフォン、タブレットコンピュータ、又は同様のものなどのハンドヘルド及び/又は携帯型の電子デバイス2a、及び/又はパーソナルコンピュータ(PC)2bを含む。ユーザデバイス2の各々は、インターネット4などのネットワークを通じてセントラルサーバ3と通信可能であるが、このことは、本発明の方法が電子デバイス2a又はPC2bにおいて完全に実行される場合には必須ではない。そのような場合では、電子デバイス2は、ネットワークに接続される必要はない。明確にするために、図1では3つだけの電子デバイス2aと、1つのPC2bとが示されているが、実際には、システム1は多数の電子デバイス2を含んでよいことが理解されるであろう。しかし、本発明の方法が1つの電子処理デバイス2において実装されてよいときは、このこともまた必須ではない。
図2は、システム1の電子デバイス2aの例を更に詳細に示している。図2に示されるように、電子デバイス2aは、データプロセッサ10、視覚ディスプレイ11、ユーザ命令がデバイス2aに入力され、情報がユーザに提示及び/又は表示されることを可能にするユーザインタフェース12、スピーカ13、及びマイク14を含む。電子デバイス2aの様々なコンポーネントは、メモリに格納された機械語を実行するプロセッサ10の制御のもと動作する。当該メモリはまた、キャッシュメモリを含む。ユーザインタフェース12は、タッチスクリーンディスプレイとして視覚ディスプレイと統合されてよい。他の例では、ユーザインタフェース12は、視覚ディスプレイから切り離された専用のキーパッドであってよい。これらのコンポーネントを含む電子デバイスは当業者には周知であるので、これらはここで詳細に説明される必要はない。ユーザPC2bが類似の機能を有することが理解されるであろう。
更に、電子デバイス2aは、位置決定手段15、マッピング又はナビゲーションモジュール16、及び位置特定モジュール11を備えてよい。ナビゲーションモジュール16及び位置特定モジュール17は、位置決定手段15から位置情報を受けるよう構成されている。示された例において、位置決定手段15は、いわゆるGPSなどのグローバルポジショニングシステムである。他の例では、種々の衛星利用ナビゲーションシステムが使用されてよい。ナビゲーションモジュール16及び位置特定モジュール17は、専用のハードウェアを備えてよい、又は、電子デバイス2aのプロセッサ10において動作するソフトウェアプログラム又はアプリケーションを備えてよい。いくつかの例では、ユーザPC2bは、位置決定手段15を備えなくてよい。いくつかの例では、位置決定手段を備えないユーザPC2bは、依然として、電子デバイス2aの位置決定手段などの別個の位置決定手段から位置情報にアクセスしてよい。
位置特定モジュール17は、位置決定手段15によって提供された位置情報を使用して位置ベースのサービスをユーザに提供する。
一般的に言えば、電子デバイス2a又はPC2bは、一実施形態において、デバイスそれ自体の位置、又は、ユーザによって選択された位置の地理座標をマッピング又はナビゲーションモジュール16において決定するよう構成されている。これらの数値座標は、次に、電子デバイス2a若しくはPC2bそれ自体において、又は、出願人の国際(PCT)特許出願番号PCT/GB2014/051152に開示されている態様でサーバ3を用いて、若しくは任意の他の適切なそのようなシステムを用いて、単語ベースの一意の位置識別子に解決され得る。
本明細書において開示される方法は、しかしながら、単語ベースの地理的位置識別子に限定されるのではなく、容認できる単語の辞書又はデータストアを有するデバイス又はシステムにおいて任意の入力文字ストリングに対して使用され得る。本発明の文脈において、用語'単語'は、自然言語の単語だけを含むように解釈されるのではなく、任意の入力された文字の、アルファベットの、数字の、又はその他のストリングを含んでよい。当該任意の入力されたストリングは、'単語'、例えば、デバイス又はシステムの辞書又はデータストアの容認できる又は予め定義された文字ストリングのエントリを含む若しくはそれに一致する、又は、辞書又はデータストアの何れかのそのような単語エントリを含む若しくはそれに一致するよう意図されている。
同じ又は別の実施形態において、単独の電子デバイス2a若しくはPC2b、又は、サーバ3と通信する電子デバイス2a若しくはPC2bは、複数語文字ストリングであることが好ましい受け付けられた文字の入力ストリングを地理的位置座標のセットなどの関連付けられた側面に解決するよう構成されている。位置ではないものに基づくいくつかの実施形態では、受け付けられた文字の入力ストリングは、検索クエリ又は製品識別子、例えば、バーコード番号又は同様のものなどの関連付けられた側面に解決される。
より具体的には、及び、以下の説明からより明らかになるように、本発明の方法は、電子デバイス2において受け付けられた入力ストリングに基づいて、単語のリストから1又は複数の単語の候補を提案するためのコンピュータ実装方法を備える。当該方法は、a)入力ストリングの冒頭サブストリングと、単語のリスト内の単語の一部又は全部のセットにおける各単語の冒頭サブストリングとの間の編集距離の値を受け付けるために、メモリ内に配列を設ける段階と、b)前述の編集距離の値を取得すべく、単語のセット内であってもなくてもよく、(0個の文字からなる)空語であってもなくてもよい選択された単語を、受け付けられた入力ストリングと比較する編集距離アルゴリズムを適用する段階と、c)単語のセットの1又は複数の単語について、それが、以前に検討された単語の接頭部と重複する文字数Kを決定し、以前に検討された単語のK個の接頭文字についての編集距離の値の一部又は全部を使用して、検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階とを備える。段階b)は、文字を有さない空語又は空ストリング""に適用されてよい。なぜなら、このことが、編集距離の値の計算が初期化されることを可能にするからである。当該配列は、キャッシュメモリに設けられてよい。なぜなら、それは、電子デバイス内の典型的なキャッシュメモリに収まるほど小さいからである。編集距離の値を受け付けるために、メモリに1つの配列だけが設けられるのが好ましい。単語の編集距離の値は、編集距離テーブルの形態で提供されてよい。検討中の当該単語のための当該メモリの配列に編集距離の値を保持する段階は、以前に検討された単語についての編集距離テーブルの最初のK+1個の行又は列からの既に存在する編集距離の値を、検討中の単語の編集距離テーブルに保持する段階を含んでよい。最初のK+1個の行又は列の編集距離の値は変わらないままなので、再計算される必要はない。単語のリストは、当該リストの各単語と、その先行する単語との間の重複量を増やす、又は最適化するよう構成された順序付けられた単語のリストを含むのが好ましい。当該方法において、段階b)は、単語のセット内のいくつかの単語に適用されてよい。ここで、当該単語は、順序付けられたリストにおいて間隔を空けて配置されている。当該方法において、段階b)は、順序付けられた単語のリストにおいて最も早くに現れる、選択された単語のセットの第1番目の単語に適用されてよい。当該方法において、段階cは、単語のセット内の各単語に順に適用されるのが好ましい。単語が任意の特定の順序で検討されることは当該方法の実装にとって必須ではないが、このことは利点をもたらす。単語は、恣意的な順序を含む任意の順序で検討されてよい。
以下の説明において、'単語'について、又は'単語のリスト'について言及する。しかし、この文脈における用語'単語'は、電子デバイスへの任意の受け付けられた入力ストリングを含み得、'単語のリスト'は、任意の単語のリストを含み得ることが理解されるであろう。第1の、一回だけの、好ましくはオフラインの段階において、単語のリストは、アルファベット順に、及び/又は数値的に、及び/又は何らかの予め定義された順序付けスキームによって、ソートされる又は順序付けられる。順序付けの目的は、リスト内の各単語とその次の単語との間の平均重複量をできるだけ多くする、すなわち増やすことである。つまり、ソート後、リスト内の各単語は、その直前の1又は複数の単語と長い接頭部を共有するという傾向が非常に強い。
単語のリストの並べ替えは好ましくはオフラインで行われ、故に、一回行われれば十分なので、本発明の方法を具現化するプログラムの任意のインスタンシエーションは、ソートされていない単語のリストではなく順序付けられた単語のリストと共に分配されるのが好ましい。単語のリストが、いくつかのアプリケーションについて未だ順序付けられていない場合では、元のソートされていない単語のリスト内の単語の位置は、関心のある、又は有用なままであってよい。この場合、ソートされていないリスト内の各単語は、ソートが実行される前のその位置を示す数値又は別の識別子と、それらの元の位置の指標と共に列挙された順序付けられた数値とでタグ付けされてよい。
受け付けられた入力ストリングについての単語のリスト内の単語の一部又は全部のセットについての、好ましくは編集距離テーブルの形態で提供された編集距離の値を処理すべく、単語のセットの各々についての編集距離を計算するのに要求されるテーブルの全てを格納するために、メモリ内に1つの配列を設ける。本発明の予期せぬ利点は、1つの配列が、キャッシュメモリ内に収容されるのに十分小さいということである。
単語のセットの各単語について、ワグナー‐フィッシャーアルゴリズムなどの編集距離アルゴリズムが適用されて、関連する編集距離テーブルが構築される。このことは、単語のセット内の第1番目の単語、例えば、単語のリストの第1番目の単語、を検討しない場合、処理中の単語のリストからの単語が以前に検討された単語と重複する最大文字数Kの決定を下す段階を含むのが好ましい。例えば、単語'cheating'を考えると、及び、単語'cheater'が検討されたばかりであれば、Kは5である。検討中の単語及び以前に検討された単語について、編集距離テーブルの最初のK+1行が同じであることは、編集距離アルゴリズムの特徴である。その結果として、ストリング'cheating'及び'cheater'は、それらの編集距離テーブルにおいて同じ最初の6行を有する。以前に検討された単語についての編集距離テーブルが計算されたのならば、その編集距離テーブルの最初のK+1行は、現在の単語についての編集距離テーブルのK+1行の正しい値を既に含む。その結果、当該方法は、以前に検討された単語についての最初のK+1行の編集距離の値を保持することによって、現在の単語についてのK+1行の計算をスキップすることができる。編集距離テーブルの構成は、上記方法が、テーブルの行ではなく列に適用されるようなものであり得、行に配置される編集距離の値を参照することは慣習的なことに過ぎないことが理解されるであろう。
また、単語のリストが好ましくは順序付けられている、例えば、アルファベット順に、及び/又は数値的に、及び/又は任意の他の適切な順序付けスキームによって順序付けられたならば、これによって、各単語とその先行するものとの間の大きな重複がもたらされる。その結果として、重複の範囲の計算は、スキップされたテーブル行の再計算と比較して非常に速いので、この変形物は、編集距離アルゴリズムが適用される場合、時間の大部分を節約する。
本発明の方法は、1つの予め割り当てられた配列を使用し、検討される辞書内の各単語についてその同じ1つの配列が再使用されて、ワグナー‐フィッシャープロシージャにおけるテーブルを表すのが好ましい。当該配列の2つの次元は、それぞれ、a)予期される又は許容される入力ストリングの長さ、及びb)辞書の最長単語の長さを超えるよう選択されるのが好ましい。この配列は、殆どの最新のコンピュータシステム及びコンピュータデバイスにおいて見られる最小キャッシュより大幅に小さいので、それへのアクセスは、テーブルアクセスに起因する最小のキャッシュミスしか伴わない。正確な実装パラメータに応じて、当該配列は1kB又はそれより小さい容量を占有し得る。実際に、当該配列は最小キャッシュに収まるので、それへのアクセスは極めて速い。更に、上述したように、非常に特殊な最適化と併せて1つの配列を再利用することで、キャッシュの効果が考慮されない場合ですら、元のままのアルゴリズムに比べてはるかに速いアルゴリズムがもたらされる。実際に、プロシージャ中にメモリが割り当てられる、又は割り当て解除されることはなく、その結果、割り当て及び割り当て解除に係る直接的なコストと、キャッシュミスの増加に起因する間接的なコストとの両方が回避される。
単語のリストは、その自然な形式で、すなわち、単語の配列として使用されるのが好ましい。故に、データ構造を構築する必要があるために減速されることがない。更に、単語のリストは厳密に順次アクセスされる、つまり、第1番目の単語にアクセスし、次に第2番目の単語にアクセスする、といった具合にアクセスするのが好ましい。単語のリストそれ自体が賢明に割り当てられた場合、これにより、単語のリストへのアクセスに起因する最小のキャッシュミスしかもたらされない。
ワグナー‐フィッシャープロシージャにおけるテーブルは、最小空間を使用して格納され、単語のリストはその自然な形式でアクセスされるので、本明細書において説明される本発明の方法は、事実上空間オーバーヘッドを有さない。
当該方法は、反復を使用しないので、関連する時間及び空間オーバーヘッドを回避する。
本発明の方法を、出願人の先の特許出願において開示されたものなどの特定の用途に適用する場合、受け付けられた入力ストリングの予想される置き換えとして単語の候補を提案するために適用される種々のスキームがあり得る。そのようなスキームの1つは、受け付けられた入力ストリングの所与の編集距離閾値内の全ての辞書語を見つけること、又は、編集距離の観点から、受け付けられた入力ストリングに最も近いM個の単語を見つけることであってよい。これらは早期終了最適化プロセス(early termination optimisation process)と見なされ得る。
後者の場合では、各単語についての編集距離を格納し、それから、最後にM個の最良の単語を決定するのではなく、優先度付きキューなどの標準的なデータ構造が使用されて、M個の最良の単語だけがそれらの編集距離と併せて格納されてよい。Mが事前に分かっているので、優先度付きキューのための空間が予め割り当てられて、編集距離計算処理中の割り当てが回避され得る。優先度付きキューは、主ループを簡略化すべく、選択された高い編集距離を有する'番兵(sentinel)'単語で初期化されるのが好ましい。これらの番兵は常に、検討される最初のM個の単語によって位置をずらされるので、最終的な出力には決して現れない。
所与の編集距離内の単語を見つける場合において、編集距離テーブル計算は、単語の編集距離テーブルの所与の行内の全てのエントリが閾値より大きいと決定されたら直ちにその単語について終了するのが好ましく、転置が考慮される場合、転置のコストを加えた前の行の全てのエントリは閾値より大きい。この状況においては、しかしながら、計算の残りは、その結果が、単語の候補を提案するのに有望ではないにもかかわらず続行することがある。
M語の場合において、M個の最良の単語の最大編集距離は、好ましくは継続してトラッキングされ、優先度付きキューデータ構造を使用することで、これを行うのが比較的容易になる。継続的に更新された値は、まさに閾値を使用する場合の通りにカットオフとして使用されて、処理を最適化するのが好ましい。両方の場合において、配列内の各行における最小値がトラッキングされて、上記において説明されたように、行の再計算がスキップされる場合、これを再計算することが回避される。
別々に又は組み合わせて適用され得る早期終了最適化プロセスは特に効果的である。なぜなら、それらは、主編集距離計算プロセスとの相乗効果を生み出すからである。主編集距離プロセスは、単語の接頭部の計算のスキップを可能にする。一方で、早期終了最適化は、十分な文字が調べられて、単語が有望な候補ではないことを確認したら直ちに単語の検討が終結されることを可能にする。換言すると、これらの最適化は、語尾の複雑さの処理がスキップされることを可能にする。主編集距離プロセス及び(複数の)早期終了プロセスは共に、各後続の単語の中程の小セグメントだけが検討されることを可能にし、これにより、計算効率の良い、高速な処理がもたらされる。
例えば、主編集距離プロセスが、単語の最初の40%が(その先行するものの編集距離テーブルのK+1行をコピーすることによって)スキップされることを可能にし、早期終了プロセスの1つ又は両方が、単語の最後の40%がスキップされることを可能にする場合を考えよう。主プロセス又は(複数の)早期終了プロセスは、元の実行時間の60%まで処理時間を低減する(顕著なオーバーヘッドはないと仮定して)。この2つのプロセスが独立であれば、実行時間が元の実行時間の36%まで低減されることが期待されるだろう。しかしながら、2つの処理は相互補完的であり、各単語の20%を検討することだけが必要なので、これは、実行時間を元の実行時間の約20%まで低減するだろう。
各単語と、順序付けられた単語のリスト内の次の単語との間の重複は、予め計算され、格納されるのが好ましい。空間におけるコストは、単語のリストそれ自体に比べて小さく、これにより、処理速度のかなりの改善がもたらされる。
いくつかの用途において、'早期終了'最適化の1又は複数が適用されている場合、単語が有望ではないと決定するのに十分な行が、多数の後続の単語と共有される。この場合、これら単語を1つずつ検討することを回避するのが好ましい。より具体的には、単語の編集距離テーブルの最初のK+1行が、当該単語が、受け付けられた入力ストリングにとっての有望な候補ではないと分かるのに十分である場合では、先行するものとK個以上の文字の重複を有する全ての後続の単語を次にスキップすることが可能である。これを効率的に行うべく、重複情報は、各単語に、先行するものに対してより短い重複を有するリスト内の次の単語を指させることによって増補される。ポインタのチェーンをたどることで、全ての有望ではない単語を迅速にスキップすることが保証される。
また、テーブルの第1行及び第1列は常に同じ値を含むので、配列は、アルゴリズムの開始時にこれらの値で初期化され得、二度と書き込まれ得ないことが好ましい。このことがまた、直接的にも間接的にも、タイムクリティカルな領域のコードの量を低減させ、故に分岐予測を潜在的に向上させる等によってかなりの速度増加を提供する。
図4aから図4cを参照すると、一連の編集距離テーブルが示されている。単に例として、入力ストリング'abanden'から始めると、図4aは、本発明の方法の最初の段階の編集距離テーブルを示す。本例において、入力ストリングは、テーブルの最上行にわたって横方向に配置され、結果として得られる編集距離の値を取得すべく入力ストリングが比較される単語は、テーブルの左側、すなわち左端の列に下方へ縦方向に配置されている。テーブルは、メモリの1つの配列内に収容される。テーブルは、例えば、入力ストリングが縦方向に配置され、比較語が横方向に配置されるように、異なって編成され得ることが理解されるであろう。図4aにおいて、比較語は、空語、すなわち、文字のない、又は空ストリングの単語を含む。また、本例では、文字の挿入、削除、又は置換だけが許容され、各操作は、値又はコスト1を有し、単語のリストは'abacus'、'abandon'等から開始する。
最初の段階において、空語と比較した入力ストリング'abanden'の編集距離の値が計算される。これにより、図4aに示されるようなテーブルがもたらされる。当該テーブルにおいて、テーブルの最上行だけが、この場合は、空語から入力ストリングに変化するのに必要な文字挿入数(又は逆に、入力ストリングから空語に変化するのに必要な削除数)を示す編集距離の値を含む。本例では、少なくとも入力ストリングほど広く、比較語より深くなくてはならないということを除いて、テーブルのサイズに重要性はない。実際には、テーブルのサイズは両方の点においてより大きい。
図4aにおいて、テーブル内の'?'エントリは、読み出される必要のない値を示している。その結果として、テーブル内のこれらの値は初期化すら必要ではない。本例のテーブル内の下線が引かれた値、すなわち'7'は、入力ストリング'abanden'から空語ストリングまでの編集距離を含む。
ここで図4bを参照すると、これは単語のリストからの比較語'abacus'の編集距離の値のテーブルを含む。当該方法のこの段階では、図4aのテーブルを含む既存のメモリの配列が再利用されて、単語'abacus'と比較した入力ストリング'abanden'の編集距離の値が取得される。検討されたすぐ前の単語(空語ストリング)と'abacus'とは、0個の文字が重複しているので、K=0であり、故にK+1=1である。その結果として、図4bのテーブルの第1行を計算する必要はなく、図4aのテーブルの第1行が、図4bのテーブルの第1行として保持されるが、図4bのテーブルの次の6つの行は、本例では計算の必要がある。理解されるように、本発明の方法のいくつかの実施形態においては、'abacus'についてのテーブルの次の6つの行のいくつかについての編集距離の値を計算する場合、この比較語が誤った形の入力ストリングにとっての有望な単語の候補ではないと判断又は決定を下し、それにより、この単語の更なる編集距離の値の計算を終了する、すなわち、テーブルを完成しないことが可能である。
図4bのテーブルにおいて、完成したテーブルの右端でありかつ下端の編集距離の値、すなわち、下線が引かれた値'4'は、入力ストリング'abanden'から比較語'abacus'までの編集距離の大きさを含む。入力ストリング'abanden'の比較語'abacus'との比較結果のこの値はメモリに格納され、入力ストリングの提案される置き換えとして単語の候補をランク付け又はスコア付けすることによって選択する際に使用され得る。
図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'を置き換えるためのより良好な単語の候補であることを示している。
本発明の方法は、図4cのテーブルが、単語のリスト内の次の単語などについての編集距離の値を取得するための開始点として働きつつ継続するだろう。それにより、各段階における、相当な数の行についての編集距離の値を計算する必要性をなくす。
図4aによって示された、比較語として空語ストリングを使用する最初の段階は利点を提供するが、それは必須の段階ではない。本例の方法は、比較語'abacus'の編集距離の値を計算することによって開始され得る。しかしながら、図4aの最初の段階を使用する利点は、それが、1つの配列における編集距離テーブルの初期化をはるかに簡単にするということである。なぜなら、空ストリングと比較された何れの入力ストリングの第1行も一続きの0,1,2,3,4,5...Sを含むからである。ここで、sは入力ストリングの長さである。その結果として、図4aの最初のテーブル、又は、本方法を使用する任意の最初のテーブルの距離の値を実際に計算する必要はない。
また、次のやり方:何か計算が開始する前に、配列の左端の列に値0,1,2,3,4,....h−1を入力するというやり方でテーブルごとの計算数を低減することも可能である。ここで、hは、配列の高さである。これらの値は、全てのテーブルについて有効なので全ての後続の計算を通して保持されてよく、これにより、何れのテーブルの左端の列に関係する如何なる計算も決して行う必要はない。このことはまた、タイムクリティカルなコードが考慮する必要があるエッジケースの数を低減する利点も有し、このことは同様に、更なる速度増加をもたらし得る。
当該方法は、順序付けられた比較語のリストに基づいているのが好ましいが、このことは、本発明の方法の実装にとって必須ではない。なぜなら、当該方法は、任意の特定の順序の単語のリストからの単語の検討を必要としないからである。しかしながら、単語のリスト内で単語を順序付けると、各単語とその次の単語との間の重複が増やされ得て、それにより、単語のテーブルが、すぐ前の検討された単語のテーブルからの値を保持できる程度を増加させ得る。
本発明の方法は、出願人の先に開示された特許出願において開示された方法において適用されて、システムが、40,000個の容認できる'単語'の'辞書'を使用するとき、地理的位置の指標(indicator)についての予期される3語の入力の任意の1又は複数のものの置き換え又は修正として、予想される単語の候補が選択され得る。
本発明が、図面及び先述の説明において詳細に示され説明されているが、本発明は、特性において例示的であって限定的ではないと見なされるべきであり、例示的実施形態のみが示され説明されており、いかなる方法であっても本発明の範囲を限定しないということが理解される。本明細書において説明された特徴の何れかが、何れかの実施形態で使用されてよいことが理解され得る。例示の実施形態は、互いに排除するものではない、又は、本明細書において記載されない他の実施形態を排除するものではない。従って、本発明はまた、上述された例示の実施形態のうちの1又は複数のものの組み合わせを含む実施形態も提供する。本明細書に記載の本発明に対する変形及び変更が、本発明の主旨及び範囲から逸脱することなく成され得、従って、添付の特許請求の範囲によって示される限定のみが課されるべきである。
次に続く特許請求の範囲において、及び本発明の前述の説明において、言語又は必要な含意を表現するために文脈上他の意味に解すべき場合を除き、単語「備える(comprise)」、又は「備える(comprises)」若しくは「備える(comprising)」などの変形語は、包含的な意味で、すなわち、述べられた特徴の存在を特定するが、本発明の様々な実施形態における更なる特徴の存在又は追加を除外しないように使用される。
何れかの従来技術の公報が本明細書において参照された場合、こうして参照することによって、当該公報が当該技術分野における共通一般知識の一部を形成するものと認めることにはならないことが理解されるべきである。

Claims (25)

  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の何れか一項に記載の方法の段階をサーバのプロセッサに実施させるためのプログラム。
JP2017535694A 2015-01-06 2016-01-02 電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法 Active JP6702589B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1500104.3A GB2535439A (en) 2015-01-06 2015-01-06 A method for suggesting candidate words as replacements for an input string received at an electronic device
GB1500104.3 2015-01-06
PCT/EP2016/050002 WO2016110455A1 (en) 2015-01-06 2016-01-02 A method for suggesting candidate words as replacements for an input string received at an electronic device

Publications (2)

Publication Number Publication Date
JP2018506115A JP2018506115A (ja) 2018-03-01
JP6702589B2 true JP6702589B2 (ja) 2020-06-03

Family

ID=55085643

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017535694A Active JP6702589B2 (ja) 2015-01-06 2016-01-02 電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法

Country Status (8)

Country Link
US (1) US11017169B2 (ja)
EP (1) EP3243142A1 (ja)
JP (1) JP6702589B2 (ja)
KR (1) KR102482391B1 (ja)
CN (1) CN107408108A (ja)
GB (1) GB2535439A (ja)
WO (1) WO2016110455A1 (ja)
ZA (1) ZA201705193B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2549240A (en) 2015-01-06 2017-10-18 What3Words Ltd A method for suggesting one or more multi-word candidates based on an input string received at an electronic device
CN106326484A (zh) * 2016-08-31 2017-01-11 北京奇艺世纪科技有限公司 搜索词纠错方法及装置
US20180074970A1 (en) * 2016-09-09 2018-03-15 Sap Se Cache-Efficient Fragmentation of Data Structures
JP6690484B2 (ja) * 2016-09-15 2020-04-28 富士通株式会社 音声認識用コンピュータプログラム、音声認識装置及び音声認識方法
WO2019070412A1 (en) * 2017-10-03 2019-04-11 Precision Location Intelligence, Inc. SYSTEM FOR GENERATING AND USING GEOGRAPHIC HASH EXPRESSIONS
CN108595419B (zh) * 2018-04-11 2022-05-03 广州视源电子科技股份有限公司 候选词评估方法、候选词排序方法及装置
CN108681535B (zh) * 2018-04-11 2022-07-08 广州视源电子科技股份有限公司 候选词评估方法、装置、计算机设备和存储介质
MA43451B2 (fr) * 2018-10-01 2021-08-31 Univ Int Rabat Procédé de prédiction des codes à barres non lus par intelligence artificielle
KR20210132855A (ko) * 2020-04-28 2021-11-05 삼성전자주식회사 음성 처리 방법 및 장치
US11776529B2 (en) * 2020-04-28 2023-10-03 Samsung Electronics Co., Ltd. Method and apparatus with speech processing
CN112905026B (zh) * 2021-03-30 2024-04-16 完美世界控股集团有限公司 展示单词建议的方法、装置、存储介质及计算机设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2000057291A1 (en) 1999-03-24 2000-09-28 Justsystem Corporation Spelling correction method using improved minimum edit distance algorithm
US7584173B2 (en) * 2003-02-24 2009-09-01 Avaya Inc. Edit distance string search
US7584093B2 (en) * 2005-04-25 2009-09-01 Microsoft Corporation Method and system for generating spelling suggestions
KR100835289B1 (ko) * 2006-11-20 2008-06-05 엔에이치엔(주) 키 배열 정보를 이용한 단어 추천 방법 및 그 시스템
US7630978B2 (en) * 2006-12-14 2009-12-08 Yahoo! Inc. Query rewriting with spell correction suggestions using a generated set of query features
US7957955B2 (en) * 2007-01-05 2011-06-07 Apple Inc. Method and system for providing word recommendations for text input
US8232973B2 (en) * 2008-01-09 2012-07-31 Apple Inc. Method, device, and graphical user interface providing word recommendations for text input
US20100251105A1 (en) * 2009-03-31 2010-09-30 Lenovo (Singapore) Pte, Ltd. Method, apparatus, and system for modifying substitution costs
ES2642379T3 (es) * 2010-11-10 2017-11-16 Rakuten, Inc. Dispositivo de registro de palabras relacionadas, dispositivo de procesamiento de información, método de registro de palabras relacionadas, programa para dispositivo de registro de palabras relacionadas, y medio de almacenamiento
US9235654B1 (en) * 2012-02-06 2016-01-12 Google Inc. Query rewrites for generating auto-complete suggestions
US9218333B2 (en) * 2012-08-31 2015-12-22 Microsoft Technology Licensing, Llc Context sensitive auto-correction
US20150149482A1 (en) * 2013-03-14 2015-05-28 Google Inc. Using Live Information Sources To Rank Query Suggestions
GB2513196A (en) 2013-04-19 2014-10-22 What3Words Ltd A method and apparatus for identifying and communicating locations
US9230041B2 (en) * 2013-12-02 2016-01-05 Qbase, LLC Search suggestions of related entities based on co-occurrence and/or fuzzy-score matching
US10380144B2 (en) * 2015-06-16 2019-08-13 Business Objects Software, Ltd. Business intelligence (BI) query and answering using full text search and keyword semantics

Also Published As

Publication number Publication date
KR20170122727A (ko) 2017-11-06
EP3243142A1 (en) 2017-11-15
JP2018506115A (ja) 2018-03-01
ZA201705193B (en) 2018-11-28
KR102482391B1 (ko) 2022-12-29
CN107408108A (zh) 2017-11-28
WO2016110455A1 (en) 2016-07-14
US11017169B2 (en) 2021-05-25
GB2535439A (en) 2016-08-24
US20170364502A1 (en) 2017-12-21

Similar Documents

Publication Publication Date Title
JP6702589B2 (ja) 電子デバイスにおいて受け付けられた入力ストリングの置き換えとして単語の候補を提案するための方法
US10055439B2 (en) Fast, scalable dictionary construction and maintenance
US20090043741A1 (en) Autocompletion and Automatic Input Method Correction for Partially Entered Search Query
CN111052064B (zh) 自动提供基于手势的自动完成建议的方法及其电子设备
CN107851108B (zh) 使用位向量搜索索引的匹配文档
US20090287660A1 (en) Bit string searching apparatus, searching method, and program
CN108304484A (zh) 关键词匹配方法及装置、电子设备和可读存储介质
CN102063508A (zh) 基于广义后缀树的中文搜索引擎模糊自动补全方法
US10387543B2 (en) Phoneme-to-grapheme mapping systems and methods
JP5930228B2 (ja) 情報処理装置、方法及びプログラム
US10949465B1 (en) Efficient graph tree based address autocomplete and autocorrection
WO2015075920A1 (ja) 入力支援装置、入力支援方法及び記録媒体
WO2012015021A1 (en) Stroke and structure input method and system
JP6834109B2 (ja) 電子デバイスにおいて受け付けられた入力ストリングに基づいて、1又は複数の複数語候補を提案するための方法
US10546061B2 (en) Predicting terms by using model chunks
OA18487A (en) A method for suggesting candidate words as replacements for an input string received at an electronic device.
JP6076285B2 (ja) 翻訳装置、翻訳方法及び翻訳プログラム
CN112286579B (zh) 数据处理方法、装置、计算机可读存储介质和计算机设备
CN113988091A (zh) 一种用于笔译过程的数据交互方法与***
CN113569010A (zh) 过滤检索结果的方法、装置、设备以及存储介质
JP4076533B2 (ja) 情報変換装置及びプログラム
JP2021096761A (ja) 検索支援装置
WO2020035738A1 (en) Techniques for automated control of computer programs through text-based user interfaces
OA18355A (en) A method for suggesting one or more multiword candidates based on an input string received at an electronic device.
JPH09259124A (ja) 文書表示装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190830

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190910

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191206

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200427

R150 Certificate of patent or registration of utility model

Ref document number: 6702589

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250