(57)【特許請求の範囲】
【請求項１】
入力文字列を構成する部分文字列を抽出する部分文字列分解部と、
予め作成された索引から、名称データ毎に、前記部分文字列に対応する見出しの位置情報及び境界情報を取得する部分文字列索引参照部と、
前記名称データ中の前記部分文字列索引参照部が取得した見出し同士の連続性を前記位置情報に基づいて判定し、連続と判定した見出しに最大の照合スコアを付与し、不連続と判定した見出しには、前記境界情報に基づいて前後の見出しとの接続の妥当性に応じた照合スコアを付与する候補スコア更新部とを備える
ことを特徴とする検索装置。
【請求項２】
候補スコア更新部は、入力文字列に含まれる任意の部分文字列同士の距離と、当該任意の部分文字列同士に対応する名称データ中の見出し同士の距離がそれぞれ所定距離内の場合に連続と判定することを特徴とする請求項１記載の検索装置。
【請求項３】
候補スコア更新部は、名称データ中の見出し同士の位置関係に応じて、照合スコアを調整することを特徴とする請求項１記載の検索装置。
【請求項４】
候補スコア更新部は、名称データに含まれる各見出しの照合スコアを加算して候補スコアを算出し、当該候補スコアが高い順に前記名称データを並べて出力することを特徴とする請求項１記載の検索装置。
【請求項５】
文字列からなる名称データを、単語単位及び文字単位で分割して部分データにし、当該部分データの始終端を示す境界情報を生成する名称解析部と、
前記名称データを構成する部分文字列を抽出して見出しとし、当該見出し毎に、前記名称データ中の位置情報、及び当該見出しに含まれる前記部分データの境界情報を付与する始終端情報付与部と、
前記始終端情報付与部の出力結果を見出し順に並べた索引を生成する部分文字列索引作成部とを備える
ことを特徴とする請求項１記載の検索装置。
【請求項６】
コンピュータを、
入力文字列を構成する部分文字列を抽出する部分文字列分解手段と、
予め作成された索引から、名称データ毎に、前記部分文字列に対応する見出しの位置情報及び境界情報を取得する部分文字列索引参照手段と、
前記名称データ中の前記部分文字列索引参照手段が取得した見出し同士の連続性を前記位置情報に基づいて判定し、連続と判定した見出しに最大の照合スコアを付与し、不連続と判定した見出しには、前記境界情報に基づいて前後の見出しとの接続の妥当性に応じた照合スコアを付与する候補スコア更新手段として機能させる
ことを特徴とする検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、検索対象の名称を予め作成した索引から検索する検索装置及び検索プログラムに関する。
【背景技術】
【０００２】
全文検索を行う場合、大量の文書データを用いて、事前に、検索対象の名称を構成する部分文字列から当該名称を参照可能な索引を作成しておくことにより、大規模な索引に対する部分一致検索を高速に行うことができる。検索の最小単位としては、単語又は文字Ｎ−ｇｒａｍが用いられる。検索単位を単語とした場合、言語的に妥当な検索結果が期待できる一方で、事前の言語解析で誤りがあると検索漏れが生じる。また、単語より短い単位での検索を行うことができない。他方、検索単位を文字Ｎ−ｇｒａｍとした場合は、検索漏れが生じない一方で、言語的に妥当でない区切りの名称候補が湧き出す可能性がある。例えば、単語区切り「東京／都」（スラッシュが区切りを表す）に対して「京都」という単語を対応付けることは不可能であるが、文字区切り「東／京／都」に対して「京／都」という文字を部分一致で対応付けることができる。そのため、単語単位で「東京都」を検索すると「京都」は検索結果に含まれないが、文字単位で検索すると含まれてしまい言語的に妥当性がない。【０００３】
この問題を解決するために単語単位と文字単位の両者を併用して検索することもできるが、索引作成時間及び検索時間も両者の和に増大するという課題があった。これに対して特許文献１に開示の情報検索装置では、文字単位の索引に単語情報を付与し、単語単位と文字単位で複合的に検索するようにして、処理時間の増大を抑制している。【０００４】
また、例えばユーザの発声した名称を検索語にして、索引から部分一致する名称を検索する名称検索を行う場合、ユーザが部分一致する名称を発声するとは限らないため、あいまい検索技術が有用である。全文検索用の索引を応用したあいまい検索技術として、特許文献２，３が提案されている。特許文献２の文字列検索装置では、検索語を文字Ｎ−ｇｒａｍ単位に区切って、文字Ｎ−ｇｒａｍそれぞれと部分一致する名称を索引から検索し、部分一致する文字Ｎ−ｇｒａｍが多い名称を検索結果として出力する。また、特許文献３のテキスト検索装置では、検索語と索引中の各名称とで出現位置関係が一致または所定範囲内の位置にある文字の個数をカウントして類似度を算出し、類似度の高い名称を検索結果として出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３６３６９４１号
【特許文献２】特許第３６６５１１２号
【特許文献３】特許第３７１５６７２号
【発明の概要】
【０００６】
従来の検索装置は以上のように構成されているので、索引を用いる全文検索装置におけるあいまい検索では、多様な照合が許されるために湧き出し誤りが生じやすく、検索精度が低いという課題があった。特に、検索の単位が日本語のかな（約１００種類）、英語の音素記号（約４０種類）等、音声的な表現に近い検索語に基づいて検索を行う場合、単語及び漢字と比べて種類数が少なく、あいまい性が大きいために候補数の増加が顕著である。しかし、索引を単語単位にすることは、前述したように索引作成段階で解析誤りが生じると検索漏れが生じることに加えて、検索時に検索語の単語分割を誤る可能性もある、また、日本語でしばしば見られる、単語を縮退させる言い換え語（例えば「総合研究所」を「総研」と省略する）に対応できない。さらに、検索語が音声データの場合、音声の誤認識が１文字でもあると単語の取得に失敗して、本来の検索語から大きく外れた候補が選択されるという問題がある。
【０００７】
この発明は、上記のような課題を解決するためになされたもので、検索対象の入力文字列を最小単位に基づいて検索する一方で、より長い単位の言語的妥当性も考慮することで、精度の高いあいまい検索を実現することを目的とする。
【０００８】
この発明の検索装置は、入力文字列を構成する部分文字列を抽出する部分文字列分解部と、予め作成された索引から、名称データ毎に、部分文字列に対応する見出しの位置情報及び境界情報を取得する部分文字列索引参照部と、名称データ中の部分文字列索引参照部が取得した見出し同士の連続性を位置情報に基づいて判定し、連続と判定した見出しに最大の照合スコアを付与し、不連続と判定した見出しには、境界情報に基づいて前後の見出しとの接続の妥当性に応じた照合スコアを付与する候補スコア更新部とを備えるものである。
【０００９】
また、この発明の検索プログラムは、コンピュータを、入力文字列を構成する部分文字列を抽出する部分文字列分解手段と、予め作成された索引から、名称データ毎に、部分文字列に対応する見出しの位置情報及び境界情報を取得する部分文字列索引参照手段と、名称データ中の部分文字列索引参照手段が取得した見出し同士の連続性を位置情報に基づいて判定し、連続と判定した見出しに最大の照合スコアを付与し、不連続と判定した見出しには、境界情報に基づいて前後の見出しとの接続の妥当性に応じた照合スコアを付与する候補スコア更新手段として機能させるものである。
【００１０】
この発明によれば、入力文字列を構成する部分文字列を抽出する部分文字列分解部と、予め作成された索引から、名称データ毎に、部分文字列に対応する見出しの位置情報及び境界情報を取得する部分文字列索引参照部と、名称データ中の部分文字列索引参照部が取得した見出し同士の連続性を位置情報に基づいて判定し、連続と判定した見出しに最大の照合スコアを付与し、不連続と判定した見出しには、境界情報に基づいて前後の見出しとの接続の妥当性に応じた照合スコアを付与する候補スコア更新部とを備えるようにしたので、検索対象の入力文字列を最小単位に基づいて検索する一方で、より長い単位の言語的妥当性も考慮することができるようになり、この結果、精度の高いあいまい検索を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】この発明の実施の形態１に係る検索装置の構成を示す機能ブロック図である。
【図２】図１に示す索引生成部の内部構成を示す機能ブロック図である。
【図３】検索対象データの一例を示す図である。
【図４】表記を単語単位に区切った検索対象データの一例を示す図である。
【図５】表記を文字単位に区切った検索対象データの一例を示す図である。
【図６】始終端情報付与部が作成した表の一例を示す図である。
【図７】部分文字列索引作成部が生成するリスト（名称ＩＤ・位置・始終端スコア）の一例を示す。
【図８】検索部の内部構成を示す機能ブロック図である。
【図９】検索部の動作を説明するフローチャートである。
【図１０】照合スコアテーブルの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面に従って説明する。
実施の形態１．
図１に示す検索装置は、検索対象データ１０から事前に索引を作成する索引生成部２０と、索引を格納しておく索引格納部３０と、検索用に入力された入力データ（入力文字列）を索引と照合して類似する候補を取得する検索部４０とを備える。索引生成部２０の内部構成は図２に示し、検索部４０の内部構成は図８に示す。この検索装置は、大量の名称候補から読み文字列に基づく検索を行い、語順の入れ替えや部分的な脱落等を含む部分一致候補の中から妥当性の高い候補を取得するためのものである。
【００１３】
検索対象データ１０は、検索対象の名称データであり、索引の基となる。名称データは、入力データと照合するための文字列である読みと、この名称データを識別するための名称ＩＤとを少なくとも含む。図３に示す検索対象データ１０の一例では、各名称データは名称ＩＤ、表記、及び読み（ヨミ）から構成される。
【００１４】
図２に示す索引生成部２０のうち、名称解析部２１は、検索対象データ１０の情報を読み出して、辞書情報を参照しながら、名称データを構成する文字列を１通り以上の言語単位で区切って部分データにする。具体的な言語単位として、例えば日本語の場合は単語（形態素）単位と表記１文字相当の文字単位とがあり、ここでは単語単位と文字単位を組み合わせた２通りの言語単位により解析する。２通りの言語単位により解析する理由は、両単位での解析精度が異なるため、及び段階的な言い換え語毎の受容性を与えるためである。単語単位では言語的な制約が強い一方で解析誤りが含まれる可能性があり、また、単語より短い言い換え語に対応できない可能性もある。文字単位では解析精度が高く、また、ほとんどの場合、言い換え語の最小単位である。辞書には、文字や単語及びその読みと、区切りを正しく付与するための単独もしくは他の文字または単語と共起して出現する程度を表す指標値を格納している。この指標値は、通常、正解の区切り情報を含む大量のテキストデータに基づいて正解の区切りに対して指標値の和となるスコアが大きくなるように統計的に学習される。
【００１５】
名称解析部２１は、辞書情報を参照しながら、入力文字列を単語単位に区切られた読みとそのスコア、及び文字単位に区切られた読みとそのスコアを、解析結果として出力する。区切りの付与は、辞書から読み出した指標値に基づいて任意の区切り方についてスコアを算出し最大のスコアとなる区切りを求める。図４に、表記を単語単位に区切った検索対象データ１０の一例を示し、図５に、表記を文字単位に区切った検索対象データ１０の一例を示す。図４及び図５においてスラッシュ（／）は単位区切りを表す。
【００１６】
始終端情報付与部２２は、名称解析部２１の解析結果を、索引に格納する部分文字列（見出し）単位へ分解し、見出し毎にその部分文字列の名称中で出現する位置、解析結果の単語開始点、単語終了点、文字開始点、文字終了点からなる表を作成する。図６に、始終端情報付与部２２が作成した表の一例を示す。この例では、読み（表中のヨミ）の見出しをモーラ単位のバイグラムとした。モーラは、日本語の拍に相当する単位である。開始点「１」は、この読みの１文字目の前に単語又は文字の境界があることを示す。終了点「１」は、この読みの２文字目の後に単語又は文字の境界があることを示す。例えば名称ＩＤ「０１」「トウキョウト」の部分文字列「トウ」は、位置「１」から始まり、単語単位の開始点であり、また、文字単位の開始点かつ終了点であることがわかる。
【００１７】
さらに、始終端情報付与部２２は、単語単位、文字単位の開始点及び終了点の情報を用いて、見出し毎に始終端境界情報を付与する。この例では単語境界が文字境界に含まれるため、始終端境界情報は、単語境界かつ文字境界「２」、単語境界でない文字境界「１」、その他「０」の３通りになる。図６に示す始終端境界情報の例において、始端スコア及び終端スコアは以上の３通りに基づくスコア値を割り当てている。
【００１８】
部分文字列索引作成部２３は、始終端情報付与部２２が作成した表を参照して、見出しを名称ＩＤ、位置、始終端スコアからなるリストへ対応付け、見出し毎にソートして索引にする。図７に、部分文字列索引作成部２３が生成するリスト（名称ＩＤ・位置・始終端スコア）の一例を示す。例えば見出し「ウキョ」は名称「トウキョウト」と名称「ウキョウ」の両方に含まれているので、２つの名称ＩＤ「０１」及び「０２」に対応付けられる。
【００１９】
索引格納部３０は、部分文字列索引作成部２３が生成した見出しの索引を格納して、見出しに対応付けられたリスト（名称ＩＤ・位置・始終端スコア）を取得可能にしておく。
【００２０】
図８に示す検索部４０のうち、部分文字列分解部４１は、検索装置に入力された検索対象の入力文字列を、索引生成部２０が名称を見出し単位に分解した際と同様の基準に従って部分文字列へ分解する。ここでは、上述の説明に合わせて、検索対象の入力文字列をモーラ単位のバイグラムに分解することとする。
【００２１】
部分文字列索引参照部４２は、入力文字列に含まれる部分文字列それぞれに一致する見出しを索引格納部３０から探索し、部分文字列毎にそれら見出しのリスト（名称ＩＤ・位置・始終端スコア）を取得する。
【００２２】
候補スコア更新部４３は、部分文字列索引参照部４２が取得した候補見出しのリスト（名称ＩＤ・位置・始終端スコア）について、照合履歴および候補スコアを更新し、入力された部分文字列の末尾に至った際の候補スコアに応じて出力する候補名称一覧を確定する。候補スコア更新部４３の詳細は後述する。
【００２３】
次に、図９に示すフローチャートを用いて、検索部４０の動作を説明する。
検索部４０は候補名称リストを有することとし、この候補名称リストを、部分文字列索引参照部４２が索引格納部３０から取得した名称データの各種情報を一時的に保持する照合履歴として用いて、候補スコアを算出する。
この候補名称リストは、具体的には、候補となる名称データ（以下、候補名称）の候補名称ｉｄ（１≦ｉｄ≦名称ＩＤの最大値）毎に、
ｓｃｏｒｅ［ｉｄ］；候補スコア、
ｉｎｐＯｆｓ［ｉｄ］；入力文字列における照合中の部分文字列の位置（以下、入力文字列照合位置）、
ｉｄｘＯｆｓ［ｉｄ］；候補名称における照合中の見出しの位置（以下、候補名称照合位置）、
ｂｏｕｎｄａｒｙ［ｉｄ］；候補名称における前回照合した見出しの終端スコア（以下、直前見出し終端スコア）
を含む。
【００２４】
ステップＳＴ１において、検索部４０は候補名称リストの候補スコア、入力文字列照合位置、候補名称照合位置を初期化して、ｓｃｏｒｅ［ｉｄ］＝ｉｎｐＯｆｓ［ｉｄ］＝ｉｄｘＯｆｓ［ｉｄ］＝０にすると共に、直前見出し終端スコアをｂｏｕｎｄａｒｙ［ｉｄ］＝２にする。ここで、ｂｏｕｎｄａｒｙ［ｉｄ］は始端スコアと終端スコアのうちの終端スコアだけを表すこととし、ｂｏｕｎｄａｒｙ［ｉｄ］＝２は、見出しの終端が単語境界かつ文字境界「２」であることを表す。
【００２５】
ステップＳＴ２において、検索部４０は検索対象の入力文字列を取得する。続くステップＳＴ３において、部分文字列分解部４１は、取得した入力文字列を部分文字列に分解して、部分文字列リストにする。上述の通り、部分文字列はモータ単位のバイグラムである。入力文字列の読みをＩｎｐＬｅｎ個のモーラ｛ｓ［１］，ｓ［２］，・・・，ｓ［ＩｎｐＬｅｎ］｝と表すと、部分文字列ｓ２［ｉ］＝（ｓ［ｉ］，ｓ［ｉ＋１］）となる。添え字ｉは、入力文字列中の文字位置を表し、１≦ｉ≦ＩｎｐＬｅｎ−１とする。
【００２６】
例えば、入力文字列の読みが「ウキョウ」だった場合、ＩｎｐＬｅｎ＝３個（「ウ」、「キョ」、「ウ」）であり、部分文字列リストにはｓ２［１］の「ウキョ」とｓ２［２］の「キョウ」が含まれることとなる。
【００２７】
ステップＳＴ４において、部分文字列分解部４１は、添え字ｉ＝１に初期化して、入力文字列のうち、先頭の部分文字列ｓ２［１］から照合処理が開始されるようにする。
【００２８】
ステップＳＴ５において、部分文字列索引参照部４２は、部分文字列毎に索引格納部３０を参照し、部分文字列と一致する見出し（以下、候補見出し）のリスト（名称ＩＤ・位置・始終端スコア）を取得して、候補見出しリストにする。ｉ番目の文字位置に対応する候補名称はＩｎｄｅｘＮｕｍ［ｉ］個とする。また、ｉ番目の文字位置の部分文字列に対応する候補見出しをＩｎｄｅｘ［ｉ］［ｊ］（１≦ｊ≦ＩｎｄｅｘＮｕｍ［ｉ］）と表し、添え字ｊは照合処理する候補見出しを表す。
候補見出しリストは、具体的には、ｊ番目の候補見出しに対応付けられているリストの名称ＩＤ、位置、始端スコア、終端スコアを、
Ｉｎｄｅｘ［ｉ］［ｊ］．ｉｄ；名称ＩＤ、
Ｉｎｄｅｘ［ｉ］［ｊ］．ｏｆｓ；位置、
Ｉｎｄｅｘ［ｉ］［ｊ］．ｂｅｇｉｎ；始端スコア、
Ｉｎｄｅｘ［ｉ］［ｊ］．ｅｎｄ；終端スコア
と表す。
【００２９】
例えば、入力文字列「ウキョウ」の部分文字列ｓ２［１］「ウキョ」に対応する候補見出しは「ウキョ」（０１，２，００）（０２，１，２０）である。この場合、ｉ＝１番目の「ウキョ」に対応する候補名称は、名称ＩＤ０１「トウキョウト」と名称ＩＤ０２「ウキョウ」の２個（＝ＩｎｄｅｘＮｕｍ［１］）あるので、ｊ＝１番目を名称ＩＤ０１の「ウキョ」（０１，２，００）、ｊ＝２番目を名称ＩＤ０２の「ウキョ」（０２，１，２０）にする。従って、候補見出しリストにおいて、ｊ＝１番目の候補見出し「ウキョ」に対応付けられる情報は、
Ｉｎｄｅｘ［１］［１］．ｉｄ＝０１
Ｉｎｄｅｘ［１］［１］．ｏｆｓ＝２
Ｉｎｄｅｘ［１］［１］．ｂｅｇｉｎ＝０
Ｉｎｄｅｘ［１］［１］．ｅｎｄ＝０
となる。
【００３０】
部分文字列索引参照部４２は、ステップＳＴ６において添え字ｊ＝１に初期化して、続くステップＳＴ７において候補名称リストをｉｄ＝Ｉｎｄｅｘ［ｉ］［ｊ］．ｉｄに変換し、部分文字列ｓ２［１］「ウキョ」に対する候補名称が「トウキョウト」及び「ウキョウ」のように複数ある場合に、先ずどちらか一方の候補名称の、先頭の見出しから照合処理を開始させるようにする。
【００３１】
ステップＳＴ８において、候補スコア更新部４３は、索引の候補名称リスト及び候補見出しリスト、並びに入力文字列の部分文字列リストを比較して、入力文字列の連続性を判定する。候補見出しの名称ＩＤを示すＩｎｄｅｘ［ｉ］［ｊ］．ｉｄが既に候補名称リストに含まれており、かつ、入力文字列照合位置ｉｎｐＯｆｓ［ｉｄ］と候補名称照合位置ｉｄｘＯｆｓ［ｉｄ］が１つずつ（ここではモーラ単位ずつ）進んだ状態、即ち候補名称上の照合位置の移動距離：Ｉｎｄｅｘ［ｉ］［ｊ］．ｏｆｓ−ｉｄｘＯｆｓ［ｉｄ］＝１、かつ、入力文字列上の照合位置の移動距離：ｉ−ｉｎｐＯｆｓ［ｉｄ］＝１を満たす場合に、連続性が保たれていると判定し、これ以外の場合は連続性が保たれていないと判定する。
【００３２】
ただし、検索対象の入力文字列が、音声入力の認識結果である場合は、連続性判定の制約を緩和して、入力文字列照合位置ｉｎｐＯｆｓ［ｉｄ］と候補名称照合位置ｉｄｘＯｆｓ［ｉｄ］が任意の数Ｄ１，Ｄ２ずつ進んだ状態、即ち候補名称上の照合位置の移動距離：１≦Ｉｎｄｅｘ［ｉ］［ｊ］．ｏｆｓ−ｉｄｘＯｆｓ［ｉｄ］＝Ｄ１、かつ、入力文字列上の照合位置の移動距離：１≦ｉ−ｉｎｐＯｆｓ［ｉｄ］＝Ｄ２を満たす場合に連続性が保たれていると判定するようにして、多少の変動を許容するようにしてもよい。
【００３３】
連続性が保たれている場合（ステップＳＴ８“ＹＥＳ”）、続くステップＳＴ９において、候補スコア更新部４３が照合中の候補見出しに対して照合スコアｓｃ（ｉ，ｊ）＝１．０を設定する。照合スコアｓｃ（ｉ，ｊ）は連続性が保たれている場合を最大値とし、連続性が保たれていない場合は、候補見出し同士の言語的な妥当性の度合いに応じて値を調整する。
【００３４】
連続性が保たれていない場合（ステップＳＴ８“ＮＯ”）、続くステップＳＴ１０において、候補スコア更新部４３が照合中の候補見出しに対して、候補名称リストに格納された前回照合した候補見出し（即ち、直前見出し）の終端スコアｂｏｕｎｄａｒｙ［ｉｄ］と、候補見出しリストに格納された照合中の候補見出しの始端スコアＩｎｄｅｘ［ｉ］［ｊ］．ｂｅｇｉｎとに基づいて、照合スコアテーブルから照合スコアｓｃ（ｉ，ｊ）を選択する。
【００３５】
図１０に、照合スコアテーブルの一例を示す。この例では、前回照合した候補見出しが単語の終了点であり、今回照合中の候補見出しが候補名称中の単語の開始点である場合、単語単位の語順入れ替えとみなすことができるので言語的に妥当なため、照合スコアｓｃ（ｉ，ｊ）は最大値の１．０に設定している。また、前回照合した候補見出しが文字の終了点であり、今回照合中の候補見出しが候補名称中の単語の開始点である場合、単語の末尾が省略された言い換え語とみなすことができるため、高い値の０．９に設定している。
このように、待ち受け想定する言い換え語のパタンを、照合スコアテーブルの配点により制約することができる。
【００３６】
なお、待ち受け想定する言い換え語のパタンの制約は、上述の照合スコアｓｃ（ｉ．ｊ）だけでなく、例えばステップＳＴ７で算出した移動距離が負数となる場合にペナルティをかけるようにしてもよい。具体的には、入力文字列が脱落誤り、挿入誤り、置換誤り等の入力誤りを含みうる場合に、候補名称上の照合位置の移動距離（即ち名称データ中の見出し同士の位置関係）が負数なら照合スコアｓｃ（ｉ，ｊ）の値を小さくする。あるいは、照合スコアｓｃ（ｉ，ｊ）を直接調整せず、移動距離の正負に応じた別の重みを用いるようにしてもよい。
これにより、上記同様、語順の入れ替えを生じる入れ替え語が検索結果に含まれないようにすることができる。
【００３７】
ステップＳＴ１１において、候補スコア更新部４３は、候補名称ｉｄについて、候補スコアｓｃｏｒｅ［ｉｄ］に照合スコアｓｃ（ｉ，ｊ）を加算する（ｓｃｏｒｅ［ｉｄ］＝ｓｃｏｒｅ［ｉｄ］＋ｓｃ（ｉ，ｊ））。また、候補スコア更新部４３は、照合スコアｓｃ（ｉ，ｊ）＞０のとき、候補名称リストの候補スコア以外の情報についても更新する。この更新処理で入力文字列照合位置と候補名称照合位置を更新することにより、照合処理が行われたことが明示できるようになるので、これらの照合位置の情報を照合履歴として用いることができる。
具体的には、
候補スコア；ｓｃｏｒｅ［ｉｄ］＝ｓｃｏｒｅ［ｉｄ］＋ｓｃ（ｉ，ｊ）、
入力文字列照合位置；ｉｎｐＯｆｓ［ｉｄ］＝ｉ、
候補名称照合位置；ｉｄｘＯｆｓ［ｉｄ］＝Ｉｎｄｅｘ［ｉ］［ｊ］．ｅｎｄ、
直前見出し終端スコア；ｂｏｕｎｄａｒｙ［ｉｄ］＝Ｉｎｄｅｘ［ｉ］［ｊ］．ｅｎｄ
に更新する。
【００３８】
例えば、ｉ＝１番目の部分文字列「ウキョ」に対するｊ＝１番目の候補見出し「ウキョ」（候補名称ｉｄ０１）は、候補名称「トウキョウト」上の照合位置の移動距離が２（＝２−０）、かつ、入力文字列「ウキョウ」上の照合位置の移動距離が１（＝１−０）なので、連続性が保たれていないと判定され、図１０の照合スコアテーブルより照合スコアｓｃ（１，１）＝０．４が付与される。この照合処理により、候補名称「トウキョウト」（候補名称ｉｄ０１）は候補スコアｓｃｏｒｅ［０１］＝０＋０．４＝０．４に更新される。
【００３９】
ステップＳＴ１２において、検索部４０はｊ＝ｊ＋１に更新して、照合中のｉ番目の部分文字列を次の候補名称と照合させるようにし、続くステップＳＴ１３においてｉ番目の部分文字列をＩｎｄｅｘＮｕｍ［ｉ］個全ての候補名称と照合し終えたか確認する。
ｉ番目の部分文字列と全ての候補名称とを照合し終えていなければ（ｊ≦ＩｎｄｅｘＮｕｍ［ｉ］、ステップＳＴ１３“ＹＥＳ”）、ステップＳＴ７に戻り、残り全ての候補名称に対してステップＳＴ７〜ＳＴ１１の照合処理を実施する。ただし、同一の名称ＩＤが、入力文字列の異なる位置に複数存在する場合、加算後の候補スコアが最大となる位置を優先して選択する。
【００４０】
例えば、全ての候補名称と照合し終えていない場合、ｉ＝１番目の「ウキョ」に対するｊ＝２番目の候補見出し「ウキョ」について照合することになる。この候補見出し「ウキョ」は、候補名称「ウキョウ」（候補名称ｉｄ０２）上の照合位置の移動距離が１（＝１−０）、かつ、入力文字列「ウキョウ」上の照合位置の移動距離が１（＝１−０）なので、連続性が保たれていると判定され、照合スコアｓｃ（１，２）＝１．０が付与される。この照合処理により、候補名称「ウキョウ」（候補名称ｉｄ０２）は候補スコアｓｃｏｒｅ［０２］＝０＋１．０＝１．０に更新される。
【００４１】
ｉ番目の文字位置と全ての候補名称とを照合し終えると（ｊ＞ＩｎｄｅｘＮｕｍ［ｉ］、ステップＳＴ１３“ＮＯ”）、検索部４０は続くステップＳＴ１４においてｉ＝ｉ＋１に更新して、入力文字列中の次の部分文字列を各候補名称と照合させるようにし、さらに、ステップＳＴ１５において入力文字列に含まれるＩｎｐＬｅｎ個全ての部分文字列の照合処理を終えたか確認する。
【００４２】
例えば、全ての部分文字列の照合を終えていない場合、次の照合処理では、ｉ＝２番目、即ち入力文字列「ウキョウ」の部分文字列ｓ２［２］の「キョウ」について照合を行うことになる。
【００４３】
ＩｎｐＬｅｎ個全ての部分文字列の照合処理を終えた場合（ｉ＞ＩｎｐＬｅｎ−１、ステップＳＴ１５“ＮＯ”）、続くステップＳＴ１６において、部分文字列索引作成部２３は入力文字列の末尾に至った際の、候補名称リストに含まれている各候補名称を候補スコアに基づいた順（例えば値の大きい順）に並べ替えて、候補名称一覧として出力し、ユーザへ提示する。
一方、Ｉｎｐｌｅｎ個全ての部分文字列の照合処理が終わっていない場合（ｉ≦ＩｎｐＬｅｎ−１、ステップＳＴ１５“ＹＥＳ”）、検索部４０はステップＳＴ５へ戻って次の部分文字列について照合処理を行う。
【００４４】
このように、検索部４０は、索引生成部２０により作成された索引の、名称を構成する各見出しに付与された言語的な妥当性を表す始終端境界情報を用いて、入力文字列のあいまい検索を行うため、始終端境界情報を用いずに検索する場合と比べて検索精度が改善する。また、受容する言い換え語のパタンは照合処理における移動距離の制約、及び照合スコアテーブルの配点で調整可能なため、入力文字列の音声誤認識等による脱落誤り、挿入誤り、置換誤りを考慮して、言い換え語の抽出制約を緩めて幅広く待ち受け語を抽出したり、反対に精度を重視して言い換え語の抽出を制約したりと、柔軟な対応が可能である。
【００４５】
なお、上述の説明では、日本語の表記と読みを例に用いたが、これに限定されるものではなく、検索装置を例えば英語に適用した場合も文字単位として音節、読みの代わりに音素又は音節、文字単位として音節又は形態素を用いることで、同様の処理を行うことができる。
【００４６】
以上より、実施の形態１によれば、検索装置は、文字列からなる名称データを単語及び文字の単位で分割して単語単位の始終端及び文字単位の始終端を示す始終端スコアを生成する名称解析部２１と、名称データを構成する部分文字列を抽出して見出しとし、当該見出し毎に、名称データ中の位置、及び当該見出しに含まれる単語単位及び文字単位の始終端スコアを示すリスト（名称ＩＤ・位置・始終端スコア）を付与する始終端情報付与部２２と、始終端情報付与部２２の出力結果を見出し順に並べた索引を生成する部分文字列索引作成部２３とを備えるように構成した。このため、最小単位である文字単位と、より長い単位である単語単位の言語情報を含む索引を作成することができ、この結果、精度の高いあいまい検索を実現することが可能となる。
【００４７】
また、実施の形態１によれば、検索装置は、入力文字列を構成する部分文字列を抽出する部分文字列分解部４１と、予め作成されて索引格納部３０に格納されている索引から、名称データ毎に、部分文字列に対応する候補見出しのリスト（名称ＩＤ・位置・始終端スコア）を取得する部分文字列索引参照部４２と、候補名称データ中の部分文字列索引参照部４２が取得した候補見出し同士の連続性をリスト（名称ＩＤ・位置・始終端スコア）に基づいて判定し、連続と判定した候補見出しに最大の照合スコアｓｃ（ｉ，ｊ）を付与し、不連続と判定した候補見出しには、始終端スコアに基づいて前後の候補見出しとの接続の妥当性に応じた照合スコアｓｃ（ｉ，ｊ）を付与し、候補名称に含まれる各候補見出しの照合スコアｓｃ（ｉ，ｊ）を加算して候補スコアｓｃｏｒｅ［ｉｄ］を算出し、候補スコアｓｃｏｒｅ［ｉｄ］が高い順に候補名称を並べて出力する候補スコア更新部４３とを備えるように構成した。このため、最小単位である文字単位に基づいて検索することができる一方、より長い単位である単語単位の言語的妥当性を考慮することもできるようになる。従って、名称候補が入力文字列そのものでなくとも、又は完全な部分一致でなくとも検索でき、精度の高いあいまい検索を実現することが可能となる。特に、入力が音声で、入力文字列に誤認識を含む場合の頑健性を高めることができる。
【００４８】
また、実施の形態１によれば、候補スコア更新部４３が、入力文字列に含まれる前回照合した部分文字列と今回照合中の部分文字列の移動距離と、当該部分文字列に対応する候補名称中の候補見出し同士の移動距離がそれぞれ所定の移動距離内の場合に連続と判定するように構成した。このため、連続性を判定するための上記所定の移動距離を調整することにより、単語及び文字の境界、入力誤り及び入れ替え語の変形パタンを考慮した候補スコアを算出することができる。このため、これらを考慮しない従来のあいまい検索方式に比べて、より高い検索精度を得ることができる。
【００４９】
また、実施の形態１によれば、候補スコア更新部４３が、名称候補中の候補見出し同士の移動距離に応じて、照合スコアｓｃ（ｉ，ｊ）を調整するように構成した。このため、移動距離が負数の場合に照合スコアｓｃ（ｉ，ｊ）にペナルティがかかるようにすれば、索引からの言い換え語の抽出を抑止でき、検索精度をより向上させることができる。
【００５０】
なお、検索装置をコンピュータで構成する場合、索引生成部２０、索引格納部３０、検索部４０の処理内容を記述している検索プログラムをコンピュータのメモリに格納し、コンピュータのＣＰＵがメモリに格納されている検索プログラムを実行するようにしてもよい。
【産業上の利用可能性】
【００５１】
以上のように、この発明に係る検索装置は、文字単位及び単語単位の境界、入力誤り、及び入れ替え語の変形パタンを考慮して検索することにより、語順の入れ替えや部分的な脱落等を含む部分一致候補の中から妥当性の高い候補を取得することができるので、音声認識用の検索装置等に用いるのに適している。
【図１】
0005449521.tif 000002
【図２】
0005449521.tif 000003
【図３】
0005449521.tif 000004
【図４】
0005449521.tif 000005
【図５】
0005449521.tif 000006
【図６】
0005449521.tif 000007
【図７】
0005449521.tif 000008
【図８】
0005449521.tif 000009
【図９】
0005449521.tif 000010
【図１０】
0005449521.tif 000011