(57)【要約】【課題】検索速度の低下を抑えつつ検索精度を高めることができる検索装置、方法及びプログラムを提供する。【解決手段】実施形態の検索装置は、取得部と、分割部と、抽出部と、算出部と、検索部と、を備える。取得部は、複数の第１点列を取得する。分割部は、前記複数の第１点列それぞれを複数の第２点列に分割する。抽出部は、前記複数の第２点列それぞれの特徴量を抽出する。算出部は、前記複数の第１点列それぞれに属する複数の第２点列間の最適経路に基づいて、当該複数の第１点列間の距離を算出する。検索部は、前記距離を用いて、前記複数の第１点列に対応するデータを検索する。【選択図】図１
2014235551.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１点列を取得する取得部と、
前記複数の第１点列それぞれを複数の第２点列に分割する分割部と、
前記複数の第２点列それぞれの特徴量を抽出する抽出部と、
前記複数の第１点列それぞれに属する複数の第２点列間の最適経路に基づいて、当該複数の第１点列間の距離を算出する算出部と、
前記距離を用いて、前記複数の第１点列に対応するデータを検索する検索部と、
を備える検索装置。
【請求項２】
前記分割部は、前記複数の第２点列それぞれの曲率が閾値以下となるように、前記第１点列を前記複数の第２点列に分割する請求項１に記載の検索装置。
【請求項３】
前記分割部は、前記複数の第２点列それぞれの長さが閾値以下となるように、前記第１点列を前記複数の第２点列に分割する請求項１に記載の検索装置。
【請求項４】
前記分割部は、前記複数の第２点列の数が予め定められた数となるように、前記第１点列を前記複数の第２点列に分割する請求項１に記載の検索装置。
【請求項５】
検索された前記データを表示部に表示させる表示制御部を更に備える請求項１に記載の検索装置。
【請求項６】
前記複数の第１点列は、ユーザが文字列を手書きしたストローク群であり、
前記第２点列は、前記ストローク群を構成するストロークのサブストロークであり、
前記データは、文字列を示す文字列データであり、
前記取得部は、前記ストローク群を構成するストロークを順次取得することで、前記前記ストローク群を取得し、
前記分割部は、前記ストローク群を構成するストロークそれぞれを複数のサブストロークに分割し、
前記算出部は、前記ストローク群を構成するストロークそれぞれに属する前記複数のサブストローク間の最適経路に基づいて、当該ストローク群を構成するストローク間の距離を算出し、
前記検索部は、前記距離を用いて、前記ストローク群に対応する文字列データを検索し、
前記表示制御部は、検索された前記文字列データを前記表示部に表示させる請求項５に記載の検索装置。
【請求項７】
前記取得部は、ユーザにより指定された複数の第１点列を取得する請求項１に記載の検索装置。
【請求項８】
複数の第１点列を取得する取得ステップと、
前記複数の第１点列それぞれを複数の第２点列に分割する分割ステップと、
前記複数の第２点列それぞれの特徴量を抽出する抽出ステップと、
前記複数の第１点列それぞれに属する複数の第２点列間の最適経路に基づいて、当該複数の第１点列間の距離を算出する算出ステップと、
前記距離を用いて、前記複数の第１点列に対応するデータを検索する検索ステップと、
を含む検索方法。
【請求項９】
複数の第１点列を取得する取得ステップと、
前記複数の第１点列それぞれを複数の第２点列に分割する分割ステップと、
前記複数の第２点列それぞれの特徴量を抽出する抽出ステップと、
前記複数の第１点列それぞれに属する複数の第２点列間の最適経路に基づいて、当該複数の第１点列間の距離を算出する算出ステップと、
前記距離を用いて、前記複数の第１点列に対応するデータを検索する検索ステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、検索装置、方法及びプログラムに関する。
【背景技術】
【０００２】
点列で構成されるクエリに一致又は類似するデータをデータベースから検索する技術が知られている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Cheng  Cheng,  Bilan  Zhu,  Masaki  Nakagawa:  "A  Discriminative  Model  for  On-line  Handwritten  Japanese  Text  Retrieval",  International  Conference  on  Document  Analysis  and  Recognition,  2011
【０００４】
【非特許文献２】Pasitthideth  LUANGVILAY,  Bilan  ZHU,  Masaki  NAKAGAWA:  "An  On-line  Handwritten  Text  Search  Method  based  on  Directional  Feature  Matching",  International  Conference  on  Document  Analysis  and  Recognition,  2011
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したような従来技術では、クエリを構成する点列の数が少ないと、検索精度が低下するおそれがある。また、点列の数が少ないクエリであっても点列の数を擬似的に増やすことで検索精度を高めることができるが、この場合、検索速度が低下するおそれがある。
【０００６】
本発明は、上記事情に鑑みてなされたものであり、検索速度の低下を抑えつつ検索精度を高めることができる検索装置、方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態の検索装置は、取得部と、分割部と、抽出部と、算出部と、検索部と、を備える。取得部は、複数の第１点列を取得する。分割部は、前記複数の第１点列それぞれを複数の第２点列に分割する。抽出部は、前記複数の第２点列それぞれの特徴量を抽出する。算出部は、前記複数の第１点列それぞれに属する複数の第２点列間の最適経路に基づいて、当該複数の第１点列間の距離を算出する。検索部は、前記距離を用いて、前記複数の第１点列に対応するデータを検索する。
【図面の簡単な説明】
【０００８】
【図１】第１実施形態の検索装置の例を示す構成図。
【図２】第１実施形態のストロークの例を示す図。
【図３】第１実施形態のストロークの例を示す図。
【図４】第１実施形態のインクデータのデータ構造の例を示す図。
【図５】第１実施形態のサブストロークを表現するデータのデータ構造の例を示す図。
【図６】第１実施形態のＤＰマッチング例を示す図。
【図７】第１実施形態の検索例を示す図。
【図８】第１実施形態の表示例を示す図。
【図９】第１実施形態の処理例を示すフローチャート図。
【図１０】第１実施形態の検索装置のハードウェア構成例を示す図。
【図１１】第１実施形態の検索装置の実現例を示す図。
【発明を実施するための形態】
【０００９】
以下、添付図面を参照しながら、実施形態を詳細に説明する。
【００１０】
（第１実施形態）
第１実施形態では、ユーザが手書きした手書き文字列をクエリとして、予め筆記された（例えば大量の）手書き文書から検索を行う場合について説明する。なお第１実施形態では、主として、文字列を例に説明するが、クエリはユーザが描画した線やマークなど文字コードが割り当てられない自由筆記であってもよい。また、ユーザが手書き文字列を指定する方法には、どのような方法を使用してもよい。例えば、ユーザが実際に文字列を手書きすることによって、クエリを指定するようにしてもよいし、既存の手書き文書の中からユーザがクエリとして用いる部分を選択するようにしてもよいし、クエリ用のテンプレートの中からユーザがクエリとして用いるものを選択するようしてもよいし、これらの組み合わせであってもよい。
【００１１】
図１は、第１実施形態の検索装置１０の一例を示す構成図である。図１に示すように、検索装置１０は、入力部１１と、取得部１３と、インクデータ記憶部１５と、分割部１７と、抽出部１９と、特徴量記憶部２１と、算出部２３と、検索部２５と、表示制御部２７と、表示部２９とを、備える。
【００１２】
入力部１１は、例えば、タッチパネル、タッチパッド、電子ペン、及びマウスなどの手書き入力可能な入力装置により実現できる。取得部１３、分割部１７、抽出部１９、算出部２３、検索部２５、及び表示制御部２７は、例えば、ＣＰＵ（Central  Processing  Unit）などの処理装置にプログラムを実行させること、即ち、ソフトウェアにより実現してもよいし、ＩＣ（Integrated  Circuit）などのハードウェアにより実現してもよいし、ソフトウェア及びハードウェアを併用して実現してもよい。インクデータ記憶部１５及び特徴量記憶部２１は、例えば、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、メモリカード、光ディスク、及びＲＡＭ（Random  Access  Memory）などの磁気的、光学的、又は電気的に記憶可能な記憶装置により実現できる。表示部２９は、例えば、タッチパネルディスプレイや液晶ディスプレイなどの表示装置により実現できる。
【００１３】
入力部１１は、複数の第１点列を検索装置１０に入力する。第１実施形態では、入力部１１は、ユーザが文字などを意図して手書き（描画）又は指定した複数のストローク（複数の第１点列の一例）を検索装置１０に入力するものとするが、これに限定されるものではない。また第１実施形態では、入力部１１はタッチパネルであり、ユーザがスタイラスペン又は指を用いてタッチパネル上で手書きすることにより、複数のストロークを入力することを想定しているが、これに限定されるものではない。例えば、入力部１１をタッチパッド、電子ペン、又はマウスなどで実現してもよい。
【００１４】
ストロークは、ユーザの手書きの１画、即ち、スタイラスペン又は指がタッチパネルの入力面に接してから離れるまで（ペンダウンからペンアップまで）の軌跡を示す。ストロークを表現するデータは、タッチパネルの入力面に対するスタイラスペン又は指の軌跡上のサンプリング点（時系列の座標値）、当該軌跡の外接矩形、及び当該軌跡の筆圧などが挙げられる。
【００１５】
具体的には、タッチパネルの入力面に対してスタイラスペン又は指がペンダウンされると、タッチパネルが、当該入力面に対するスタイラスペン又は指の軌跡上の点、当該軌跡の筆圧、当該軌跡の入力が開始されてからの経過時間を定期的にサンプリングし、スタイラスペン又は指がペンアップされると、タッチパネルが、当該軌跡の外接矩形を抽出することで、ストロークを表現するデータを生成し、検索装置１０に入力する。
【００１６】
図２及び図３は、第１実施形態のストロークの一例を示す図であり、図２に示す例では、ストロークのサンプリング点を示し、図３に示す例では、図２に示すサンプリング点を時系列で線形補完したストロークを示している。図２及び図３に示す例では、サンプリングは定期的（一定周期）に行われているが、ユーザの筆記速度の影響でサンプリング点の座標間隔が異なっている。なお、ストロークのサンプリング点の数は、ストローク毎に異なる。
【００１７】
取得部１３は、複数の第１点列を取得する。第１実施形態では、取得部１３は、入力部１１により入力されたストロークを順次取得することで、複数のストロークを取得する。そして取得部１３は、ストロークの取得が完了すると、即ち、入力部１１からのストロークの入力が完了すると、取得済みのストロークを表現するデータの集合であるインクデータをインクデータ記憶部１５に記憶する。なお、入力部１１からのストロークの入力が完了とは、ユーザが手書き文字列を書き終えた場合や、当該手書き文字列の保存操作が行われた場合などが挙げられる。つまり、インクデータは、ページ（文書）単位でのストローク群を表現するデータとなる。
【００１８】
なお、取得部１３は、複数のストローク群をインクデータ記憶部１５に記憶する場合、インクデータにページ（文書）ＩＤを対応付けることで、各ストローク群を識別できるようにすることができる。また、取得部１３は、ストロークを表現するデータにストロークＩＤを対応付けることで、各ストロークを識別できるようにすることができる。
【００１９】
図４は、第１実施形態のインクデータのデータ構造の一例を示す図であり、取得部１３によりインクデータ記憶部１５に記憶されるインクデータのデータ構造を示す。第１実施形態では、インクデータは、インクデータ構造、ストローク構造、及び点構造の３階層のデータ構造で表されているが、これに限定されるものではない。
【００２０】
インクデータ構造は、ストローク群を構成するストロークのストローク総数、及びストローク群を構成する各ストロークのストローク構造を含む構造体である。ストローク構造は、ストロークを構成するサンプリング点の点総数、当該ストロークの入力が開始された開始時間（ペンダウンが開始された時間）、当該ストロークの外接矩形、当該ストロークを構成する各サンプリング点の点構造を含む構造体である。第１実施形態では、ストロークの外接矩形は、当該ストロークを内包する最小面積の矩形とするが、これに限定されるものではない。点構造は、サンプリング点のｘ座標、ｙ座標、筆圧、及び開始時間との時間差を含む構造体である。なお、ｘ座標及びｙ座標の座標系は、タッチパネルの入力面の左上の隅（角）を原点とし、タッチパネルの右側ほどｘ座標の値が大きくなり、タッチパネルの下側ほどｙ座標の値が大きくなるような座標系とすることができる。
【００２１】
また、タッチパネルが筆圧をサンプリングできない場合、又は以降の処理で筆圧を使用しない場合には、点構造の筆圧を省略してもよいし、点構造の筆圧に無効を示す値を設定してもよい。また、タッチパネルが開始時間や開始時間との時間差などの時刻をサンプリングできない場合、又は以降の処理で時刻を使用しない場合には、点構造の時間差に点構造の順番を示す値を設定してもよいし、点構造の時間差を省略してもよいし、点構造の時間差に無効を示す値を設定してもよい。
【００２２】
また、ストローク構造の各項目には、実データを記載してもよいし、インクデータ構造のデータとストローク構造のデータとを別々に管理するものとして、インクデータ構造におけるストローク構造の領域に、対応するストローク構造へのリンク情報を記載してもよい。同様に、点構造の各項目には、実データを記載してもよいし、ストローク構造のデータと点構造のデータとを別々に管理するものとして、ストローク構造における点構造の領域に、対応する点構造へのリンク情報を記載してもよい。
【００２３】
分割部１７は、取得部１３により取得された複数の第１点列それぞれを複数の第２点列に分割する。第１実施形態では、分割部１７は、インクデータ記憶部１５に記憶されたインクデータが示すストローク群（複数のストローク）を構成するストロークそれぞれを複数のサブストロークに分割する。そして分割部１７は、各サブストロークを表現するデータ、及び当該データがいずれのストロークを表現するデータに属するかを示すリンク情報を、インクデータ記憶部１５に記憶されているインクデータに追加する。
【００２４】
図５は、第１実施形態のサブストロークを表現するデータのデータ構造の一例を示す図であり、分割部１７によりインクデータ記憶部１５に追加されるデータのデータ構造を示す。第１実施形態では、サブストロークを表現するデータは、サブストローク構造及び点構造の２階層のデータ構造で表されているが、これに限定されるものではない。
【００２５】
サブストローク構造は、サブストロークを構成するサンプリング点の点総数、当該サブストロークの入力が開始された開始時間、当該サブストロークが属するストロークのストローク構造へのポインタ、当該サブストロークの外接矩形、当該サブストロークを構成する各サンプリング点の点構造を含む構造体である。
【００２６】
なお分割部１７は、例えば、複数のサブストロークそれぞれの曲率が閾値以下となるように、ストロークを当該複数のサブストロークに分割する。ここで、ストロークの曲率は、各サンプリング点上で計算できるが、ストロークの大きさやサンプリングレートによりサンプリング点数が異なるため、このままでは曲率を計算できる箇所がストローク毎に異なってしまう。
【００２７】
このため、分割部１７は、ストロークを固定数のサンプリング点で近似し、サンプリング点間の距離が一定になるようにリサンプリングする。分割部１７は、例えば、サンプリング点間の距離が一定になるように線形補完することで、リサンプリング点の座標値を算出する。この際、分割部１７は、リサンプリング点数を減少させるほど、ストロークを直線で近似することになる。
【００２８】
例えば、分割対象のストロークＳにおけるリサンプリング点Ｓｂａｓｅからリサンプリング点Ｓｉまでの曲率ＣＳ（ｂａｓｅ，ｉ）は、数式（１）で表される。
【００２９】
【数１】
2014235551.tif 000003
【００３０】
ここで、ｄｉｓｔ（Ｓｊ，Ｓｊ＋１）は、サンプル点Ｓｊからサンプル点Ｓｊ＋１までの距離を示す。また、曲率ＣＳ（ｂａｓｅ，ｉ）の値が１に近いほどストロークＳは直線となり、曲率ＣＳ（ｂａｓｅ，ｉ）の値が０に近いほどストロークＳは曲線となる。
【００３１】
分割部１７は、リサンプリングした各ストロークに対して、開始点から順に曲率を算出し、閾値以下となったサンプリング点の直前までをサブストロークに分割し、以降、同様の処理を終了点まで行う。
【００３２】
なお、ストロークの分割手法はこれに限定されず、分割部１７は、例えば、複数のサブストロークそれぞれの長さが閾値以下となるように、ストロークを当該複数のサブストロークに分割してもよいし、複数のサブストロークの数が予め定められた数となるように、ストロークを当該複数のサブストロークに分割してもよい。
【００３３】
また第１実施形態では、取得部１３によるストローク群の取得完了後に、分割部１７が各ストロークを分割することを想定して説明したが、取得部１３によるストロークの取得と分割部１７によるストロークの分割とを並列して処理するようにしてもよい。
【００３４】
抽出部１９は、分割部１７により分割された複数の第２点列それぞれの特徴量を抽出する。第１実施形態では、抽出部１９は、複数のサブストロークそれぞれに固有の特徴量を当該サブストロークから抽出する。
【００３５】
ここで、分割部１７はストロークをリサンプリングしているため、全てのストロークが同数の点構造を有している。しかしながら、サブストロークの点構造の数は、ストロークの分割手法に依存するため、全てのサブストロークが同数の点構造を有しているとは限らない。
【００３６】
このため、抽出部１９は、サブストロークを固定数のサンプリング点で近似し、リサンプリングする。抽出部１９は、例えば、サブストローク長を固定数Ｎ（例えば、Ｎ＝１２８）のサンプリング点で一定間隔に再サンプリングし、元のサブストロークのサンプリング点の近傍２点から線形補間することで、リサンプリング点の座標値を算出する。
【００３７】
そして抽出部１９は、以下のような手法で、サブストロークに固有の特徴量を抽出（算出）する。但し、特徴量の抽出手法は、これに限定されるものではない。
【００３８】
まず、抽出部１９は、リサンプリング後のサブストロークに対し、当該サブストロークの外接矩形の長辺を１辺の長さとする正方形のサブストローク領域を設定する。この際、抽出部１９は、サブストロークの外接矩形の中心がサブストローク領域の中央に位置するように当該サブストローク領域を設定する。ここで、サブストローク領域の中央とは、例えば、サブストローク領域内の複数の点の座標を平均した位置である。
【００３９】
次に、抽出部１９は、数式（２）を用いて、リサンプリング後のサブストロークの２つのサンプル点間のベクトルの角度（方向）を量子化し、投票するヒストグラムのビンを算出する。なお、サブストロークの筆記方向にも意味があるため、角度の値域は、−πからπとする。
【００４０】
【数２】
2014235551.tif 000004
【００４１】
ここで、ｄｅｖｘ及びｄｅｖｙは、サブストロークの微分値に相当する２つのサンプル点間のベクトルの成分を示し、ｄｉｒｅｃｔｉｏｎは、方向の量子化数を示す。
【００４２】
また、サブストローク領域全体からではなく、サブストローク領域をブロック分割した各ブロック領域から方向ヒストグラムを算出し、結合することで、特徴量の表現能力が向上する。このため第１実施形態では、抽出部１９は、サブストローク領域をブロック分割するが、サブストロークが、固定のアスペクト比ではなく，ｘ軸又はｙ軸に平行の直線であることもあるため、数式（３）及び数式（４）に示すように、アスペクト比を保存するようにブロック分割する。
【００４３】
【数３】
2014235551.tif 000005
【００４４】
【数４】
2014235551.tif 000006
【００４５】
ここで、ｘｉ及びｙｉは、ｉ番目のリサンプリング点の座標値を示し、ｘｍｉｎ及びｙｍｉｎは、サブストローク中で最も小さい座標値を示し、ｌｅｎｇｔｈｘ及びｌｅｎｇｔｈｙは、座標中の値域のサイズを示し、ｓｐｌｉｔは、分割数を示す。
【００４６】
つまり、抽出部１９は、各サンプル点がどのブロック領域に属するかを算出し、各ブロック領域において、数式（２）を用いて投票するヒストグラムのビンを算出する。
【００４７】
例えば、ブロック領域のｘ軸方向の量子化値をｘ、ｙ軸方向の量子化値をｙ、方向成分の量子化値をｄ、投票先のビンをｂｉｎ（ｘ，ｙ，ｄ）とすると、抽出部１９は、ｂｉｎ（ｘ，ｙ，ｄ）＝９、ｂｉｎ（ｘ，ｙ，ｄ’）＝６、ｂｉｎ（ｘ’，ｙ，ｄ）＝４、ｂｉｎ（ｘ’，ｙ，ｄ’）＝３、ｂｉｎ（ｘ，ｙ’，ｄ）＝４、ｂｉｎ（ｘ，ｙ’，ｄ’）＝３、ｂｉｎ（ｘ’，ｙ’，ｄ）＝３、ｂｉｎ（ｘ’，ｙ’，ｄ’）＝２のような投票を行う。
【００４８】
ここで、ｘ’、ｙ’、及びｄ’は、最も近い量子化値を示す。
【００４９】
なお、サブストロークから特徴抽出する際に方向を量子化するが、少しの表記ブレで量子化先が変わることがあるため、対象のビンと隣接関係にあるビンへ重付きで投票することで、表記ゆれにロバストな特徴抽出を行うことができる。例えば、抽出部１９は、８方向に量子化したい場合、予め１６方向に量子化して、数式（５）に示すように、８方向にガウシアンフィルタで平滑化する。
【００５０】
【数５】
2014235551.tif 000007
【００５１】
ここで、ｄｉは算出するｉ方向の頻度を示し、ｄｉ’は、２倍の解像度で量子化した頻度を示す。但し、ｉ＝０の場合、方向は周期性があるため、数式（６）に示すようなガウシアンフィルタで平滑化する。この場合、予め量子化する数は、２ｄｉｒｅｃｔｉｏｎでよい。
【００５２】
【数６】
2014235551.tif 000008
【００５３】
また、方向だけでなく、ブロック領域間も同様に平滑化することで、表記ゆれにロバストな特徴抽出を行うことができる。この場合、方向とは異なり周期性がないため、抽出部１９は、サブストローク領域を（２ｓｐｌｉｔ＋１）×（２ｓｐｌｉｔ＋１）に分割した後、ｓｐｌｉｔ×ｓｐｌｉｔの各領域を、数式（７）に示すようなガウシアンフィルタで平滑化する。
【００５４】
【数７】
2014235551.tif 000009
【００５５】
ここで、ｃｏｏｒｄ（ｘ，ｙ）は、抽出対象領域のヒストグラムを示し、ｃｏｏｒｄ’（ｘ，ｙ）は、予め算出した（２ｓｐｌｉｔ＋１）×（２ｓｐｌｉｔ＋１）に領域分割したヒストグラムを示し、｜Ｗ｜は、ガウシアンフィルタを示す。
【００５６】
以上より、抽出部１９は、最終的に、ｓｐｌｉｔ×ｓｐｌｉｔ×ｄｅｌｉｃｔｉｏｎ次元の特徴量を抽出する。そして抽出部１９は、抽出した複数のサブストロークそれぞれの特徴量、及びサブストロークの特徴量と当該サブストロークが属するストロークとを関連付ける関連付け情報を特徴量記憶部２１に記憶する。
【００５７】
例えば、取得部１３がストロークにストロークＩＤを付与している場合には、当該ストロークＩＤを関連付け情報に用いることができる。また例えば、サブストロークが属するストロークのストローク構造へのリンク情報を関連付け情報に用いることもできる。なお、インクデータ記憶部１５及び特徴量記憶部２１を１つのデータベースとし、サブストローク構造内に特徴量を記述するようにしてもよい。
【００５８】
また第１実施形態では、分割部１７によるストローク群の分割完了後に、抽出部１９が各サブストロークの特徴量を抽出することを想定して説明したが、取得部１３によるストロークの取得、分割部１７によるストロークの分割、及び抽出部１９によるサブストロークの特徴量抽出を並列して処理するようにしてもよい。
【００５９】
算出部２３は、複数の第１点列それぞれに属する複数の第２点列間の最適経路に基づいて、当該複数の第１点列間の距離を算出する。第１実施形態では、算出部２３は、ストローク群（複数のストローク）それぞれに属する複数のサブストローク間の最適経路に基づいて、当該ストローク群を構成するストローク間の距離を算出する。
【００６０】
具体的には、算出部２３は、ストローク間の距離を、当該ストロークに属する複数のサブストロークそれぞれの特徴量に基づく距離を用いてＤＰ（Dynamic  Programming）マッチング（広義には、弾性マッチング）して、最適な組み合わせ（最適経路）を求め、当該最適な組み合わせの平均距離とすることで、求める。
【００６１】
つまり、算出部２３は、抽出部１９により抽出されたサブストロークの特徴量（特徴ベクトル）を用いて、ストローク間の距離を算出する。第１実施形態では、ストローク間の距離を、ＤＰマッチングを用いたサブストローク単位での対応付けを行うことで算出する。サブストローク間の距離は、それぞれのサブストロークの特徴量間の距離で規定されるので、特徴量に応じた最適なＭｅｔｒｉｃを用いればよい。例えば、サブストローク間の距離を、Ｌ2ノルムやＬ１ノルムとしてもよいし、正規化相互相関などで算出したベクトル間尤度を１から引いた値（距離基準に統一するため）としてもよい。
【００６２】
ここで、全てのサブストロークに対してＤＰマッチングを行うと、計算量が増大してしまう。例えば、検索対象のストローク群（画数Ｎ）及びクエリとなるストローク群（画数Ｍ）のストロークの平均分割率をＲとすると、それぞれでサブストローク数がＲ倍になるので、探索範囲はＮ×ＭからＮＲ×ＭＲに増加する。なお、クエリとなるストローク群は、ユーザが手書き又は指定したストローク群であり、取得部１３により取得されたストローク群が該当する。
【００６３】
このため第１実施形態では、算出部２３は、ストロークの分割に伴う索範囲の増加を抑える為、２段階でＤＰマッチングを行う。具体的には、算出部２３は、まず、ストローク間で１段目のＤＰマッチングを行い、次に、１段目のＤＰマッチングで対応付けられたそれぞれのストロークに属するサブストローク列間で２段目のＤＰマッチングを行う。
【００６４】
この結果、１段目のＤＰマッチングでは、ストロークのストローク数で探索できるため、探索範囲をＮ×Ｍに抑えることができる（図６参照）。
【００６５】
例えば、Ｉ画のストロークｘｐを分割してできるサブストローク列をｘｐ’、Ｊ画のストロークｙｐを分割してできるサブストローク列をｙｐ’とし、サブストローク列ｘｐ’の画数をＩｐ’画、サブストローク列ｙｐ’の画数をＪｐ’画とする。この場合、ストロークｘｐとストロークｙｐとの間の距離ｄ（ｘｐ，ｙｐ）は、サブストローク列ｘｐ’とサブストローク列ｙｐ’との間の距離ｄ（ｘｐ’，ｙｐ’）で計算される。なお、サブストローク列間の距離ｄ（ｘｐ’，ｙｐ’）は、サブストローク単位のＤＰマッチング（２段目のＤＰマッチング）の経路の総コストｇ’（Ｉｐ’，Ｊｐ’）で計算する。つまり、ｄ（ｘｐ，ｙｐ）＝ｄ（ｘｐ’，ｙｐ’）＝ｇ’（Ｉｐ’，Ｊｐ’）となる。
【００６６】
なお、ｇ’（Ｉｐ’，Ｊｐ’）は、数式（８）〜数式（１１）の漸化式を用いて計算できる（図６参照）。
【００６７】
【数８】
2014235551.tif 000010
【００６８】
ｇ（０，０）＝０      …（９）
【００６９】
ｇ（ｉ’，０）＝∞（ｉ’＝１，…，Ｉｐ’）      …（１０）
【００７０】
ｇ（０，ｊ’）＝∞（ｊ’＝１，…，Ｊｐ’）      …（１１）
【００７１】
ここで、ｇ’（ｉ’，ｊ’）は、（ｉ’，ｊ’）までの最適経路の累積コスト、ｄ（ｘ’ｉ’−ｋ，ｉ’，ｙ’ｊ’−ｌ，ｊ’）は、ｘ’の第（ｉ’−ｋ）要素から第ｉ’要素までのサブストローク列ｘ’ｉ’−ｋ，…，ｘ’ｉと、ｙ’の第（ｊ’−ｋ）要素から第ｊ’要素までのサブストローク列ｙ’ｊ’−ｌ，…，ｙ’ｊとを対応付けた時のコスト（局所距離）である。
【００７２】
検索部２５は、算出部２３により算出された距離を用いて、複数の第１点列に対応するデータを検索する。第１実施形態では、検索部２５は、算出部２３により算出された距離を用いて、取得部１３により取得されたストローク群に対応する文字列データを検索する。つまり、検索部２５は、取得部１３により取得されたストローク群をクエリとし、算出部２３により算出されたストローク群を構成するストローク間の距離を用いて、文字列データを検索する。詳細には、検索部２５は、サブストローク間でＤＰマッチングし最適な各サブストローク間の対応を求めた後、それぞれの対応するサブストローク間の特徴量の距離の平均をオリジナルのストローク間の距離とし、ＤＰマッチングをする。つまり、ストローク内とストローク間の２段階でＤＰマッチングを行う。
【００７３】
なお、検索部２５の検索先、即ち、文字列データを記憶するデータベースは、検索装置１０内に配置されていてもよいし、外部（例えば、イントラネット、インターネット、又は検索装置１０に外部接続された記憶媒体）に配置されていてもよい。また、検索対象の文字列データには、前述した特徴量が対応付けられていることが好ましい。
【００７４】
例えば、検索部２５は、算出部２３により算出された２つのストローク列の距離の総和が最小となる画対応付けを行う。具体的には、検索部２５は、数式（１２）〜数式（１４）の漸化式を用いたＤＰマッチングで経路探索処理を行う（図７参照）。
【００７５】
【数９】
2014235551.tif 000011
【００７６】
ｇ（ｉ，０）＝∞（ｉ＝０，…，Ｉ）      …（１３）
【００７７】
ｇ（０，ｊ）＝∞（ｊ＝１，…，Ｊ）      …（１４）
【００７８】
ここで、ｇ（ｉ，ｊ）は、（ｉ，ｊ）までの最適経路の累積コスト、ｄ（ｘｉ−ｋ，ｉ，ｙｊ−ｌ，ｊ）は、ストロークｘの第（ｉ−ｋ）要素から第ｉ要素までのｋ画のストローク列ｘｐと、ストロークｙの第（ｊ−ｋ）要素から第ｊ要素までのｌ画のストローク列ｙｐとを対応付けた時のコスト（局所距離）である。
【００７９】
そして、ストローク群Ｘを検索対象、ストローク群Ｙをクエリとし、それぞれの画数をＩ、Ｊとしたとき、数式（１５）となる経路に含まれるストローク群Ｙのストローク列が検索部２５の検索結果となる(図７参照)。
【００８０】
【数１０】
2014235551.tif 000012
【００８１】
表示制御部２７は、検索部２５により検索されたデータを表示部２９に表示させる。第１実施形態では、表示制御部２７は、検索部２５により検索された文字列データを表示部２９に表示させる。例えば、表示制御部２７は、図８に示すように、表示部２９の画面をタイル状に分割し、各タイルに縮小した文書のサムネイルを表示させるようにしてもよい。この際に、表示制御部２７は、例えば、表示順として、検索結果の類似度の高いストローク列を含む順に、文書のサムネイルを並べるようにしてもよい。また、サムネイルにおいて、検索結果のストローク列を強調表示するようにしてもよい。
【００８２】
図９は、第１実施形態の検索装置１０で行われる処理の手順の流れの一例を示すフローチャート図である。
【００８３】
まず、取得部１３は、入力部１１により入力されたストロークを順次取得することで、ストローク群を取得する（ステップＳ１０１）。
【００８４】
続いて、分割部１７は、取得部１３により取得されたストローク群を構成するストロークそれぞれを複数のサブストロークに分割する（ステップＳ１０３）。
【００８５】
続いて、抽出部１９は、複数のサブストロークそれぞれに固有の特徴量を当該サブストロークから抽出する（ステップＳ１０５）。
【００８６】
続いて、算出部２３は、ストローク群それぞれに属する複数のサブストローク間の最適経路に基づいて、当該ストローク群を構成するストローク間の距離を算出する（ステップＳ１０７）。
【００８７】
続いて、検索部２５は、算出部２３により算出された距離を用いて、取得部１３により取得されたストローク群に対応する文字列データを検索する（ステップＳ１０９）。
【００８８】
続いて、表示制御部２７は、検索部２５により検索された文字列データを表示部２９に表示させる（ステップＳ１１１）。
【００８９】
なお、上記処理において、ステップＳ１０１〜Ｓ１０５は、並列して実行することもできる。
【００９０】
以上のように第１実施形態によれば、ストローク群を構成するストロークを複数のサブストロークに分割して検索用のクエリとすることで、ストローク群を構成するストローク数が少ない場合であってもストローク数を擬似的に増やすことができ、検索精度を高めることができる。また、検索の際に、サブストローク列間の最適経路に基づいて検索を行うことで、検索時の処理コストを削減でき、検索速度の低下を抑えることができる。
【００９１】
（ハードウェア構成）
図１０は、第１実施形態の検索装置１０のハードウェア構成の一例を示す図である。図１０に示すように、検索装置１０は、ＣＰＵ２０１と、入力デバイス２０２と、出力デバイス２０３と、ＲＡＭ２０４と、ＲＯＭ２０５と、外部メモリインターフェース２０６と、通信インターフェース２０７とを、備える。例えば、入力デバイス２０２及び出力デバイス２０３にタッチパネルを使用する場合には、液晶パネルとペンと液晶パネル上に設けられたストローク検出装置等が利用される（符号２０８参照）。
【００９２】
第１実施形態の検索装置１０で実行されるプログラムは、ＲＯＭ等に予め組み込んで提供される。また、第１実施形態の検索装置１０で実行されるプログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、ＣＤ−Ｒ、メモリカード、ＤＶＤ、フレキシブルディスク（ＦＤ）等のコンピュータで読み取り可能な記憶媒体に記憶されて提供するようにしてもよい。また、第１実施形態の検索装置１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するようにしてもよい。
【００９３】
第１実施形態の検索装置１０で実行されるプログラムは、上述した各部をコンピュータ上で実現させるためのモジュール構成となっている。実際のハードウェアとしては、例えば、ＣＰＵ２０１がＲＯＭ２０５からプログラムをＲＡＭ２０４上に読み出して実行することにより、上記各部がコンピュータ上で実現されるようになっている。
【００９４】
なお、第１実施形態の検索装置１０は、スタンドアローンの装置として構成することも、ネットワークを介して通信可能な複数のノードに分散した形で構成することも可能である。また、第１実施形態の検索装置は、デスクトップ型又はラップトップ型の汎用計算機、携帯型の汎用計算機、その他の携帯型の情報機器、タッチパネルを有する情報機器、スマートフォン、その他の情報処理装置など、様々なデバイスによって実現可能である。
【００９５】
例えば、図１１は、イントラネット及び／又はインターネット等のネットワーク３０２上にサーバ３０１が存在し、各クライアント３０３、３０４がネットワーク３０２を介してそれぞれサーバ３０１と通信することによって、本実施形態の検索装置１０が実現する様子を例示している。
【００９６】
なお、クライアント３０３は、無線通信を介してネットワーク３０２に接続され、クライアント３０４は、有線通信を介してネットワーク３０２に接続される場合を例示している。クライアント３０３，３０４は、通常、ユーザ装置である。サーバ３０１は、例えば、企業内ＬＡＮ等のＬＡＮ上に設けられたものであっても良いし、インターネット・サービス・プロバイダ等が運営するものであっても良い。また、サーバ３０１がユーザ装置であって、あるユーザが他のユーザに機能を提供するものであっても良い。
【００９７】
図１の構成に則して説明すれば、入力部１１、取得部１３、表示制御部２７、及び表示部２９をクライアント側に搭載し、それ以外の構成をサーバ側に搭載しても良いし、算出部２３と検索部２５をサーバ側に搭載し、それ以外の構成をクライアント側に搭載しても良い。
【００９８】
なお、入力部１１、取得部１３、表示制御部２７、及び表示部２９以外の構成も備えた装置、表示制御部２７及び表示部２９を備えた装置を実現しても良い。この場合、当該装置は、サブストロークから特徴量を抽出する機能を有するものである。
【００９９】
また例えば、入力部１１、取得部１３、表示制御部２７、及び表示部２９をクライアント側に搭載し、算出部２３及び検索部１５を第１のサーバに搭載し、インクデータ記憶部１５、分割部１７、抽出部１９、及び特徴量記憶部２１第２のサーバに搭載しても良い。
【０１００】
また、これら以外の分散方法も可能である。
【０１０１】
（変形例１）
検索装置１０において、取得部１３が取得するストロークを音波形データとしてもよい。この場合、取得部１３は、マイクなどの入力装置から入力された音声をアナログ／デジタル変換し、デジタル信号を取得する。例えば、１６ＫＨｚでサンプリングし、１６Ｂｉｔで量子化したデジタル信号に変換する。
【０１０２】
その後、取得部１３は、音信号をデジタル信号の振幅値に対するしきい値によって音声区間と無音区間に分割し、連続した音声区間を順次分割部１７に出力する。この分割方法は前記方法に限定したものではなく、例えば、音声区間と無音区間を分割せずに、ある一定の時間区間によって分割したものを出力しても良い。また、出力として音声区間と無音区間両方を分割部１７に出力しても良い。
【０１０３】
分割部１７は、取得部１３から出力される一つの連続した音区間を、あらかじめ定められた一定の間隔で分割し、順次特徴抽出部に出力する。分割は一定間隔による分割に限定したものではなく，例えば，スペクトル分析などを行い隣接フレームのスペクトラムの差分がある一定の大きさを超えたら分割するなどの処理を行っても良い。
【０１０４】
抽出部１９は、分割部１７から出力される分割音区間の一つに対して、第１実施形態と同様にあらかじめ定められたサンプル数になるようにリサンプリングした後、フーリエ変換および、２４次元のメルフィルタバンク分析を適用して、２４次元の対数メルスペクトルを要素に持つベクトルを特徴量として算出する。
【０１０５】
なおここで用いる特徴量は、対数メルスペクトルに限定するものではなく、例えば，ＭＦＣＣ（Mel  Frequency  Cepstrum  Coefficient）などの音響特徴量でもよい。
【０１０６】
（変形例２）
検索装置１０において、取得部１３が取得するストロークが位置情報の軌跡データとしてもよい。この場合、取得部１３は、ＧＰＳ（Global  Positioning  System）などの位置計測装置から、位置情報を取得する。取得部１３は、取得した位置情報を軌跡であるストロークして保存する。位置情報でのストロークは、第１実施形態と同様に、２次元空間の座標値の集合として保存される。このとき、１つのストロークとしてまとめる基準は、いくつか考えられるが、例えば一定時間内の移動量が閾値以上の区間のみをストロークとして保存する。
【０１０７】
以上説明したとおり、上記実施形態及び各変形例によれば、検索速度の低下を抑えつつ検索精度を高めることができる。
【０１０８】
なお本発明は、上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【０１０９】
例えば、上記実施形態のフローチャートにおける各ステップを、その性質に反しない限り、実行順序を変更し、複数同時に実施し、あるいは実施毎に異なった順序で実施してもよい。
【符号の説明】
【０１１０】
１０  検索装置
１１  入力部
１３  取得部
１５  インクデータ記憶部
１７  分割部
１９  抽出部
２１  特徴量記憶部
２３  算出部
２５  検索部
２７  表示制御部
２９  表示部
【図１】
2014235551.tif 000013
【図２】
2014235551.tif 000014
【図３】
2014235551.tif 000015
【図４】
2014235551.tif 000016
【図５】
2014235551.tif 000017
【図６】
2014235551.tif 000018
【図７】
2014235551.tif 000019
【図８】
2014235551.tif 000020
【図９】
2014235551.tif 000021
【図１０】
2014235551.tif 000022
【図１１】
2014235551.tif 000023