(57)【特許請求の範囲】
【請求項１】
第１の文字列を取得する取得部と、
１つ以上の第２の文字列の各々と、当該第２の文字列を識別する文字列識別情報とが対応付けられた識別情報付文字列群を記憶する文字列群記憶部と、
前記識別情報付文字列群中の前記第２の文字列に含まれる全ての文字について、異なる前記文字毎に、当該文字と、当該文字を含み前記識別情報付文字列群に含まれる前記第２の文字列の文字列識別情報と、が対応付けられた文字インデックスを記憶する文字インデックス記憶部と、
前記第１の文字列に含まれる文字に、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列を選択する文字列選択部と、
を具備し、
前記文字列選択部は、前記第１の文字列と前記第２の文字列との最長共通部分列の文字数を、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数に基づいて再帰的に算出し、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数と、前記第１の文字列から前記部分文字列を除いた残りの文字数との合計値が、予め定められた閾値未満の場合、当該第１の文字列と当該第２の文字列との最長共通部分列の文字数の算出を中止し、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列のうち、前記第１の文字列との最長共通部分列の文字数が閾値以上の第２の文字列のみをさらに選択することを特徴とする文字列選択装置。
【請求項２】
前記文字列選択部は、前記最長共通部分列の文字数を示すＬＣＳ長行列として、前記第１の文字列のうち前記第２の文字列に含まれない文字に対応する行を除いたＬＣＳ長行列にて示される最長共通部分列の文字数を用いて、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列のうち、前記第１の文字列との最長共通部分列の文字数が閾値以上の第２の文字列のみを選択することを特徴とする請求項１に記載の文字列選択装置。
【請求項３】
１つ以上の第２の文字列の各々と、当該第２の文字列を識別する文字列識別情報とが対応付けられた識別情報付文字列群を記憶する文字列群記憶部と、
前記識別情報付文字列群中の前記第２の文字列に含まれる全ての文字について、異なる前記文字毎に、当該文字と、当該文字を含み前記識別情報付文字列群に含まれる前記第２の文字列の文字列識別情報と、が対応付けられた文字インデックスを記憶する文字インデックス記憶部と、
を具備する文字列選択装置の文字列選択方法であって、
取得部が、第１の文字列を取得する取得ステップと、
文字列選択部が、前記第１の文字列に含まれる文字に、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列を選択する文字列選択ステップと、
を具備し、
前記文字列選択ステップでは、前記第１の文字列と前記第２の文字列との最長共通部分列の文字数を、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数に基づいて再帰的に算出し、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数と、前記第１の文字列から前記部分文字列を除いた残りの文字数との合計値が、予め定められた閾値未満の場合、当該第１の文字列と当該第２の文字列との最長共通部分列の文字数の算出を中止し、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列のうち、前記第１の文字列との最長共通部分列の文字数が閾値以上の第２の文字列のみをさらに選択することを特徴とする文字列選択方法。
【請求項４】
１つ以上の第２の文字列の各々と、当該第２の文字列を識別する文字列識別情報とが対応付けられた識別情報付文字列群を記憶する文字列群記憶部と、
前記識別情報付文字列群中の前記第２の文字列に含まれる全ての文字について、異なる前記文字毎に、当該文字と、当該文字を含み前記識別情報付文字列群に含まれる前記第２の文字列の文字列識別情報と、が対応付けられた文字インデックスを記憶する文字インデックス記憶部と、
を具備する文字列選択装置としてのコンピュータに、
第１の文字列を取得する取得ステップと、
前記第１の文字列に含まれる文字に、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列を選択する文字列選択ステップと、
を実行させ、
前記文字列選択ステップでは、前記第１の文字列と前記第２の文字列との最長共通部分列の文字数を、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数に基づいて再帰的に算出させ、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数と、前記第１の文字列から前記部分文字列を除いた残りの文字数との合計値が、予め定められた閾値未満の場合、当該第１の文字列と当該第２の文字列との最長共通部分列の文字数の算出を中止させ、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列のうち、前記第１の文字列との最長共通部分列の文字数が閾値以上の第２の文字列のみをさらに選択させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字列選択装置、文字列選択方法およびプログラムに関する。
【背景技術】
【０００２】
コンピュータ等においてユーザが用語（文字列）を入力する負担を軽減する用語入力支援方法の１つに、当該コンピュータ等が、予め記憶する用語群の中から、入力済みの文字列に類似する用語を用語候補として選択して表示し、表示した用語候補のいずれかに対するユーザの選択操作を受け付ける方法がある。
例えば、コンピュータの表示画面に表示される診断書に病名を入力する際、図１２（ａ）に示すように、ユーザによる「大腸」の入力に対して、コンピュータは、この「大腸」に類似する用語として、「大腸炎」や「大腸癌」など、「大腸」を含む用語を選択し、入力欄の下方近傍に表示する。そして、カーソルキーあるいはマウスを用いてユーザが「大腸ポリープ」を選択すると、コンピュータは、選択された「大腸ポリープ」を入力欄に表示する。
【０００３】
一方、ユーザが用語の選択を行わずに、更に「癌」を入力すると、コンピュータは、同図（ｂ）に示すように、入力された文字列「大腸癌」のうち２文字以上を含む、「大腸炎」や「大腸粘膜内癌」などの用語を選択して表示する。
このように、入力された文字列の全部を含む用語に限らず、一部を含む用語も表示することにより、「大腸炎」を誤って「大腸癌」と入力する文字違いや、「転移性大腸癌」を誤って「転移大腸癌」と入力する入力不足など、入力された文字列に誤りがある場合にもユーザの意図する用語を表示し得る。
【０００４】
このような、入力済みの文字列に類似する用語を用語候補として選択する方法として、例えば、特許文献１に示される方法を用いることが考えられる。同文献では、"leucocyte"と"leukocyte"など、同一の事物を示す用語の表記が異なる「表記揺れ」の用語を取得する方法が示されている。この方法では、注目する用語に対する表記揺れの用語を収集するために、まず、予め記憶する用語の各々について、注目する用語とのＮグラム（文字数Ｎの部分文字列）の一致度および文字列長の類似度を比較することにより、類似する用語の絞込みを行う（以下では、この絞込みを「第１の絞込み」と称する）。そして、大文字と小文字との置換は１０点、数字の置換は１００点など、編集内容毎に設定されたコストで重み付けされた編集距離に基づいて、さらに用語の絞込みを行う（以下では、この絞込みを「第２の絞込み」と称する）。
この方法を、用語候補の選択に用いると、入力済みの文字列と共通の部分文字列を多く含み、入力済みの文字列に文字数が類似し、かつ、入力済みの文字列に対してコストの小さい変換操作を行って得られる文字列を抽出できる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３５２８８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に示される方法を用語候補の選択に用いた場合、第１の絞込みを行う段階で、編集距離が小さい用語が除外されてしまい、最終的に、ユーザが入力したい用語を抽出できなくなるおそれが強くなってしまう。
かかる不都合を回避するために、第１の絞込みを行う段階における絞込み要件を緩和することによって除外する用語の数を少なくすることが考えられる。しかし、第１の絞込みを行う段階で除外する用語の数を少なくすると、第２の絞込みの対象となる用語の数が増大し、処理に要する時間が増大してしまう。ユーザに、用語候補の表示を待つストレスを与えないためには、例えば文字列が入力されてから０．１秒以内に用語候補を表示するなど、高速に用語候補を選択して表示する必要がある（例えば、図１２（ｂ）の「癌」が入力された後速やかに、同図（ｂ）に示す用語候補を表示する必要がある）が、処理に要する時間の増大により、高速に用語候補を選択して表示できないおそれがある。
【０００７】
本発明は、このような事情を考慮してなされたものであり、その目的は、ユーザの入力したい文字列の候補を適切に、かつ、高速に得られる文字列選択装置、文字列選択方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００８】
この発明は上述した課題を解決するためになされたもので、本発明の一態様による文字列選択装置は、第１の文字列を取得する取得部と、１つ以上の第２の文字列の各々と、当該第２の文字列を識別する文字列識別情報とが対応付けられた識別情報付文字列群を記憶する文字列群記憶部と、前記識別情報付文字列群中の前記第２の文字列に含まれる全ての文字について、異なる前記文字毎に、当該文字と、当該文字を含み前記識別情報付文字列群に含まれる前記第２の文字列の文字列識別情報と、が対応付けられた文字インデックスを記憶する文字インデックス記憶部と、前記第１の文字列に含まれる文字に、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列を選択する文字列選択部と、を具備し、前記文字列選択部は、前記第１の文字列と前記第２の文字列との最長共通部分列の文字数を、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数に基づいて再帰的に算出し、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数と、前記第１の文字列から前記部分文字列を除いた残りの文字数との合計値が、予め定められた閾値未満の場合、当該第１の文字列と当該第２の文字列との最長共通部分列の文字数の算出を中止し、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列のうち、前記第１の文字列との最長共通部分列の文字数が閾値以上の第２の文字列のみをさらに選択することを特徴とする。
【０００９】
また、本発明の一態様による文字列選択装置は、上述の文字列選択装置であって、前記文字列選択部は、前記最長共通部分列の文字数を算出するためのＬＣＳ長行列にて示される最長共通部分列の文字数を用いて、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列のうち、前記第１の文字列との最長共通部分列の文字数が閾値以上の第２の文字列のみを選択することを特徴とする。
【００１１】
また、本発明の一態様による文字列選択方法は、１つ以上の第２の文字列の各々と、当該第２の文字列を識別する文字列識別情報とが対応付けられた識別情報付文字列群を記憶する文字列群記憶部と、前記識別情報付文字列群中の前記第２の文字列に含まれる全ての文字について、異なる前記文字毎に、当該文字と、当該文字を含み前記識別情報付文字列群に含まれる前記第２の文字列の文字列識別情報と、が対応付けられた文字インデックスを記憶する文字インデックス記憶部と、を具備する文字列選択装置の文字列選択方法であって、取得部が、第１の文字列を取得する取得ステップと、文字列選択部が、前記第１の文字列に含まれる文字に、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列を選択する文字列選択ステップと、を具備し、前記文字列選択ステップでは、前記第１の文字列と前記第２の文字列との最長共通部分列の文字数を、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数に基づいて再帰的に算出し、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数と、前記第１の文字列から前記部分文字列を除いた残りの文字数との合計値が、予め定められた閾値未満の場合、当該第１の文字列と当該第２の文字列との最長共通部分列の文字数の算出を中止し、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列のうち、前記第１の文字列との最長共通部分列の文字数が閾値以上の第２の文字列のみをさらに選択することを特徴とする。
【００１２】
また、本発明の一態様によるプログラムは、１つ以上の第２の文字列の各々と、当該第２の文字列を識別する文字列識別情報とが対応付けられた識別情報付文字列群を記憶する文字列群記憶部と、前記識別情報付文字列群中の前記第２の文字列に含まれる全ての文字について、異なる前記文字毎に、当該文字と、当該文字を含み前記識別情報付文字列群に含まれる前記第２の文字列の文字列識別情報と、が対応付けられた文字インデックスを記憶する文字インデックス記憶部と、を具備する文字列選択装置としてのコンピュータに、第１の文字列を取得する取得ステップと、前記第１の文字列に含まれる文字に、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列を選択する文字列選択ステップと、を実行させ、前記文字列選択ステップでは、前記第１の文字列と前記第２の文字列との最長共通部分列の文字数を、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数に基づいて再帰的に算出させ、前記第１の文字列の部分文字列と前記第２の文字列との最長共通部分列の文字数と、前記第１の文字列から前記部分文字列を除いた残りの文字数との合計値が、予め定められた閾値未満の場合、当該第１の文字列と当該第２の文字列との最長共通部分列の文字数の算出を中止させ、前記文字インデックスにて対応付けられた前記文字列識別情報により識別される前記第２の文字列のうち、前記第１の文字列との最長共通部分列の文字数が閾値以上の第２の文字列のみをさらに選択させるためのプログラムである。
【発明の効果】
【００１３】
この発明によれば、文字列選択部は、第１の文字列に含まれる文字に、文字インデックスにて対応付けられた文字列識別情報により識別される第２の文字列を選択する。
これにより、文字列選択部は、第１の文字列と共通の文字を含まない第２の文字列については、選択の要否を判定することなく第２の文字列を選択できるので、第２の文字列を高速に選択できる。これにより、ユーザの入力したい文字列の候補として、第２の文字列を高速に得られる。
また、文字列選択部は、第１の文字列に含まれる文字に、文字インデックスにて対応付けられた文字列識別情報により識別される第２の文字列を選択することにより、第１の文字列に含まれる文字を含む第２の文字列のみを全て選択できる。この点で、ユーザの入力した文字列の候補として、第２の文字列を適切に得られる。
【００１４】
この発明によれば、さらに、選択された第２の文字列を用いて、選択した第２の文字列に含まれる文字と、第１の文字列に含まれる文字とに共通する文字の文字数を示す文字数情報を生成するようにした。これにより、文字数情報の文字数が多い第２の文字列は、第１の文字列と共通度合いが高いものとして把握することができる。
【００１５】
この発明によれば、さらに、第１の文字列の部分文字列に含まれる文字と、第２の文字列に含まれる文字とに共通する文字の文字数を示す文字数情報を生成した後、当該文字数情報と、第１の文字列に含まれる文字数と部分文字列に含まれる文字数との差と、に基づいて定まる値が、予め定められた閾値未満の場合に、第１の文字列と当該第２の文字列との前記類似度を示す情報の生成を中止するようにした。これにより、文字数情報が閾値未満となる第２の文字列を除外して、残りの第２の文字列に対して文字数情報を生成することができ、文字数情報を生成する処理を高速に行うことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態における文字列入力支援システムの概略構成を示す構成図である。
【図２】同実施形態において、用語記憶部１３１が記憶する用語リストの例を示す図である。
【図３】同実施形態において、文字インデックス記憶部１３２が記憶する文字インデックスの例を示す図である。
【図４】ＬＣＳ長を算出するために用いられる行列の例を示す図である。
【図５】入力文字列と用語とのＬＣＳが用語中に出現する位置を示す文字位置情報を算出するために用いられる行列の例を示す図である。
【図６】同実施形態において、文字インデックス生成部１２２が文字インデックスを生成する処理手順を示すフローチャートである。
【図７】同実施形態において、処理部１２０がＬＣＳ長を算出し、文字位置情報を生成する処理手順を示すフローチャートである。
【図８】同実施形態において、処理部１２０がＬＣＳ長を算出し、文字位置情報を生成する処理手順を示すフローチャートである。
【図９】同実施形態において、順位決定部１２５による用語の順位決定の例を示す図である。
【図１０】同実施形態において、順位決定部１２５が生成する指標の例を示す図である。
【図１１】同実施形態において、表示部２３０が用語のリストを表示した例を示す図である。
【図１２】ユーザが文字列を入力する際の、ユーザが入力した文字列の候補の表示例を示す図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照して、本発明の一実施形態について説明する。
図１は、本発明の一実施形態における文字列入力支援システムの概略構成を示す構成図である。同図において、文字列入力支援システム１は、文字列入力支援装置（文字列選択装置）１００と、端末装置２００とを具備する。文字列入力支援装置１００は、通信部（取得部）１１０と、処理部（文字列選択部）１２０と、記憶部１３０とを具備する。処理部１２０は、処理制御部１２１と、文字インデックス生成部１２２と、ＬＣＳ長算出部１２３と、文字位置情報生成部１２４と、順位決定部１２５とを具備する。記憶部１３０は、用語記憶部（文字列群記憶部）１３１と、文字インデックス記憶部１３２と、ＬＣＳ長行列記憶部１３３と、文字位置情報行列記憶部１３４とを具備する。端末装置２００は、通信部２１０と、入力部２２０と、表示部２３０とを具備する。
【００１８】
文字列入力支援システム１は、ユーザが入力済みの文字列（第１の文字列。以下では、「入力文字列」と称する）に基づいて、ユーザが入力したい文字列の候補（文字列候補）を表示する。
文字列入力支援装置１００は、入力文字列を端末装置２００から取得し、取得した文字列に基づいて、ユーザが入力したい文字列の候補の各々の順位を決定し、ユーザが入力したい文字列の候補を、決定した順位に従って並べたリストを生成して端末装置２００に送信する。
通信部１１０は、端末装置２００との間でデータの送受信を行う。
記憶部１３０は、ユーザが入力したい文字列の候補である用語を予め記憶する。また、記憶部１３０は、ユーザが入力したい文字列の候補である用語の順位を、文字列入力支援装置１００が決定する際のワーキングメモリとして機能する。記憶部１３０は、文字列入力支援装置１００が具備する記憶装置上に実現される。
【００１９】
用語記憶部１３１は、ユーザが入力したい文字列の候補である用語（第２の文字列）をリスト形式にて予め記憶する。
図２は、用語記憶部１３１が記憶する用語リストの例を示す図である。同図に示すように、用語リストの各行に、ユーザが入力したい文字列の候補である用語と、当該用語の識別番号である用語ＩＤとが対応付けて記憶されている。用語リストは、例えば、ある分野の辞書に含まれる用語の各々に用語ＩＤを付して生成される。同図の例では、用語リストは、病名に用語ＩＤを付して生成されている。
用語ＩＤは、各用語を識別する情報であると共に、用語リスト中における各用語の順序を示す情報でもある。
なお、用語リストに記憶される用語の数は、同図に示す７つに限らず、任意の個数であってよい。
【００２０】
文字インデックス記憶部１３２は、用語記憶部１３１が記憶する用語に含まれる文字の各々について、当該文字を含む用語を示す文字インデックスを記憶する。
図３は、文字インデックス記憶部１３２が記憶する文字インデックスの例を示す図である。同図に示すように、文字インデックスの各行には、用語リスト中のいずれかの用語に含まれる文字と、当該文字を含む用語を示す用語ＩＤリストとが格納されている。同図の文字インデックスは、図２の用語リスト中の用語に含まれる文字毎に、当該文字を含む用語を用語ＩＤにて示している。例えば、図２の用語リスト中で用語ＩＤ「１」に対応付けられた用語「小腸癌」は、文字「小」と「腸」と「癌」とを含む。したがって、図３の文字インデックスの、文字「小」を含む行と、文字「腸」を含む行と、文字「癌」を含む行とのいずれも、用語ＩＤリスト中に用語ＩＤ「１」を含んでいる。
【００２１】
ＬＣＳ長行列記憶部１３３は、文字列入力支援装置１００が用語の順位を決定する際に生成するＬＣＳ長行列を記憶するワーキングメモリである。
以下、図４を参照して、ＬＣＳ長行列記憶部１３３が記憶するＬＣＳ長行列について説明する。
図４は、ＬＣＳ長を算出するために用いられる行列の例を示す図である。同図（ａ）と（ｂ）とは、いずれも、ＬＣＳ長を算出するために用いられる行列の例を示す。
同図（ａ）の行列は、入力文字列の文字数＋１の行、および、用語記憶部１３１が記憶する用語の文字数＋１の列を有する行列であり、各要素には非負整数が格納される。以下では、図４（ａ）の行列の最上行（初期値に対応する行）を第０行とし、最左列（初期値に対応する列）を第０列とする。
【００２２】
ここで、ＬＣＳ（Longest Common Subsequence、最長共通部分列）は、２つの文字列に共通する部分列（共通部分列、Common Subsequence）のうち、最も長い（文字数の多い）ものである。この共通部分列は、各文字列中に連続して出現する必要はないが、２つの文字列中に同じ順序で出現する必要がある。図４（ａ）の「大腸粘膜内癌」と「大腸粘液癌」との場合、「大」「腸」「粘」「癌」の各文字が同順序で出現しているので、両者のＬＣＳは「大腸粘癌」であり、ＬＣＳの文字数（以下では、「ＬＣＳ長」と称する）は４である。
このように、ＬＣＳ長は、２つの文字列に共通する文字の数を示すので、２つの文字列の類似度を示す情報として用いることができる。
【００２３】
図４（ａ）の行列の各要素は、当該要素の位置に対応する、用語またはその部分文字列と、入力文字列またはその部分文字列とのＬＣＳ長を示す。例えば、図４（ａ）の行列の第５行第６列の要素ａ１５６は、入力文字列「大腸粘液癌」と、用語「大腸粘膜内癌」とのＬＣＳ長「４」を示している。また、図４（ａ）の行列の第２行第４列の要素ａ１２４は、入力文字列の先頭から２文字の部分文字列（すなわち、先頭から２文字を入力した時点での入力文字列）「大腸」と、用語の先頭から４文字の部分文字列「大腸粘膜」とのＬＣＳ「大腸」の文字数「２」を示している。
【００２４】
この、２つの文字列のＬＣＳは、部分文字列のＬＣＳから再帰的に算出できる。
２つの文字列の末尾の文字が同じ場合は、各文字列から当該末尾の文字を除いた部分文字列のＬＣＳに、当該末尾の文字を加えることによりＬＣＳを得られる。例えば、入力文字列「大腸粘液癌」と用語「大腸粘膜内癌」との末尾の文字は共に「癌」である。そして、「大腸粘液癌」と「大腸粘膜内癌」とのＬＣＳ「大腸粘癌」は、入力文字列「大腸粘液癌」から「癌」を除いた「大腸粘液」と、用語「大腸粘膜内癌」から「癌」を除いた「大腸粘膜内」との「大腸粘」に「癌」を加えて得られる。したがって、第５行第６列の要素ａ１５６の値「４」（「大腸粘癌」の文字数）は、第４行第５列の要素ａ１４５の値「３」（「大腸粘」の文字数）に１（「癌」の文字数）を加えた値となっている。
【００２５】
一方、２つの文字列の末尾が異なる場合は、一方の文字列から当該末尾の文字を除いた部分文字列のＬＣＳのうち、文字数の多いほうのＬＣＳと同一（両者の値が等しい場合は、両者の値と同一）である。例えば、「大腸」と「大腸粘膜」との末尾の文字は、それぞれ「腸」と「膜」とであり異なる。ここで、「大腸」と、「大腸粘膜」から末尾の文字「膜」を除いた「大腸粘」とのＬＣＳは「大腸」である。また、「大腸」から末尾の文字「腸」を除いた「大」と、「大腸粘膜」とのＬＣＳは「大」である。そして、「大腸」と「大腸粘膜」とのＬＣＳ「大腸」は、この２つのＬＣＳ「大腸」および「大」のうち文字数の多いほうである「大腸」と同一である。したがって、第２行第４列の要素ａ１２４の値「２」（「大腸」の文字数）は、第２行第３列の要素ａ１２３の値「２」（「大腸」の文字数）と、第１行第４列の要素ａ１１４の値「１」（「大」の文字数）とのうち、値の大きいほうである「２」と同一である。
【００２６】
このように、図４（ａ）の行列の各要素の値は、入力文字列中の対応する文字と、用語中の対応する文字とが同じ場合は、左上の要素の値に１を加えた値と同一である。一方、入力文字列中の対応する文字と、用語中の対応する文字とが異なる場合は、左隣の要素の値と、上隣の要素の値とのうち大きいほうの値と同一（両者の値が等しい場合は、両者の値と同一）である。
【００２７】
ここで、図４（ａ）の入力文字列「大腸粘液癌」のうち、文字「液」は、用語「大腸粘膜内癌」と共通しておらず、ＬＣＳ「大腸粘癌」には含まれない。このため、用語「大腸粘膜内癌」またはその部分文字列のいずれについても、入力文字列の部分文字列「大腸粘液」とのＬＣＳ長は、文字「液」を除いた「大腸粘」とのＬＣＳ長と同一である。例えば、用語の部分文字列「大腸粘膜内」について見ると、この「大腸粘膜内」と「大腸粘液」とのＬＣＳは「大腸粘」であり、ＬＣＳ長は（要素ａ１４５の値）「３」である。そして、「大腸粘膜内」と、「大腸粘液」から「液」を除いた「大腸粘」とのＬＣＳも「大腸粘」であり、ＬＣＳ長は（要素ａ１３５の値）「３」である。
このため、ＬＣＳ行列の第４行（文字「液」に対応する行）の値は、上隣の第３行（文字「粘」に対応する行）の値と一致する。
【００２８】
このように、入力文字列のうち用語に含まれない文字に対応する、図４（ａ）の行列中の行の値は、上隣の行の値と一致する。そこで、ＬＣＳ長行列記憶部１３３は、図４（ａ）の行列から、用語に含まれない文字に対応する行を削除した行列を、ＬＣＳ長行列として記憶する。このＬＣＳ長行列の最下行最右列の要素の値は、図４（ａ）の行列の最下行最右列の要素の値と一致する。すなわち、ＬＣＳ長行列の最下行最右列の要素の値は、入力文字列と用語とのＬＣＳ長を示している。
例えば、ＬＣＳ長行列記憶部１３３は、図４（ａ）の行列から、用語に含まれない文字「液」に対応する行を削除した、図４（ｂ）のＬＣＳ長行列を記憶する。この行列の最下行最右列の要素ａ２４６の値「４」は、入力文字列「大腸粘液癌」と用語「大腸粘膜内癌」とのＬＣＳ「大腸粘癌」の文字数、すなわちＬＣＳ長を示している。
後述するように、ＬＣＳ長行列は、文字インデックス記憶部１３２が記憶する文字インデックスを用いて生成される。
【００２９】
図１に戻って、文字位置情報行列記憶部１３４は、文字列入力支援装置１００が用語の順位を決定する際に生成する文字位置情報行列を記憶するワーキングメモリである。
以下、図５を参照して、文字位置情報行列記憶部１３４が記憶する文字位置情報行列について説明する。
図５は、入力文字列と用語とのＬＣＳが用語中に出現する位置を示す文字位置情報を算出するために用いられる行列の例を示す図である。同図（ａ）と（ｂ）とは、いずれも、文字位置情報を算出するために用いられる行列の例を示す。
同図（ａ）の行列は、入力文字列の文字数＋１の行数、および、用語記憶部１３１が記憶する用語の文字数＋１の列数を有する行列であり、各要素にはビット列（二進数）が格納される。以下では、図５（ａ）の行列の最上行（初期値に対応する行）を第０行とし、最左列（初期値に対応する列）を第０列とする。
【００３０】
図５（ａ）の行列の各要素には、入力文字列と、用語記憶部１３１が記憶する用語とのＬＣＳの各文字が、当該用語中に出現する位置を示す文字位置情報が格納されている。文字位置情報はビット列により構成され、１の位（最右ビット）から順に、入力文字列中の１番目（先頭）から順の各文字の位置を示す。例えば、図５（ａ）の行列の第５行第６列の要素ｂ１５６は、最右ビットが入力文字列の先頭の文字「大」の位置を示し、以下同様に、右から２番目のビットが「腸」の位置、３番目が「粘」の位置、・・・、６番目（最左ビット）が「癌」の位置を示す。ここで、入力文字列「大腸粘液癌」と用語「大腸粘膜内癌」とのＬＣＳ「大腸粘癌」の各文字は、それぞれ、用語「大腸粘膜内癌」の先頭から１文字目（「大」）と、２文字目（「腸」）と、３文字目（「粘」）と、６文字目（「癌」）とに出現する。したがって、図５（ａ）の行列の第５行第６列の要素ｂ１５６は、右から１、２、３、６番目のビットが「１」、４、５番目のビットが「０」となっている。
【００３１】
上述したように、２つの文字列のＬＣＳは、部分文字列のＬＣＳから再帰的に算出できる。このため、文字位置情報も、部分文字列の文字位置情報から再帰的に生成できる。
２つの文字列（入力文字列またはその部分文字列、および、用語またはその部分文字列）の末尾の文字が同じ場合、これらの文字列の文字位置情報は、各文字列から当該末尾の文字を除いた部分文字列の文字位置情報に、当該末尾の文字の位置に対応する桁を１とした数を加算した値となる。例えば、図５（ａ）の行列の、第５行第６列の要素ｂ１５６の値「１００１１１」（二進数）は、第４行第５列の要素ｂ１４５の値「１１１」（二進数。「００１１１」の先頭の０が省略されている。以下同様に、文字位置情報の先頭の０の表示を省略する）に、末尾の文字「癌」の位置に対応する右から６桁目が１の「１０００００」（二進数）を加算した値となっている。
【００３２】
一方、２つの文字列の末尾が異なる場合、これらの文字列の文字位置情報は、一方の文字列から当該末尾の文字を除いた場合の文字位置情報のうち、ＬＣＳ長が長いほうの文字列の文字位置情報と同一である。例えば、図５（ａ）の行列の、第２行第４列の要素ｂ１２４の値「１１」（二進数）は、第２行第３列の要素ｂ１２３の値「１１」（二進数）と、第１行第４列の要素ｂ１１４の値「１」（二進数）とのうち、ＬＣＳ長が長い文字列に対応する、第２行第３列の要素ｂ１２３の値「１１」（二進数）と同一である。
いずれの文字列から末尾の文字を除いてもＬＣＳ長が同一の場合は、いずれの文字位置情報と同一としてもよい。本実施形態では、値が小さいほうの文字位置情報と同一とする。後述するように、ＬＣＳに含まれる文字が先頭に近い位置に出現する用語を上位とするためである。
【００３３】
このように、図５（ａ）の行列の各要素の値は、入力文字列中の対応する文字と、用語中の対応する文字とが同じ場合は、左上の要素の値に、用語の末尾の位置に対応する桁を１とした数を加えた値と同一である。一方、入力文字列中の対応する文字と、用語中の対応する文字とが異なる場合は、左隣の要素の値と、上隣の要素の値とのうち、ＬＣＳ長が長いほうの値と同一（両者のＬＣＳ長が同一の場合は、値が小さいほうの要素の値と同一。さらに両要素の値が同一の場合は、両要素の値と同一）である。
【００３４】
ここで、図４で説明したように、入力文字列「大腸粘液癌」のうち、文字「液」は、用語「大腸粘膜内癌」と共通しておらず、ＬＣＳ「大腸粘癌」には含まれない。このため、図４で説明したＬＣＳ長の場合と同様、用語「大腸粘膜内癌」またはその部分文字列のいずれについても、入力文字列の部分文字列「大腸粘液」との文字位置情報は、文字「液」を除いた「大腸粘」との文字位置情報と同一である。例えば、用語の部分文字列「大腸粘膜内」について見ると、この「大腸粘膜内」と「大腸粘液」とのＬＣＳは「大腸粘」であり、文字位置情報は（要素ｂ１４５の値）「１１１」（二進数）である。そして、「大腸粘膜内」と、「大腸粘液」から「液」を除いた「大腸粘」とのＬＣＳも「大腸粘」であり、文字位置情報は（要素ａ１３５の値）「１１１」（二進数）である。
このため、図５（ａ）の行列の第４行（文字「液」に対応する行）の値は、上隣の第３行（文字「粘」に対応する行）の値と一致する。
【００３５】
このように、入力文字列のうち、用語に含まれない文字に対応する、図５（ａ）の行列中の行の値は、上隣の行の値と一致する。そこで、文字位置情報行列記憶部１３４は、図５（ａ）の行列から、用語に含まれない文字に対応する行を削除した行列を、文字位置情報行列として記憶する。この文字位置情報行列の最下行最右列の要素の値は、図５（ａ）の行列の最下行最右列の要素の値と一致する。すなわち、文字位置情報行列の最下行最右列の要素の値は、入力文字列と用語とのＬＣＳが用語中に出現する位置を示す文字位置情報を示している。
例えば、文字位置情報行列記憶部１３４は、図５（ａ）の行列から、用語に含まれない文字「液」を削除した図５（ｂ）の文字位置情報行列を記憶する。この行列の最下行最右列の要素ｂ２４６の値「１００１１１」は、入力文字列「大腸粘液癌」と用語「大腸粘膜内癌」とのＬＣＳ「大腸粘癌」に含まれる各文字が、用語「大腸粘膜内癌」中に出現する位置を示している。
後述するように、文字列情報行列は、文字インデックス記憶部１３２が記憶する文字インデックスを用いて生成される。
【００３６】
図１に戻って、処理部１２０は、通信部１１０を介して、ユーザが入力済みの文字列を端末装置２００から取得し、取得した文字列に基づいて、ユーザが入力したい文字列の候補の各々の順位を決定する。そして、処理部１２０は、ユーザが入力したい文字列の候補を、決定した順位に従って並べたリストを生成し、通信部１１０を介して端末装置２００に送信する。処理部１２０は、例えば、文字列入力支援装置１００の具備するＣＰＵが、記憶部１３０からプログラムを読み出して実行することにより実現される。
処理制御部１２１は、各部を制御して処理を行わせる。文字インデックス生成部１２２は、用語記憶部１３１の記憶する用語リストに基づいて文字インデックスを生成する。ＬＣＳ長算出部１２３は、入力文字列と、用語記憶部１３１が記憶する各用語とのＬＣＳ長を算出する。文字位置情報生成部１２４は、入力文字列と、用語記憶部１３１が記憶する各用語との文字位置情報を生成する。順位決定部１２５は、ＬＣＳ長算出部１２３が算出するＬＣＳ長および文字位置情報生成部１２４が生成する文字位置情報に基づいて、用語記憶部１３１が記憶する各用語の順位を決定する。
【００３７】
端末装置２００は、ユーザによる文字列の入力を受け付けて文字列入力支援装置１００に送信し、文字列入力支援装置１００から送信される用語（ユーザが入力しようとしている文字列の候補）を、文字列入力支援装置１００が決定した順位に従って表示する。
通信部２１０は、文字列入力支援装置１００との間でデータの送受信を行う。
入力部２２０は、キーボードおよびマウスを備え、ユーザによる文字列の入力を受け付けて、入力された文字列を、通信部２１０を介して文字列入力支援装置１００に送信する。表示部２３０は、液晶ディスプレイ等の表示画面を備え、文字列の入力欄を表示し、ユーザの入力した文字列を入力欄に表示する。また、表示部２３０は、順位付けされた用語を、通信部２１０を介して文字列入力支援装置１００から受信し、受信した用語を、その順位に従って入力欄の下方近傍に表示する。
【００３８】
次に、文字列入力支援システム１の動作について説明する。
文字列入力支援システム１では、文字列入力支援装置１００の文字インデックス生成部１２２が、用語記憶部１３１の記憶する用語リストに基づいて、予め文字インデックスを生成し、文字インデックス記憶部１３２に書き込んでおく。
図６は、文字インデックス生成部１２２が文字インデックスを生成する処理手順を示すフローチャートである。
文字インデックス生成部１２２は、まず、用語記憶部１３１が記憶する用語リストの各行に対する処理を行うループＬ１の処理を開始する。以下では、ループＬ１にて処理対象となっている用語を「Ｗ」にて表示し、用語Ｗの用語ＩＤリストを「ｉ」にて表示する（以上、ステップＳ１）。
【００３９】
そして、文字インデックス生成部１２２は、用語Ｗに含まれる各文字に対する処理を行うループＬ２の処理を開始する。以下では、ループＬ２にて処理対象となっている文字を「Ｒ」にて表示する（以上、ステップＳ２）。
そして、文字インデックス生成部１２２は、文字インデックスの行を示す変数ｋの値を１に設定する（ステップＳ３）。
【００４０】
次に、文字インデックス生成部１２２は、文字インデックス記憶部１３２が記憶する文字インデックスに第ｋ行が存在するか否かを判定する（ステップＳ４）。存在すると判定した場合（ステップＳ４：ＹＥＳ）、文字インデックス生成部１２２は、文字インデックスの第ｋ行に含まれる文字と文字Ｒとが一致するか否かを判定する。一致しないと判定した場合（ステップＳ５：ＮＯ）、文字インデックス生成部１２２は、ｋに１を加え、すなわち文字インデックスの次の行を対象に設定し（ステップＳ３１）、ステップＳ４に戻る。
【００４１】
一方、ステップＳ５にて一致すると判定した場合（ステップＳ５：ＹＥＳ）、文字インデックス生成部１２２は、文字インデックスの第ｋ行に含まれる用語ＩＤリストに、ｉが含まれるか否かを判定する。このように、既にｉが含まれているか否かを判定するのは、重複記載を避けるためである（以上、ステップＳ６）。含まれないと判定した場合（ステップＳ６：ＮＯ）、文字インデックス生成部１２２は、文字インデックス記憶部１３２が記憶する、文字インデックスの第ｋ行に含まれる用語ＩＤリストに、ｉを追加する（書き込む）（ステップＳ７）。
【００４２】
その後、文字インデックス生成部１２２は、用語Ｗの全ての文字に対してループＬ２の処理を行ったか否かを判定する。未処理の文字があると判定した場合は、ステップＳ２に戻って、未処理の文字に対して引き続きループＬ２の処理を行う。一方、全ての文字に対して処理を行ったと判定した場合は、次のステップＳ９に進む（以上、ステップＳ８）。
そして、文字インデックス生成部１２２は、用語リストの全ての行に対してループＬ１の処理を行ったか否かを判定する。未処理の行があると判定した場合は、ステップＳ１に戻って、未処理の行に対して引き続きループＬ１の処理を行う。一方、全ての行に対して処理を行ったと判定した場合は、同図の処理を終了する（以上、ステップＳ９）。
【００４３】
一方、ステップＳ４において、文字インデックス記憶部１３２が記憶する文字インデックスに第ｋ行が存在しないと判定した場合（ステップＳ４：ＮＯ）、および、ステップＳ６において、文字インデックスの第ｋ行に含まれる用語ＩＤリストに、ｉが含まれていると判定した場合（ステップＳ６：ＹＥＳ）は、ステップＳ８に進む。
また、ステップＳ４において、文字インデックス記憶部１３２が記憶する文字インデックスに第ｋ行が存在しないと判定した場合（ステップＳ４：ＮＯ）は、文字インデックス記憶部１３２が記憶する文字インデックスの末尾に、文字Ｒと、ｉから成る用語ＩＤリストとを含む行を追加する（書き込む）。
【００４４】
文字インデックスの生成を完了すると、端末装置２００の表示部２３０が入力欄を表示し、入力部２２０がユーザの入力操作を待ち受ける。入力部２２０は、ユーザの入力操作を受けると、当該操作に基づいて、入力文字列を生成する。すなわち、入力部２２０は、過去の入力操作に基づく入力文字列を記憶しており、文字の追加や削除等の新たな入力操作を受けると、記憶している入力文字列を当該操作に基づいて更新（編集）する。入力部２２０は、更新された入力文字列を、表示部２３０および通信部２１０に出力する。
表示部２３０は、入力部２２０から出力された入力文字列を入力欄に表示（既に入力文字列を表示しているときは更新）する。また、通信部２１０は、入力部２２０から出力された入力文字列を、文字列入力支援装置１００の通信部１１０に送信する。
通信部１１０は、通信部２１０からの入力文字列を受信すると、受信した入力文字列を処理部１２０に出力する。
【００４５】
処理部１２０は、通信部１１０から出力される入力文字列と、用語記憶部１３１の記憶する各用語とのＬＣＳ長の算出および文字位置情報の生成を行う。
図７および図８は、処理部１２０がＬＣＳ長を算出し、文字位置情報を生成する処理手順を示すフローチャートである。処理部１２０は、通信部１１０から入力文字列が出力されると同図の処理を開始する。
まず、処理部１２０の処理制御部１２１は、ＬＣＳ長行列記憶部１３３のＬＣＳ長行列を初期化するようＬＣＳ長算出部１２３を制御し、文字位置情報行列記憶部１３４の文字位置情報行列を初期化するよう文字位置情報生成部１２４を制御する。
【００４６】
ＬＣＳ長算出部１２３は、用語記憶部１３１が記憶する用語の各々について、ＬＣＳ長行列の行数を入力文字列の文字数＋１とし、列数を当該用語の文字数＋１とする。そして、最上行（図４の例で、「初期値」に対応する行）の各要素の値と、最左列（図４の例で、「初期値」に対応する列）の各要素の値とを、いずれも「０」とする。他の要素の値は、この時点では未定である。
また、文字位置情報生成部１２４は、用語記憶部１３１が記憶する用語の各々について、文字位置情報行列の行数を入力文字列の文字数＋１とし、列数を当該用語の文字数＋１とする。そして、最上行（図５の例で、「初期値」に対応する行）の各要素の値と、最左列（図５の例で、「初期値」に対応する列）の各要素の値とを、いずれも「０」とする。他の要素の値は、この時点では未定である（以上、ステップＳ１０１）。
【００４７】
次に、処理制御部１２１は、入力文字列の各文字について先頭から順に処理を行うループＬ１１の処理を開始する。以下では、ループＬ１１にて処理対象となっている文字の位置を「ｊ」（先頭から順に、１、２、・・・とする）にて表示する。（以上、ステップＳ１０２）。
次に、処理制御部１２１は、文字インデックス記憶部１３２が記憶する文字インデックスの中から、入力文字列の先頭からｊ番目の文字と同じ行に格納されている用語ＩＤリスト（文字インデックス中に、該当する行が無い場合は空のリスト）を読み出す（ステップＳ１０３）。
そして、処理制御部１２１は、ステップＳ１０３で取得した用語ＩＤリストに含まれる用語ＩＤに対応する各用語について処理を行うループＬ１２の処理を開始する。以下では、ループＬ１２にて処理対象となっている用語を「Ｗ」にて表示する（以上、ステップＳ１０４）。
【００４８】
次に、処理制御部１２１は、算出済みのＬＣＳ長、すなわち、ＬＣＳ長行列記憶部１３３の記憶するＬＣＳ長行列のうち、用語Ｗに対応するＬＣＳ長行列の、値が確定している行の最右の要素の値を読み出す。後述するように、この算出済みのＬＣＳ長は、入力文字列の部分文字列と、用語ＷとのＬＣＳ長である。また、処理制御部１２１は、入力文字列に含まれる文字のうち、処理が終わっていない文字の数（入力文字列の文字数−ｋ＋１）を算出する。そして、処理制御部１２１は、算出済みのＬＣＳ長と、入力文字列に含まれる文字のうち処理が終わっていない文字の数との合計値が、予め定められた閾値以上か否かを判定する。
この閾値は、入力文字列と用語とのＬＣＳ長に対する閾値であり、ＬＣＳ長が閾値以上の用語のみが、ユーザの入力したい文字列の候補として端末装置２００の表示部２３０に表示される。この閾値は、例えばユーザによって予め設定される（以上、ステップＳ１０５）。
算出済みのＬＣＳ長と、入力文字列に含まれる文字のうち処理が終わっていない文字の数との合計値が、閾値以上であると判定した場合（ステップＳ１０５：ＹＥＳ）、処理制御部１２１は、用語Ｗの各文字について先頭から順に処理を行うループＬ１３の処理を開始する。以下では、ループＬ１１にて処理対象となっている文字の位置を「ｋ」（先頭から順に、１、２、・・・とする）にて表示する。（以上、ステップＳ１０６）。
【００４９】
そして、処理制御部１２１は、入力文字列のｊ番目の文字と、用語Ｗのｋ番目の文字とが同一か否かを判定する（ステップＳ１０７）。同一であると判定した場合（ステップＳ１０７：ＹＥＳ）、処理制御部１２１は、文字が同一であることを示す信号を、ＬＣＳ長算出部１２３に出力する。
文字が同一であることを示す信号が処理制御部１２１から出力されると、ＬＣＳ長算出部１２３は、ＬＣＳ長行列の第ｊ行第ｋ列の要素の値として、第ｊ−１行第ｋ−１列の要素の値＋１を書き込む。すなわち、図４で説明したように、左上の要素の値に１を加えた値とする（以上、ステップＳ１１１）。
【００５０】
また、ステップＳ１０７において文字が同一であると判定した（ステップＳ１０７：ＹＥＳ）処理制御部１２１は、文字が同一であることを示す信号を、文字位置情報生成部１２４にも出力する。
文字が同一であることを示す信号が処理制御部１２１から出力されると、文字位置情報生成部１２４は、文字位置情報行列の第ｊ行第ｋ列の要素の値として、第ｊ−１行第ｋ−１列の要素の値＋２ｋ−１を書き込む。すなわち、図５で説明したように、左上の要素の値に、用語の末尾の位置に対応する桁を１とした数を加えた値とする（以上、ステップＳ１１２）。
【００５１】
その後、処理制御部１２１は、用語Ｗの全ての文字に対してループＬ１３の処理を行ったか否かを判定する。未処理の文字があると判定した場合は、ステップＳ１０６に戻って、未処理の文字に対して引き続きループＬ１３の処理を行う。一方、全ての文字に対して処理を行ったと判定した場合は、次のステップＳ１４２に進む。
この、ループＬ１３の終了時点では、入力文字列の先頭からｊ文字目までの部分文字列と、用語ＷとのＬＣＳが算出されている。例えば、入力文字列が「大腸粘膜癌」、用語Ｗが「大腸粘膜内癌」で、ｊ＝２の場合、図４に示したＬＣＳ長行列のうち上３行（初期値の行と、入力文字列「大」および「腸」に対応する行）が生成されている。このＬＣＳ長行列の最下行最右列の要素の値「２」は、入力文字列の先頭から２文字の部分文字列「大腸」と用語Ｗ「大腸粘膜内癌」とのＣＬＳ長（ＣＬＳは「大腸」であり、ＣＬＳ長は「２」）を示している（以上、ステップＳ１４１）。
【００５２】
そして、処理制御部１２１は、用語記憶部１３１の記憶する全ての用語に対してループＬ１２の処理を行ったか否かを判定する。未処理の用語があると判定した場合は、ステップＳ１０４に戻って、未処理の用語に対して引き続きループＬ１２の処理を行う。一方、全ての用語に対して処理を行ったと判定した場合は、次のステップＳ１４３に進む（以上、ステップＳ１４２）。
そして、処理制御部１２１は、入力文字列の全ての文字に対してループＬ１１の処理を行ったか否かを判定する。未処理の文字があると判定した場合は、ステップＳ１０２に戻って、未処理の文字に対して引き続きループＬ１１の処理を行う。一方、全ての文字に対して処理を行ったと判定した場合は、同図の処理を終了する（以上、ステップＳ１４３）。
【００５３】
一方、ステップＳ１０５において、閾値未満であると判定した場合（ステップＳ１０５：ＮＯ）、処理制御部１２１は、ステップＳ１４１に進む。すなわち、入力文字列に含まれる文字のうち、まだＬＣＳ長算出に用いられていない文字が全てＬＣＳを構成すると仮定しても処理対象の用語のＬＣＳ長が閾値未満である場合、残りの文字について処理をするまでもなく、この用語のＬＣＳ長が最終的に閾値未満となることが明らかである。すなわち、この用語は端末装置２００の表示部２３０には表示されないことが確定している。そこで、処理部１２０は、この用語に対するＬＣＳ長の算出および文字位置情報の生成を中止して、全体の処理の迅速化を図る。
【００５４】
また、ステップＳ１０７において文字が異なると判定した場合（ステップＳ１０７：ＮＯ）、処理制御部１２１は、ＬＣＳ長行列の第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値以上か否かを判定する（ステップＳ１２１）。第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値以上であると判定した場合（ステップＳ１２１：ＹＥＳ）、処理制御部１２１は、第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値以上であることを示す信号を、ＬＣＳ長算出部１２３に出力する。
当該信号が処理制御部１２１から出力されると、ＬＣＳ長算出部１２３は、ＬＣＳ長行列の第ｊ行第ｋ列の要素の値として、第ｊ−１行第ｋ列の要素の値を書き込む。すなわち、図４で説明したように、左隣の値と、上隣の値とのうち大きいほう（ここでは、上隣の要素）の値と同一（両者の値が等しい場合は、両者の値と同一）とする（以上、ステップＳ１２２）。
【００５５】
また、ステップＳ１２１において、第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値以上であると判定した（ステップＳ１２１：ＹＥＳ）処理制御部１２１は、ＬＣＳ長行列の第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値と等しいか否かを判定する（ステップＳ１２３）。値が等しいと判定した場合（ステップＳ１２３：ＹＥＳ）、処理制御部１２１は、さらに、文字位置情報行列の第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値以下か否かを判定する（ステップＳ１２４）。
ステップＳ１２３において両者の値が異なると判定した場合（ステップＳ１２３：ＮＯ）、および、ステップＳ１２４において、第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値以下であると判定した場合（ステップＳ１２４：ＹＥＳ）、処理制御部１２１は、上隣の要素を書き込むよう指示する信号を、文字位置情報生成部１２４に出力する。
当該信号が処理制御部１２１から出力されると、文字位置情報生成部１２４は、文字位置情報行列の第ｊ行第ｋ列の要素の値として、第ｊ−１行第ｋ列の要素の値を書き込む。すなわち、図５で説明したように、左隣の要素の値と、上隣の要素の値とのうち、ＬＣＳ長が長いほう（ここでは、上隣の要素）の値と同一（両者のＬＣＳ長が同一の場合は、値が小さいほうの要素の値と同一。さらに両要素の値が同一の場合は、両要素の値と同一）とする（以上、ステップＳ１２５）。
その後、処理制御部１２１は、ステップＳ１４１に進む。
【００５６】
一方、ステップＳ１２１において、第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値未満であると判定した場合（ステップＳ１２１：ＮＯ）、処理制御部１２１は、第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値未満であることを示す信号を、ＬＣＳ長算出部１２３に出力する。
当該信号が処理制御部１２１から出力されると、ＬＣＳ長算出部１２３は、ＬＣＳ長行列の第ｊ行第ｋ列の要素の値として、第ｊ行第ｋ−１列の要素の値を書き込む。すなわち、図４で説明したように、左隣の値と、上隣の値とのうち大きいほう（ここでは、左隣の要素）の値と同一とする（以上、ステップＳ１３１）。
【００５７】
また、ステップＳ１２１において、第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値未満であると判定した場合（ステップＳ１２１：ＮＯ）、および、ステップＳ１２４において、第ｊ−１行第ｋ列の要素の値が、第ｊ行第ｋ−１列の要素の値より大きいと判定した場合（ステップＳ１２４：ＮＯ）、処理制御部１２１は、左隣の要素を書き込むよう指示する信号を、文字位置情報生成部１２４に出力する。
当該信号が処理制御部１２１から出力されると、文字位置情報生成部１２４は、文字位置情報行列の第ｊ行第ｋ列の要素の値として、第ｊ行第ｋ−１列の要素の値を書き込む。すなわち、図５で説明したように、左隣の要素の値と、上隣の要素の値とのうち、ＬＣＳ長が長いほう（ここでは、左隣の要素）の値と同一（両者のＬＣＳ長が同一の場合は、値が小さいほうの要素の値と同一）とする（以上、ステップＳ１３２）。
その後、処理制御部１２１は、ステップＳ１４１に進む。
【００５８】
以上により、ＬＣＳ長行列および文字位置情報行列が完成する。そして、ＬＣＳ長行列の最上行最右列の要素の値が、対応する用語のＬＣＳ長を示し、文字位置情報行列の最上行最右列の要素の値が、対応する用語中における、ＬＣＳに含まれる文字の出現位置、すなわち文字位置情報を示している。
【００５９】
なお、図７のステップＳ１０５で用語の絞込みを行わない場合（例えば、閾値の値が「０」または「１」に設定されている場合）は、処理部１２０が、ＬＣＳ長行列と文字位置情報行列とを常に新たに生成するのではなく、生成済みのＬＣＳ長行列および文字位置情報行列を更新するようにしてもよい。例えば、ユーザの操作入力により入力文字列の末尾に新たに１文字追加された場合、処理部１２０に入力される入力文字列のうち、末尾の文字を除いた部分文字列は、前回の入力文字列と同一である。そこで、ＬＣＳ長算出部１２３が、各ＬＣＳ長行列の末尾に行を追加し、文字位置情報生成部１２４が、各文字位置情報行列の末尾に行を追加するようにしてもよい。そして、処理部１２０は、新たに入力された入力文字列の末尾の文字に基づき、ループＬ１２の処理手順に従って、ＬＣＳ長行列および文字位置情報行列を完成させる。
【００６０】
ＬＣＳ長行列および文字位置情報行列が完成すると、処理制御部１２１は、用語記憶部１３１の記憶する各用語の順位を決定するように順位決定部１２５を制御する。
順位決定部１２５は、用語記憶部１３１の記憶する各用語の、ＬＣＳ長と、文字位置情報と、用語の長さ（文字数）と、用語リストにおける順序（用語ＩＤの値）とに基づいて、順位を決定し、決定した順位に基づいて並べられた用語のリストを生成する。
図９は、順位決定部１２５による用語の順位決定の例を示す図である。同図は、入力文字列が「大腸癌」である場合の例であり、図１に示す用語リストに含まれる用語のうちＬＣＳ長が３以上の用語と、各用語の順位と、順位を決定する基準となるＬＣＳ長と文字位置情報と用語の文字数と用語ＩＤとを示している。
【００６１】
順位決定部１２５は、まず、ＬＣＳ長が閾値以上の用語のみを、端末装置２００の表示部２３０に表示する用語として選択する。具体的には、順位決定部１２５は、ＬＣＳ長行列記憶部１３３が記憶する各ＬＣＳ長行列の最下行最右列の要素と閾値とを比較し、閾値以上の値を示すＬＣＳ長行列に対応する用語のみを選択する。ここで、ＬＣＳ長行列記憶部１３３が記憶するＬＣＳ長行列の中には、図７のステップＳ１０５における判定の結果、ＬＣＳ長算出処理が中止されているＬＣＳ長行列もある。このＬＣＳ長行列の最下行最右列の要素は、実際のＬＣＳ長よりも小さい値を示す場合がある。しかし、図７（ステップＳ１０５：ＮＯ）で説明したように、このＬＣＳ長行列に対応する用語は、ＬＣＳ長が閾値未満となることが確定している用語であり、順位決定部１２５の選択には影響しない。
【００６２】
次に順位決定部１２５は、選択した各用語に対して、ＬＣＳ長が長いほど上位とし（上位の用語ほど高い優先順位である、すなわち表示部２３０の入力欄に近い位置に表示されやすくなる）、ＬＣＳ長が同じ用語に対しては、文字位置情報の値が小さい用語を上位とする。さらに、ＬＣＳ長および文字位置情報の値が同じ用語に対しては、用語の文字数が少ない用語を上位とし、用語の文字数も同じである用語に対しては、用語ＩＤの小さい用語を上位とする。
上述したように、ＬＣＳ長は入力文字列と用語との類似度を示す情報として用いることができる。従って、ＬＣＳ長が長い用語ほど上位とすることで、入力文字列と類似度の高い用語を上位とすることができ、ユーザが入力したい文字列の候補を適切に提示できる。
また、ユーザは、通常、入力したい文字列の先頭から順に入力する。したがって、入力済みの文字列とのＬＣＳが先頭付近に出現する用語のほうが、末尾付近に出現する用語よりも、ユーザが入力したい文字列の候補として適切である。文字位置情報の値が小さい用語を上位とすることで、入力済みの文字列とのＬＣＳが先頭付近に出現する用語を上位とすることができ、ユーザが入力したい文字列の候補を適切に提示できる。
【００６３】
順位決定部１２５は、例えば、順位を示す指標を用語毎に生成し、生成した指標に基づいて用語を並べ替える。
図１０は、順位決定部１２５が生成する指標の例を示す図である。
同図に示す指標は、ＬＣＳの長さ（二進数表示）と、小数点と、文字位置情報（二進数表示）の２の補数と、用語の長さ（二進数表示）の２の補数と、用語ＩＤ（二進数表示）の２の補数とが、この順に結合されて生成される。その際、順位決定部１２５は、文字位置情報（二進数表示）の桁数を、当該用語文字数に揃える。また、用語の長さ（二進数表示）の桁数を、用語記憶部１３１が記憶する用語のうち最長のものを表現可能な桁数に揃える。また、用語ＩＤ（二進数表示）の桁数を、用語記憶部１３１が記憶する用語ＩＤのうち最大のものを表現可能な桁数に揃える。
【００６４】
また、同図の値は、入力文字列が「大腸癌」である場合に、用語「大腸粘膜内癌」に対して生成される指標の値を示している。
「大腸癌」の文字数は「３」であるため、同図に示す指標の整数部分は「１１」となっており、また、小数部分は、文字位置情報「１０００１１」の２の補数「０１１１００」と、用語の長さ「６」の二進数表示「０・・・０１１０」の２の補数「１・・・１００１」と、用語ＩＤ「５」の二進数表示「０・・・０１０１」の２の補数「１・・・１０１０」とを結合した値となっている。２の補数を取ることにより、元となる値が小さいほど大きい値の指標が生成される。
【００６５】
順位決定部１２５が、この指標の大きい順に用語を並べ替えることにより、各用語は、ＬＣＳの長さが長い順に並べられ、ＬＣＳの長さが同一の場合は、文字位置情報の値が小さい順に並べられ、文字位置情報の値も同一の場合は、用語の長さが短い順に並べられ、用語の長さも同一の場合は、用語ＩＤの値が小さい順に並べられる。
ここで、ＬＣＳに含まれる文字が用語に出現する位置のうち、最も後ろ（用語の末尾側）の位置が先頭に近い用語ほど、文字位置情報の値が小さくなる。また、ＬＣＳに含まれる文字が用語に出現する位置のうち、最も後ろの出現位置が同一の場合は、後ろから２番目の出現位置が先頭に近い用語ほど、文字位置情報の値が小さくなる。同様に、１〜ｉ−１（ｉはＬＣＳ長以下の正整数）番目の各出現位置が同一の場合は、ｉ番目の出現位置が先頭に近い用語ほど、文字位置情報の値が小さくなる。この点で、文字位置情報生成部１２４は、ＬＣＳに含まれる文字が用語中に出現する位置が先頭に近いほど小さい値を示す文字位置情報を生成する。
【００６６】
順位決定部１２５は、並べ替えた用語を並べ替えた順に含むリストを生成し、通信部１１０を介して端末装置２００に送信する。
端末装置２００の通信部２１０は、順位決定部１２５からの用語のリストを受信すると、受信したリストを表示部２３０に出力する。表示部２３０は、通信部２１０から出力される用語のリストを、入力欄の下方近傍に表示する。
【００６７】
図１１は、表示部２３０が用語のリストを表示した例を示す図である。同図では、入力文字列が「大腸癌」である場合に、図２に示した用語リストの用語のうち、ＬＣＳ長が３以上の用語を表示した例が示されている。順位決定部１２５は、設定されている閾値「３」に基づいて用語の絞込みを行い、さらに、図９で示した順位に従って用語を並べ替え、並べ替えた順に用語を含むリストを生成する。そして、表示部２３０がこのリストを表示する。
ユーザが、このリストに含まれる用語のいずれかを、マウスでクリックする等により選択すると、入力部２２０は、選択された用語を入力文字列として表示部２３０と通信部２１０に出力する。以下、各部は上述した処理を行う。
【００６８】
以上のように、文字列入力支援装置１００の文字インデックス記憶部１３２は、用語記憶部１３１の記憶する用語に含まれる文字の各々について、当該文字を含む用語を示す文字インデックスを予め記憶しておく。そして、処理部１２０は、ユーザが入力したい文字列の候補のリストを生成する際に、文字インデックスに基づいて処理対象となる用語の選択（絞込み）を行う。これにより、高速に、かつ、ＬＣＳ長が所定の閾値以上の全ての用語を対象として適切に、ユーザの入力したい文字列の候補を得られる。
【００６９】
また、処理部１２０は、入力文字列の部分文字列と用語とのＬＣＳ長を算出し、算出したＬＣＳ長に基づいて、当該用語に関する類似度を示す情報の生成を中止するか否かを決定する。具体的には、入力文字列のうち未処理の文字の数と、算出したＬＣＳ長との合計値が、予め定められた閾値未満の場合に、当該用語について、ＬＣＳ長の算出および文字位置情報の生成を中止する。これにより、高速に、かつ、ＬＣＳ長が閾値以上の全ての用語を対象として適切に、ユーザの入力したい文字列の候補を得られる。
【００７０】
なお、ＬＣＳ長算出部１２３が生成する類似度を示す情報は、上述したＬＣＳ長に限らず、ある文字が用語に含まれるか否かに基づいて再帰的に生成されるものであればよい。例えば、入力文字列と用語とに共通して出現する文字数（ＬＣＳ長の算出において、文字の並びが同順であるとの条件を不要としたもの）を、上述したＬＣＳ長の算出と同様に、入力文字列の部分文字列について再帰的に算出するようにしてもよい。
【００７１】
なお、処理制御部１２１が、用語リストに含まれる用語のうち、入力文字列に含まれる全ての用語を、ユーザの入力したい文字列の候補として選択するようにしてもよい。この場合、処理制御部１２１は、図７のループ１２において、用語ＩＤリストに基づいて得られる全ての用語を、ユーザの入力したい文字列の候補として選択する。
【００７２】
なお、上述したように、文字列入力支援装置１００は、コンピュータによって実現するようにしてもよい。すなわち、文字列入力支援装置１００の全部または一部の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含むものとする。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
【００７３】
以上、この発明の実施形態を図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【００７４】
１  文字列入力支援システム
１００  文字列入力支援装置
１１０  通信部
１２０  処理部
１２１  処理制御部
１２２  文字インデックス生成部
１２３  ＬＣＳ長算出部
１２４  文字位置情報生成部
１２５  順位決定部
１３０  記憶部
１３１  用語記憶部
１３２  文字インデックス記憶部
１３３  ＬＣＳ長行列記憶部
１３４  文字位置情報行列記憶部
２００  端末装置
２１０  通信部
２２０  入力部
２３０  表示部
【図１】
0005560105.tif 000002
【図２】
0005560105.tif 000003
【図３】
0005560105.tif 000004
【図４】
0005560105.tif 000005
【図５】
0005560105.tif 000006
【図６】
0005560105.tif 000007
【図７】
0005560105.tif 000008
【図８】
0005560105.tif 000009
【図９】
0005560105.tif 000010
【図１０】
0005560105.tif 000011
【図１１】
0005560105.tif 000012
【図１２】
0005560105.tif 000013