(57)【特許請求の範囲】
【請求項１】
文字列を取得し、
取得した文字列から区切り記号を挿入した検索文字列を生成し、
文例を文節単位に分割した文節文字列を組み合わせた複数の検索対象文例を記憶する記憶部から、前記区切り記号で区切られる検索文字列の各部分文字列が文節文字列の先頭に含まれる前記検索対象文例を検索し、
検索にヒットした検索対象文例に対応する文例を出力する
処理をコンピュータに行わせるコンピュータプログラム。
【請求項２】
前記取得した文字列より一文字ずつ切り出し、
先に生成し残っている検索文字列に、区切り記号及び切り出した文字を結合した検索文字列と、切り出した文字のみを結合する検索文字列とを生成し、
生成した２つの検索文字列により前記検索対象文例を検索し、検索にヒットする検索文字列を残す処理を繰り返し、
前記取得した文字列より切り出す文字がなくなった場合に、検索を終了し、文例を出力する
請求項１に記載のコンピュータプログラム。
【請求項３】
前記文字列を構成する文字を取得するたびに、先に生成し残っている検索文字列に、区切り記号及び取得した文字を結合した検索文字列と、取得した文字のみを結合する検索文字列とを生成し、
生成した２つの検索文字列により前記検索対象文例を検索し、
検索にヒットする検索文字列を残し、
残した検索文字列による検索にヒットした検索対象文例に対応する文例を出力する
請求項１に記載のコンピュータプログラム。
【請求項４】
取得した前記文字列が漢字を含む文字列である場合に、前記文字列に含まれる漢字を読み仮名に変換して前記検索文字列を生成する、
処理をさらにコンピュータに行わせる請求項１に記載のコンピュータプログラム。
【請求項５】
文字列を取得する取得部と、
取得した文字列から区切り記号を挿入した検索文字列を生成する生成部と、
文例を文節単位に分割した文節文字列を組み合わせた複数の検索対象文例を記憶する記憶部から、前記区切り記号で区切られる検索文字列の各部分文字列が文節文字列の先頭に含まれる前記検索対象文例を検索する検索部と、
検索にヒットした検索対象文例に対応する文例を出力する出力部と
を備える検索装置。
【請求項６】
文字列を取得し、
取得した文字列から区切り記号を挿入した検索文字列を生成し、
文例を文節単位に分割した文節文字列を組み合わせた複数の検索対象文例を記憶する記憶部から、前記区切り記号で区切られる検索文字列の各部分文字列が文節文字列の先頭に含まれる前記検索対象文例を検索し、
検索にヒットした検索対象文例に対応する文例を出力する
処理をコンピュータにより行う検索方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文例を検索文字列により検索するコンピュータプログラム等に関する。
【背景技術】
【０００２】
コンピュータを用いて文章を作成する際に、入力効率を高めるために、単語の一部の文字と省略記号とを含む文字列を入力すると、用例にもとづき省略した単語を推測する文章入力装置が提案されている（特許文献１）。また、例文／成句検索において、検索文字のつづりを全て入力することなく、検索を行なえる情報表示装置が提案されている（特許文献２）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平７−１９１９８６号公報
【特許文献２】特開２０１１−１５０７２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来の技術では省略記号や区切り記号等の入力が必要であり、煩雑である。また、文例（例文）検索においては、入力する文字数を増やさないと、検索にヒットした文例が多くなり、ヒットした文例の中から目的の文例を特定にするのが煩雑となる。
【０００５】
本発明はこのような事情に鑑みてなされたものであり、効率的に文例の検索が行えるコンピュータプログラム等を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本願に開示するコンピュータプログラムは、文字列を取得し、取得した文字列から区切り記号を挿入した検索文字列を生成し、文例を文節単位に分割した文節文字列を組み合わせた複数の検索対象文例を記憶する記憶部から、前記区切り記号で区切られる検索文字列の各部分文字列が文節文字列の先頭に含まれる前記検索対象文例を検索し、検索にヒットした検索対象文例に対応する文例を出力する処理をコンピュータに行わせる。
【発明の効果】
【０００７】
一観点によれば、文例検索処理の計算量を削減することが可能となる。
【図面の簡単な説明】
【０００８】
【図１】テキスト入力支援システムの構成例を示す説明図である。
【図２】文例データベースのレコードレイアウトの一例を示す説明図である。
【図３】入力支援処理の手順を示すフローチャートである。
【図４】入力支援処理の手順を示すフローチャートである。
【図５】内部検索キー更新処理の手順を示すフローチャートである。
【図６】入力支援処理の具体例を示す説明図である。
【図７】入力支援処理の手順を示すフローチャートである。
【図８】入力支援処理における入出力の一例を示す説明図である。
【図９】オフセットテーブルのレコードレイアウトの一例を示す説明図である。
【図１０】入力支援処理における入出力の一例を示す説明図である。
【図１１】文例データベース作成処理の手順を示すフローチャートである。
【図１２】テキスト入力支援システムの構成例を示す説明図である。
【図１３】テキスト入力支援装置の機能構成の一例を示すブロック図である。
【発明を実施するための形態】
【０００９】
実施の形態１
以下、実施の形態を、図面を参照して説明する。図１はテキスト入力支援システムの構成例を示す説明図である。テキスト入力支援システムはテキスト入力支援装置（検索装置）１、文例データベース２を含む。各装置はネットワークＮより接続されている。
【００１０】
テキスト入力支援装置１は、汎用コンピュータ、ワークステーション、デスクトップ型ＰＣ（パーソナルコンピュータ）、ノートブック型ＰＣ等である。テキスト入力支援装置１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３、大容量記憶装置１４、入力部１５、出力部１６、通信部１７、読み取り部１８を含む。各構成はバスＢで接続されている。
【００１１】
ＣＰＵ１１はＲＯＭ１３に記憶された制御プログラム１Ｐに従いハードウェア各部を制御する。ＲＡＭ１２は例えばＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、フラッシュメモリである。ＲＡＭ１２はＣＰＵ１１によるプログラムの実行時に発生するデータを一時的に記憶する。
【００１２】
大容量記憶装置１４は、例えばハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などである。大容量記憶装置１４には、各種データが記憶されている。また、制御プログラム１Ｐを大容量記憶装置１４に記憶するようにしておいても良い。
【００１３】
入力部１５はテキスト入力支援装置１にデータを入力するためのキーボード、マウスなどを含む。
【００１４】
出力部１６は画像出力を行う表示装置、音声出力を行うスピーカなどを含む。
【００１５】
通信部１７はネットワークＮを介して、他のコンピュータと通信を行う。読み取り部１８はＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）−ＲＯＭ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）−ＲＯＭを含む可搬型記憶媒体１ａを読み取る。ＣＰＵ１１が読み取り部１８を介して、制御プログラム（コンピュータプログラム）１Ｐを可搬型記憶媒体１ａより読み取り、大容量記憶装置１４に記憶しても良い。また、ネットワークＮを介して他のコンピュータからＣＰＵ１１が制御プログラム１Ｐをダウンロードし、大容量記憶装置１４に記憶しても良い。さらにまた、半導体メモリ１ｂから、ＣＰＵ１１が制御プログラム１Ｐを読み込んでも良い。
【００１６】
文例データベース２は、繰り返し使われる文例を記憶したものである。図２は文例データベース２のレコードレイアウトの一例を示す説明図である。文例データベース２はＮｏ．列、文例列、検索用テキスト列を含む。Ｎｏ．列は、文例を特定するＩＤを記憶する。文例列は、漢字仮名交じり文で表された文例を記憶する。検索用テキスト列は文例に対応する検索用テキスト（検索対象文例）を記憶する。検索用テキストは漢字仮名交じり文である文例を読みに変換した仮名文である。検索用テキストに含まれる「◆」は、文節の区切りを示す区切り記号である。区切り記号は「◆」に限らず、他の文字でも良いし、制御文字でも良い。図２に示す例では、電子カルテに入力される所見に関する文章が文例として記憶されている。
【００１７】
次に、実施の形態１におけるテキスト入力支援の方法について、簡単に説明する。実施の形態１では、文例の短縮形を入力して、文例の検索を行う。ここで、文例の短縮形とは、単語の先頭をつないだものである。例えば、「ピンからキリまである」の短縮形は「ぴんきり」であり、「明けましておめでとう」の短縮形は「あけおめ」である。
【００１８】
テキスト入力支援装置１の動作について説明する。図３及び図４は入力支援処理の手順を示すフローチャートである。テキスト入力支援装置１のＣＰＵ１１は、入力部１５を介して、入力キーワード（文字列）を読み込む（ステップＳ１）。ＣＰＵ１１は、入力キーワード（ｋ）を入力キー領域に記憶する（ステップＳ２）。入力キー領域は、ＲＡＭ１２又は大容量記憶装置１４等に設ける。ＣＰＵ１１は、入力キーワード（ｋ）より内部検索キー（検索文字列）を生成し、内部検索キー領域に記憶する（ステップＳ３）。内部検索キー領域は、ＲＡＭ１２又は大容量記憶装置１４等に設ける。内部検索キーは入力キーワードの先頭文字と一文字と任意の文字が０個以上続くことを意味する「＊」である。
【００１９】
ＣＰＵ１１は、内部検索キー領域から内部検索キーを１つ読み込む（ステップＳ４）。読み込んだ内部検索キーにより、文例の検索を行う（ステップＳ５）。具体的には、文例データベース２の検索用テキスト列を対象に検索を行う。ＣＰＵ１１は検索にヒットした文例があるか否かを判定する（ステップＳ６）。ＣＰＵ１１は検索にヒットした文例がないと判定した場合（ステップＳ６でＮＯ）、検索に使用した内部検索キーを内部検索キー領域から削除する（ステップＳ７）。ＣＰＵ１１は検索にヒットした文例があると判定した場合（ステップＳ６でＹＥＳ）、処理をステップＳ８へ移す。ＣＰＵ１１は処理していない他の内部検索キーがあるか否かを判定する（ステップＳ８）。ＣＰＵ１１は他の内部検索キーがあると判定した場合（ステップＳ８でＹＥＳ）、処理をステップＳ４に戻す。ＣＰＵ１１は他の内部検索キーがないと判定した場合（ステップＳ８でＮＯ）、検索により文例をヒットしたキーが内部検索キー領域にあるか否かを判定する（ステップＳ９）。ＣＰＵ１１は検索により文例をヒットした内部検索キーがあると判定した場合（ステップＳ９でＹＥＳ）、入力キー領域に記憶した入力キーワードを最後の文字まで読み込んだか否かを判定する（ステップＳ１０）。ＣＰＵ１１は入力キーワードを最後の文字まで読み込んでいないと判定した場合（ステップＳ１０でＮＯ）、入力キー領域から読み込んでいない次の文字を読み込む（ステップＳ１１）。ＣＰＵ１１は内部検索キー更新処理を行う（ステップＳ１２）。ＣＰＵ１１は処理をステップＳ４に戻す。
【００２０】
ＣＰＵ１１は入力キーワードを最後の文字まで読み込んだと判定した場合（ステップＳ１０でＹＥＳ）、内部検索キー領域にある内部検索キーを１つ読み込む（ステップＳ１３）。ＣＰＵ１１は文例検索を行う（ステップＳ１４）。ＣＰＵ１１は検索により文例をヒットした検索用テキストに対応した文例を結果記憶領域に記憶する（ステップＳ１５）。結果記憶領域はＲＡＭ１２又は大容量記憶装置１４等に設ける。ＣＰＵ１１は内部検索キー領域に処理していない内部検索キーがあるか否かを判定する（ステップＳ１６）。ＣＰＵ１１は内部検索キー領域に処理していない内部検索キーがあると判定した場合（ステップＳ１６でＹＥＳ）、処理をステップＳ１３に戻す。ＣＰＵ１１は内部検索キー領域に処理していない内部検索キーがないと判定した場合（ステップＳ１６でＮＯ）、結果記憶領域に記憶した文例を検索結果として、出力部１６に出力する（ステップＳ１７）。ＣＰＵ１１は処理を終了する。なお、ステップＳ１５では文例を記憶するのではなく、文例のＮｏ．を記憶しても良い。その場合、ステップＳ１７では、結果記憶領域に記憶したＮｏ．から対応する文例を文例データベース２から読み出し、出力する。
【００２１】
ＣＰＵ１１は検索により文例をヒットした内部検索キーがないと判定した場合（ステップＳ９でＮＯ）、検索を打ち切り、処理を終了する。なお、この場合、検索により文例をヒットしなかった旨を、出力部１６に出力してもよい。
【００２２】
続いて、内部検索キー更新処理について説明する。図５は内部検索キー更新処理の手順を示すフローチャートである。ＣＰＵ１１は内部検索キー領域から内部検索キーの１つを読み込む（ステップＳ２１）。読み込んだ内部検索キーをｓｋと記す。ＣＰＵ１１は区切り記号無しの内部検索キー（ｓｋ１）を生成する（ステップＳ２２）。ｓｋ１はｓｋより「＊」を削除したものに、図３のステップＳ１１で読み込んだ「次の文字」及び「＊」を連結したものである。ＣＰＵ１１は区切り記号入りの内部検索キー（ｓｋ２）を生成する（ステップＳ２３）。ｓｋ２はｓｋに区切り記号「◆」、「次の文字」及び「＊」を連結したものである。すなわち、ｓｋ１、ｓｋ２は以下の式で表すことができる。
ｓｋ１＝（＊を削除したｓｋ）＋次の文字＋＊
ｓｋ２＝ｓｋ＋◆＋次の文字＋＊
【００２３】
ＣＰＵ１１はｓｋを内部検索キー領域から削除する（ステップＳ２４）。ＣＰＵ１１はｓｋ１、ｓｋ２をキーバッファに記憶する（ステップＳ２５）。キーバッファはＲＡＭ１２又は大容量記憶装置１４等に設ける。ＣＰＵ１１は内部検索キー領域に残りの内部検索キーがあるか否かを判定する（ステップＳ２６）。ＣＰＵ１１は内部検索キー領域に残りの内部検索キーがあると判定した場合（ステップＳ２６でＹＥＳ）、処理をステップＳ２１へ戻す。ＣＰＵ１１は内部検索キー領域に残りの内部検索キーがないと判定した場合（ステップＳ２６でＮＯ）、キーバッファに記憶した内部検索キーを内部検索キーに記憶する（ステップＳ２７）。ＣＰＵ１１は処理を呼び出し元に戻す。
【００２４】
上述の処理を、具体例を用いて説明する。図６は入力支援処理の具体例を示す説明図である。図６では、入力キーワードは「こませいちょ」であること、検索は段階（ａ）から段階（ｆ）まで行われることを示している。ここで、文例データベース２に記憶されている文例は、図２に示したものであるとする。各段階に示している「こ＊」等の文字列が内部検索キー領域に記憶されている内部検索キーである。各内部検索キーの右に記載した「○」は検索により文例をヒットしたキーであることを示し、「×」が検索により文例をヒットしないキーであることを示す。段階（ｄ）以降では、検索にヒットした文例の数、及び文例のＮｏ．を示している。
【００２５】
図６に示すように、ＣＰＵ１１は入力キーワード（ｋ）として、「こませいちょ」という文字列を読み込んだものとする（ステップＳ１）。ＣＰＵ１１は入力キーワードを入力キー領域に記憶する（ステップＳ２）。ＣＰＵ１１は、初期内部検索キーとして、「こ＊」を生成し、内部検索キー領域に記憶する（ステップＳ３）。ＣＰＵ１１は内部検索キー領域より、内部検索キーを１つ読み込む（ステップＳ４）。ここでは、ステップＳ３で生成した「こ＊」である。ＣＵＰ１１は「こ＊」を検索キーとして、文例データベース２に記憶された検索用テキストを検索する（ステップＳ５）。検索により、Ｎｏ．（１）から（８）の文例がヒットする。したがって、ＣＰＵ１１はステップＳ６でＹＥＳと判定し、他の内部検索キーがあるか否かを判定する（ステップＳ８）。ここでは、内部検索キーは「こ＊」しかないので、ＣＰＵ１１はステップＳ８でＮＯと判定する。続いて、内部検索キーは「こ＊」は検索により文例をヒットしたので、ＣＰＵ１１はステップＳ９をＹＥＳと判定する。さらに、入力キーワードの文字列を、最後まで読み込んでいないので、ＣＰＵ１１はステップＳ１０をＮＯと判定し、次の文字「ま」を読み込む（ステップＳ１１）。次に、ＣＰＵ１１は内部検索キー更新処理を行う（ステップＳ１２）。
【００２６】
ＣＰＵ１１は内部検索キーとして、「こ＊」を読み込む（ステップＳ２１）。ＣＰＵ１１はｓｋ１として、「こま＊」を生成する（ステップＳ２２）。ＣＰＵ１１はｓｋ２として、「こ＊◆ま＊」を生成する（ステップＳ２３）。ＣＰＵ１１は内部検索キー領域より、「こ＊」を削除する（ステップＳ２４）。ＣＰＵ１１は「こま＊」と「こ＊◆ま＊」とをキーバッファに記憶する（ステップＳ２５）。ステップＳ２４で「こ＊」は削除され、内部検索キー領域には内部検索キーは記憶されていないので、ＣＰＵ１１はステップＳ２６をＮＯと判定し、キーバッファに記憶してある「こま＊」と「こ＊◆ま＊」を、内部検索キー領域に記憶する（ステップＳ２７）。ＣＰＵ１１は内部検索キー更新処理を終了し、処理をステップＳ４に戻す。
【００２７】
図６に示す段階（ｂ）に遷移する。内部検索キーは、「こま＊」と「こ＊◆ま＊」である。まず、ステップＳ４で「こま＊」が読み込まれたとする。内部検索キー「こま＊」は検索により文例をヒットする。ＣＰＵ１１はステップＳ６をＹＥＳと判定する。内部検索キー領域には「こ＊◆ま＊」が残っているので、ＣＰＵ１１はステップＳ８をＹＥＳと判定し、処理をステップＳ４に戻す。ＣＰＵ１１は内部検索キーとして「こ＊◆ま＊」を読み込み（ステップＳ４）、文例検索を行う（ステップＳ５）。「こ＊◆ま＊」は検索により文例をヒットしないので、ＣＰＵ１１はステップＳ６をＮＯと判定し、「こ＊◆ま＊」を内部検索キー領域から削除する（ステップＳ７）。内部検索キー領域に処理していない他の内部検索キーはないので、ＣＰＵ１１はステップＳ８をＮＯと判定する。「こま＊」が検索により文例をヒットしたので、ＣＰＵ１１はステップＳ９をＹＥＳと判定する。入力キーワードの文字列を、最後まで読み込んでいないので、ＣＰＵ１１はステップＳ１０をＮＯと判定し、次の文字「せ」を読み込む（ステップＳ１１）。次に、ＣＰＵ１１は内部検索キー更新処理を行う（ステップＳ１２）。
【００２８】
内部検索キー更新処理により、「こま＊」から、内部検索キーとして、「こませ＊」と「こま＊◆せ＊」が生成される。図６に示す段階（ｃ）に遷移する。以降、上述と同様な処理により、図６に示す段階（ｄ）、（ｅ）を経て、段階（ｆ）に達し、ＣＰＵ１１の処理は終了する。最終的に検索にヒットした文例は、Ｎｏ．（１）のものであり、Ｎｏ．（１）の文例が、出力部１６に出力される（ステップＳ１７）。
【００２９】
以上のように、実施の形態１においては、文例データベース２に記憶する検索用テキストは漢字仮名交じり文を読みに変換した仮名文とし、隣り合う２つの文節間には文節の区切りを示す区切り記号「◆」を挿入している。また、内部検索キーとして、「こ＊」のように、入力キーワードを構成する文字を一文字含むキーを最初に生成し、次に「こま＊」、「こ＊◆ま＊」というように、入力キーワードを構成する文字を二文字含むキーを生成している。そして、生成した内部検索キーのうち、検索により文例をヒットしない内部検索キーは削除する処理を行う。それにより、無駄な検索を行うことを防ぐことが可能となる。また、内部検索キーとして、「こませ＊」と「こま＊◆せ＊」とのように、新たに追加した文字「せ」が、同一の文節にある場合に検索により文例をヒットするキーと、同一の文節にない場合に検索により文例をヒットするキーとを生成する。それにより、検索漏れを防ぐことが可能となる。
【００３０】
入力キーワードがｎ文字の文字列である場合、省略位置として仮定されるのは、ｎ−１箇所であるから、すべての省略形を網羅するようにキーワードを生成すると、２ｎ−１通りとなる。例えば、入力キーワードが「こませいち」の場合は、１６通りとなる。それに対して、実施の形態１では、検索により文例をヒットしない内部検索キーは削除するので、上述の例で、「こませいち」までに生成されるキーワードは、段階（ａ）の「こ＊」から、段階（ｅ）の「こま＊◆せいち」、「こま＊◆せい＊◆ち＊」までの９通りとなる。このように、実施の形態１では、検索のために生成するキーワードの数が減るので、検索が効率化される。以上のように、実施の形態１においては、煩雑な入力をすることなく、効率的に文例の検索が行うことが可能となる。
【００３１】
実施の形態２
実施の形態２では、入力部１５を介して、入力キーワードを一文字ずつ読み込み、読み込む毎に検索を行う、インクリメンタルサーチを行う。実施の形態２において、テキスト入力支援装置１及び文例データベース２の構成は、実施の形態１と同様であるので、説明を省略する。図７は入力支援処理の手順を示すフローチャートである。テキスト入力支援装置１のＣＰＵ１１は、入力部１５を介して、入力キーワードを一文字、読み込む（ステップＳ３１）。次に、ＣＰＵ１１は、内部検索キー更新処理を行う（ステップＳ３２）。この内部検索キー更新処理は、図５を参照して説明した処理と同様である。ＣＰＵ１１は、内部検索キー領域から内部検索キーを１つ読み込む（ステップＳ３３）。ＣＰＵ１１は、読み込んだ内部検索キーにより、文例検索を行う（ステップＳ３４）。ＣＰＵ１１は、検索によりヒット文例があるか否かを判定する（ステップＳ３５）。ＣＰＵ１１は、検索にヒットする文例があると判定した場合（ステップＳ３５でＹＥＳ）、処理をステップＳ３７に進める。ＣＰＵ１１は、検索により文例がヒットしなかったと判定した場合（ステップＳ３５でＮＯ）、内部検索キーを内部検索キー領域から削除する（ステップＳ３６）。ＣＰＵ１１は内部検索キー領域に未処理の他の内部検索キーがあるか否かを判定する（ステップＳ３７）。ＣＰＵ１１は内部検索キー領域に未処理の他の内部検索キーがあると判定した場合（ステップＳ３７でＹＥＳ）、処理をステップＳ３３へ戻す。
【００３２】
ＣＰＵ１１は内部検索キー領域に未処理の他の内部検索キーがないと判定した場合（ステップＳ３７でＮＯ）、内部検索キー領域に検索にて文例をヒットした内部検索キーがあるか否かを判定する（ステップＳ３８）。ＣＰＵ１１は、内部検索キー領域に検索にて文例をヒットした内部検索キーがあると判定した場合（ステップＳ３８でＹＥＳ）、内部検索キー領域から内部検索キーを読み込む（ステップＳ３９）。ＣＰＵ１１は、読み込んだ内部検索キーで文例検索を行う（ステップＳ４０）。ＣＰＵ１１は、検索結果を出力する（ステップＳ４１）。ＣＰＵ１１は、内部検索キー領域に未処理の他の内部検索キーがあるか否かを判定する（ステップＳ４２）。ＣＰＵ１１は、内部検索キー領域に未処理の他の内部検索キーがあると判定した場合（ステップＳ４２でＹＥＳ）、処理をステップＳ３９に戻す。ＣＰＵ１１は、内部検索キー領域に未処理の他の内部検索キーがないと判定した場合（ステップＳ４２でＮＯ）、出力した文例のいずれかが選択されたか、またはキーワードの入力が終了されたか否かを判定する（ステップＳ４３）。ＣＰＵ１１は、出力した文例のいずれかが選択された、またはキーワードの入力が終了されたと判定した場合（ステップＳ４３でＹＥＳ）、処理を終了する。ＣＰＵ１１は、出力した文例のいずれも選択されず、かつキーワードの入力が終了されていないと判定した場合（ステップＳ４３でＮＯ）、処理をステップＳ３１へ戻す。ＣＰＵ１１は、内部検索キー領域に検索にて文例をヒットした内部検索キーがないと判定した場合（ステップＳ３８でＮＯ）、処理を終了する。
【００３３】
なお、入力キーワードとして入力された最後の文字が削除された場合に対応するために、最後の文字が入力される一つ前の状態を一時的に記憶しても良い。記憶するのは、例えば、内部検索キー及び検索にヒットした文例のＮｏ．等である。これらは、ＲＡＭ１２又は大容量記憶装置１４に設けた記憶領域に記憶すれば良い。また、２文字以上削除された場合や、入力キーワードの中間の文字が削除された場合には、先頭文字から再度、処理を行えば良い。
【００３４】
図８は入力支援処理における入出力の一例を示す説明図である。図８の左側はキーワードの入力状況を示している。図８の右側は検索結果として出力される文例を示している。図８に示すように、入力されたキーワードの長さが長くなるほど、検索結果として表示される文例が絞られる。キーワードが「こませいちょ」となった段階で、検索結果として表示される文例が１つに絞られている。このように、実施の形態２においては、キーワードの文字が入力されるたびに、文例検索を行い、その結果を表示する。それにより、文例が１つに絞られていなくても、目的の文例が見つかれば、ユーザはそれを選択し、文例の入力を行うことが可能となる。すなわち、入力したキーワードが短い場合でも、文例の選択し、選択した文例を入力することが可能であるので、入力効率を上げることが可能となる。
【００３５】
実施の形態３
実施の形態３では、検索結果を表示する際に、入力キーワードにマッチした部分をハイライト、アンダーライン、太字など、他の部分とは視覚的に区別がつくようにする。実施の形態３において、テキスト入力支援装置１及び文例データベース２の構成は、実施の形態２と同様であるので、説明を省略する。また、テキスト入力支援装置１で行われる処理についても、同様であるので、説明を省略する。
【００３６】
図９はオフセットテーブル３のレコードレイアウトの一例を示す説明図である。オフセットテーブル３は、文例の文節と、検索用テキストの文字列との対応付けを記憶するテーブルである。オフセットテーブル３は、文例データベース２に含まれるテーブルである。また、オフセットテーブル３は、テキスト入力支援装置１及び文例データベース２とは別の構成として設けても良いし、テキスト入力支援装置１の大容量記憶装置１４に記憶しても良い。
【００３７】
オフセットテーブル３は、Ｎｏ．列、位置列、長さ列、検索用テキスト列を含む。Ｎｏ．列は、対応する文例データベース２に記憶されている文例のＮｏ．を記憶する。位置列は、文例を構成する各文節の先頭位置を記憶する。長さ列は、文例を構成する各文節の長さを記憶する。検索用テキスト列は、文例を構成する各文節に対応した検索用テキストを記憶する。
【００３８】
ＣＰＵ１１は結果を表示する際に、検索にヒットした検索用テキストを元に、オフセットテーブル３を用いて、文例のマッチ部分を求め、当該部分を視覚的に区別がつくように表示する。例えば、ＣＰＵ１１が、キーワードとして「こま」を読み込んだ段階では、文例データベース２に記憶された文例においては、検索用テキストの「こまくは◆」、「こまく：◆」、「こまく◆」、「こまくに◆」の文節が検索にヒットする。ＣＰＵ１１は、Ｎｏ．（７）の文章では、「こまくは◆」がヒットする。ＣＰＵ１１は、ヒットした検索用テキストから、オフセットテーブル３を参照して、検索にヒットした文節が、「鼓膜は」であることを取得する。そして、ＣＰＵ１１は、図示しない辞書を参照することにより、「こ」は「鼓」に、「ま」は「膜」に対応することを取得する。ＣＰＵ１１は、当該結果を受けて、「鼓膜」の二文字を、ハイライト、アンダーライン、太字など、他の部分とは視覚的に区別がつくような形態で出力する。
【００３９】
同様に、キーワードとして「こませい」を読み込んだ段階では、ＣＰＵ１１は、「鼓膜」及び「正」の部分を、他の部分とは視覚的に区別がつくような形態で出力する。さらに、「こませいちょ」を読み込んだ段階では、ＣＰＵ１１は、「鼓膜」、「正」、「聴」の部分を、他の部分とは視覚的に区別がつくような形態で出力する。図１０は、入力支援処理における入出力の一例を示す説明図である。図１０では、ヒットした部分を太字で、かつ、他の文字より大きなサイズで表示している。
【００４０】
上述のように、実施の形態３においては、検索結果を表示する際に、入力キーワードにマッチした部分をハイライト、アンダーライン、太字など、他の部分とは視覚的に区別がつくようにしている。それにより、マッチした部分が一目で把握可能となり、次に入力する文字の選択が容易になる。
【００４１】
文例データベース作成処理
次に、文例データベース作成処理について説明する。上述の説明においては、文例データベース２は既存のものであるとして説明したが、テキスト入力支援装置１により、作成・更新されても良い。図１１は文例データベース作成処理の手順を示すフローチャートである。ＣＰＵ１１は、文例を一行読み込む（ステップＳ５１）。処理対象となる新たな文例は、大容量記憶装置１４等に記憶されているものとする。ＣＰＵ１１は、読み込んだ一行の形態素解析を行う（ステップＳ５２）。ＣＰＵ１１は、形態素解析を元に、文節合成を行う（ステップＳ５３）。なお、形態素解析及び文節合成は、従来技術と同様であるので、説明を省略する。ＣＰＵ１１は、文節間に区切り記号（◆）を挿入する（ステップＳ５４）。ＣＰＵ１１は、文節合成し区切り記号を挿入した文例を読みに変換する（ステップＳ５５）。ＣＰＵ１１は、ステップＳ５１で読み込んだ文例と、ステップＳ５５で得た変換文を対応付けて、文例データベース２に記憶する（ステップＳ５６）。ＣＰＵ１１は、未処理の文例があるか否かを判定する（ステップＳ５７）。ＣＰＵ１１は、未処理の文例があると判定した場合（ステップＳ５７でＹＥＳ）、処理をステップＳ５１に戻す。ＣＰＵ１１は、未処理の文例がないと判定した場合（ステップＳ５７でＮＯ）、処理を終了する。
【００４２】
実施の形態４
実施の形態４は、テキスト入力支援システムをクライアントサーバシステムとする形態である。図１２はテキスト入力支援システムの構成例を示す説明図である。テキスト入力支援システムは、テキスト入力支援装置１、文例データベース２、クライアント４を含む。各装置はネットワークＮより接続されている。テキスト入力支援装置１、文例データベース２の構成は、実施の形態１と同様であるので、説明を省略する。
【００４３】
クライアント４はデスクトップ型ＰＣ、ノートブック型ＰＣ、タブレットコンピュータなどである。クライアント４の構成は、図２に示したテキスト入力支援装置１と同様である。実施の形態４においては、テキスト入力、結果出力が行われるのは、クライアント４である。クライアント４が読み込んだ入力キーワードは、ネットワークＮを介して、テキスト入力支援装置１に送信される。テキスト入力支援装置１は受信した入力キーワードを元に、テキスト入力支援処理を行い、結果をクライアント４に送信する。クライアント４は受信した結果を出力部１６に出力する。
【００４４】
実施の形態４では、テキスト入力支援装置１を複数のクライアント４で許容するので、テキスト入力支援装置１の稼働率を高めることが可能となる。また、文例データベース２を共有することにより、異なるユーザが同一の文例を用いて入力を行うので、入力される文章の統制を取ることが可能となる。例えば、送り仮名の送り方や、句読点の有無や位置などが統制化される。このように統制化された文章が蓄積されると、蓄積された文章を解析する際に、解析が容易になるという効果を奏する。
【００４５】
実施の形態３と同様に、実施の形態４においても、テキスト入力支援システムに、オフセットテーブル３を含んでも良い。また、テキスト入力支援装置１、文例データベース２、オフセットテーブル３をクラウド環境により、提供してもよい。
【００４６】
次に、テキスト入力支援装置１の機能構成について、説明する。図１３はテキスト入力支援装置１の機能構成の一例を示すブロック図である。テキスト入力支援装置１は、取得部１１ａ、生成部１１ｂ、検索部１１ｃ、出力部１１ｄを含む。ＣＰＵ１１が制御プログラム１Ｐを実行することにより、テキスト入力支援装置１は以下のように動作する。
取得部１１ａは、文字列を取得する。生成部１１ｂは、取得した文字列から区切り記号を挿入した検索文字列を生成する。検索部１１ｃは、文例を文節単位に分割した文節文字列の組合せにより構成した複数の検索対象文例から、前記区切り記号で区切られる各部分文字列を、文節文字列の先頭文字列として含むものを検索する。出力部１１ｄは、検索にヒットした検索対象文例に対応する文例を出力する。
【００４７】
各実施例で記載されている技術的特徴（構成要件）はお互いに組合せ可能であり、組み合わせすることにより、新しい技術的特徴を形成することができる。
今回開示された実施の形態はすべての点で例示であって、制限的なものでは無いと考えられるべきである。本発明の範囲は、上記した意味では無く、特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内でのすべての変更が含まれることが意図される。
【００４８】
以上の実施の形態１から４に関し、さらに以下の付記を開示する。
【００４９】
（付記１）
文字列を取得し、
取得した文字列から区切り記号を挿入した検索文字列を生成し、
文例を文節単位に分割した文節文字列を組み合わせた複数の検索対象文例を記憶する記憶部から、前記区切り記号で区切られる検索文字列の各部分文字列が文節文字列の先頭に含まれる前記検索対象文例を検索し、
検索にヒットした検索対象文例に対応する文例を出力する
処理をコンピュータに行わせるコンピュータプログラム。
【００５０】
（付記２）
前記取得した文字列より一文字ずつ切り出し、
先に生成し残っている検索文字列に、区切り記号及び切り出した文字を結合した検索文字列と、切り出した文字のみを結合する検索文字列とを生成し、
生成した２つの検索文字列により前記検索対象文例を検索し、検索にヒットする検索文字列を残す処理を繰り返し、
前記取得した文字列より切り出す文字がなくなった場合に、検索を終了し、文例を出力する
付記１に記載のコンピュータプログラム。
【００５１】
（付記３）
前記文字列を構成する文字を取得するたびに、先に生成し残っている検索文字列に、区切り記号及び取得した文字を結合した検索文字列と、取得した文字のみを結合する検索文字列とを生成し、
生成した２つの検索文字列により前記検索対象文例を検索し、
検索にヒットする検索文字列を残し、
残した検索文字列による検索にヒットした検索対象文例に対応する文例を出力する
付記１に記載のコンピュータプログラム。
【００５２】
（付記４）
前記検索対象文例は前記文例に含まれる漢字を読みに変換したものであり、
読みを文字列として取得する
付記１から付記３のいずれか１つに記載のコンピュータプログラム。
【００５３】
（付記５）
検索にヒットした部分を明示した文例を出力する
付記１から付記４のいずれか１つに記載のコンピュータプログラム。
【００５４】
（付記６）
文字列を取得する取得部と、
取得した文字列から区切り記号を挿入した検索文字列を生成する生成部と、
文例を文節単位に分割した文節文字列を組み合わせた複数の検索対象文例を記憶する記憶部から、前記区切り記号で区切られる検索文字列の各部分文字列が文節文字列の先頭に含まれる前記検索対象文例を検索する検索部と、
検索にヒットした検索対象文例に対応する文例を出力する出力部と
を備える検索装置。
【００５５】
（付記７）
文字列を取得し、
取得した文字列から区切り記号を挿入した検索文字列を生成し、
文例を文節単位に分割した文節文字列を組み合わせた複数の検索対象文例を記憶する記憶部から、前記区切り記号で区切られる検索文字列の各部分文字列が文節文字列の先頭に含まれる前記検索対象文例を検索し、
検索にヒットした検索対象文例に対応する文例を出力する
処理をコンピュータにより行う検索方法。
【符号の説明】
【００５６】
１      テキスト入力支援装置
１１    ＣＰＵ
１１ａ  取得部
１１ｂ  生成部
１１ｃ  検索部
１１ｄ  出力部
１２    ＲＡＭ
１３    ＲＯＭ
１４    大容量記憶装置
１５    入力部
１６    出力部
１７    通信部
１８    読み取り部
１ａ    可搬型記憶媒体
１ｂ    半導体メモリ
１Ｐ    制御プログラム
２      文例データベース
３      オフセットテーブル
４      クライアント
Ｎ      ネットワーク
【図１】
0006511874.tif 000002
【図２】
0006511874.tif 000003
【図３】
0006511874.tif 000004
【図４】
0006511874.tif 000005
【図５】
0006511874.tif 000006
【図６】
0006511874.tif 000007
【図７】
0006511874.tif 000008
【図８】
0006511874.tif 000009
【図９】
0006511874.tif 000010
【図１０】
0006511874.tif 000011
【図１１】
0006511874.tif 000012
【図１２】
0006511874.tif 000013
【図１３】
0006511874.tif 000014