(57)【要約】  一実施形態に係る文書検索装置は、取得部、形態素解析部、クエリー語抽出部、意図推定部、検索式リスト、追加クエリー語リスト、クエリー生成部、及び検索部を備える。取得部は、ユーザから入力文を取得する。形態素解析部は、入力文に対して形態素解析を行うことにより単語を抽出する。クエリー語抽出部は、単語の中から、検索に使用する単語をクエリー語として抽出する。意図推定部は、入力文に基づいてユーザの検索意図を推定する。クエリー生成部は、複数の検索式が登録された検索式リストから、検索意図に対応する検索式を取得し、複数の追加クエリー語が登録された追加クエリー語リストから、検索式とクエリー語との組に対応する追加クエリー語を取得し、検索式にクエリー語及び追加クエリー語を適用することによりクエリーを生成する。検索部は、クエリーに適合する文書を検索する。
2016151690.tif 000002
【特許請求の範囲】
【請求項１】
ユーザから入力文を取得する取得部と、
前記入力文に対して形態素解析を行うことにより単語を抽出する形態素解析部と、
前記抽出された単語の中から、検索に使用する単語をクエリー語として抽出するクエリー語抽出部と、
前記入力文に基づいて前記ユーザの検索意図を推定する意図推定部と、
複数の検索式が登録された検索式リストと、
複数の追加クエリー語が登録された追加クエリー語リストと、
前記検索式リストから、前記推定された検索意図に対応する検索式を取得し、前記追加クエリー語リストから、前記取得された検索式と前記抽出されたクエリー語との組に対応する追加クエリー語を取得し、前記取得された検索式に前記抽出されたクエリー語及び前記取得された追加クエリー語を適用することによりクエリーを生成するクエリー生成部と、
前記クエリーに適合する文書を検索する検索部と、
を具備する文書検索装置。
【請求項２】
前記クエリー生成部は、前記取得された検索式が、追加クエリー語を取得するためのファンクションを含む場合、前記追加クエリー語リストから、前記ファンクションと前記抽出されたクエリー語との組に対応する追加クエリー語を取得し、前記取得された検索式において前記ファンクションを前記取得された追加クエリー語で置き換える、請求項１に記載の文書検索装置。
【請求項３】
前記推定された検索意図に対応する検索式の候補が複数ある場合に、当該候補を絞り込むために前記ユーザに出力する応答文を生成する応答文生成部をさらに具備する、請求項１に記載の文書検索装置。
【請求項４】
前記取得部は、前記応答文を受けて前記ユーザが入力した他の入力文を取得し、前記クエリー語抽出部は、前記他の入力文に基づく他のクエリー語を抽出し、前記クエリー生成部は、前記抽出されたクエリー語及び前記抽出された他のクエリー語を用いてクエリーを生成する、請求項３に記載の文書検索装置。
【請求項５】
前記ユーザが他の入力文を入力した場合、前記クエリー生成部は、前記他の入力文に基づく他のクエリーを生成し、前記クエリーと前記他のクエリーとをつなげたクエリーを生成する、請求項１に記載の文書検索装置。
【請求項６】
前記意図推定部は、複数の検索意図がキーワード又はキーフレーズに対応付けて登録された検索意図リストを保持し、当該検索意図リストから、入力文に対応する検索意図を取得する、請求項１に記載の文書検索装置。
【請求項７】
前記クエリー生成部は、前記取得された検索式が、追加クエリー語を取得するためのファンクションを含む場合、前記追加クエリー語リストから、前記ファンクションと前記抽出されたクエリー語との組に対応する追加クエリー語を取得し、前記取得された検索式に前記抽出されたクエリー語及び前記取得された追加クエリー語を適用することにより前記クエリーを生成し、前記取得された検索式が前記ファンクションを含まない場合、前記取得された検索式に前記抽出されたクエリー語を適用することにより前記クエリーを生成する、請求項１に記載の文書検索装置。
【請求項８】
ユーザから入力文を取得し、
前記入力文に対して形態素解析を行うことにより単語を抽出し、
前記抽出された単語の中から、検索に使用する単語をクエリー語として抽出し、
前記入力文に基づいて前記ユーザの検索意図を推定し、
複数の検索式が登録された検索式リストから、前記推定された検索意図に対応する検索式を取得し、複数の追加クエリー語が登録された追加クエリー語リストから、前記取得された検索式と前記抽出されたクエリー語との組に対応する追加クエリー語を取得し、前記取得された検索式に前記抽出されたクエリー語及び前記取得された追加クエリー語を適用することによりクエリーを生成し、
前記クエリーに適合する文書を検索する、文書検索方法。
【請求項９】
コンピュータを、
ユーザから入力文を取得する手段と、
前記入力文に対して形態素解析を行うことにより単語を抽出する手段と、
前記抽出された単語の中から、検索に使用する単語をクエリー語として抽出する手段と、
前記入力文に基づいて前記ユーザの検索意図を推定する手段と、
複数の検索式が登録された検索式リストから、前記推定された検索意図に対応する検索式を取得し、複数の追加クエリー語が登録された追加クエリー語リストから、前記取得された検索式と前記抽出されたクエリー語との組に対応する追加クエリー語を取得し、前記取得された検索式に前記抽出されたクエリー語及び前記取得された追加クエリー語を適用することによりクエリーを生成する手段と、
前記クエリーに適合する文書を検索する手段として機能させるための文書検索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、文書検索装置、方法及びプログラムに関する。
【背景技術】
【０００２】
自然言語文を入力して行う文書検索では、入力文中の単語をクエリー語として取得し、そのクエリー語を含む文書を出力する手法が用いられている。しかしながら、この手法では、クエリー語で文書全体を検索するので、クエリー語に対応する単語がユーザの意図と異なる用い方で使用されている文書などの意図しない文書が検索結果に含まれることがある。文書検索技術においては、ユーザの意図に合った文書を検索できることが求められている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３４２３６１号公報
【特許文献２】特開２０１４−１３２４６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、ユーザの意図に合った文書を検索することができる文書検索装置、方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００５】
一実施形態に係る文書検索装置は、取得部、形態素解析部、クエリー語抽出部、意図推定部、検索式リスト、追加クエリー語リスト、クエリー生成部、及び検索部を備える。取得部は、ユーザから入力文を取得する。形態素解析部は、前記入力文に対して形態素解析を行うことにより単語を抽出する。クエリー語抽出部は、前記抽出された単語の中から、検索に使用する単語をクエリー語として抽出する。意図推定部は、前記入力文に基づいて前記ユーザの検索意図を推定する。検索式リストには、複数の検索式が登録されている。追加クエリー語リストには、複数の追加クエリー語が登録されている。クエリー生成部は、前記検索式リストから、前記推定された検索意図に対応する検索式を取得し、前記追加クエリー語リストから、前記取得された検索式と前記抽出されたクエリー語との組に対応する追加クエリー語を取得し、前記取得された検索式に前記抽出されたクエリー語及び前記取得された追加クエリー語を適用することによりクエリーを生成する。検索部は、前記クエリーに適合する文書を検索する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係る文書検索装置を示すブロック図。
【図２】図１に示した意図推定部が保持する検索意図リストの例を示す図。
【図３】図１に示した文書ＤＢの例を示す図。
【図４】図１に示した検索式リストの例を示す図。
【図５】図１に示した追加クエリー語リストの例を示す図。
【図６】第１の実施形態に係る文書検索処理の手順例を示す図。
【図７】第２の実施形態に係る文書検索装置を示すブロック図。
【図８】図７に示した検索式リストの例を示す図。
【図９】第２の実施形態に係る文書検索処理の手順例を示す図。
【図１０】第３の実施形態に係る文書検索処理の手順例を示す図。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら実施形態を説明する。実施形態は、レシピに関する文書を検索する文書検索装置に関する。検索対象は、レシピに関する文書に限定されない。なお、以下の実施形態では、同一の番号を付した部分については同様の動作を行うものとして、重ねての説明を省略する。
【０００８】
（第１の実施形態）
図１は、第１の実施形態に係る文書検索装置１００を概略的に示している。文書検索装置１００は、図１に示されるように、取得部１０１、形態素解析部１０２、クエリー語抽出部１０３、意図推定部１０４、クエリー生成部１０５、検索部１０６、形態素解析辞書１０７、検索式リスト１０８、追加クエリー語リスト１０９、及び文書データベース（ＤＢ）１１０を備える。
【０００９】
取得部１０１は、ユーザから入力文を取得する。入力文を取得する方法としては、例えば、音声認識、手書き文字認識、キーボード入力などを利用することができる。例えば、音声認識を用いる場合、取得部１０１は、ユーザが発した音声に対して音声認識を行うことにより文字列（テキスト）を生成し、この文字列を入力文とする。取得部１０１は、マイクロホン、タッチパネル、キーボードなどの入力装置を備えてもよく、外部装置から入力文を受け取ってもよい。
【００１０】
形態素解析部１０２は、形態素解析辞書１０７を使用して入力文に対して形態素解析を行うことにより、１又は複数の単語を抽出する。各単語には、品詞、基本形、読みなどの情報が付与されてもよい。
【００１１】
クエリー語抽出部１０３は、形態素解析部１０２により抽出された単語の中から、検索に使用する単語をクエリー語として抽出する。クエリー語を抽出する方法は、例えば、品詞が名詞である単語をクエリー語として抽出するなどのルールによる判断であり得る。検索に使用するのに不適切な単語を人手でストップワードリストにリストアップしておき、ストップワードリストに入っている単語を抽出しないようにしてもよい。例えば文書検索装置１００をレシピ検索に適用する場合、ストップワードは、「料理」、「レシピ」、「味」などのレシピを特定するのに役立たない単語である。
【００１２】
意図推定部１０４は、入力文に基づいてユーザの検索意図を推定（理解）する。ユーザの検索意図とは、入力文によってユーザがどのような検索をしたいかを表すタグである。意図を推定する方法はいくつか考えられる。
【００１３】
一例では、意図推定部１０４は、複数の検索意図が登録されている検索意図リストを保持し、検索意図リストから、入力文に対応する検索意図を取得する。図２は、検索意図リストの一例を示す。図２に示される検索意図リストでは、検索意図はキーワード又はキーフレーズに対応付けて登録されている。「卵アレルギーなんだよね」という入力文に対して検索意図を推定するために、キーワード「アレルギー」が検索意図「allergy-with」に対応付けられている。意図推定部１０４は、入力文が「アレルギー」という単語を含む場合に、検索意図「allergy-with」を出力する。さらに、「卵は入れないで」という入力文に対して検索意図を推定するために、「○○は入れない」というフレーズが検索意図「without-ingredient」に対応付けられている。意図推定部１０４は、入力文が「○○は入れない」というフレーズを含む場合に、検索意図「without-ingredient」を出力する。
【００１４】
他の例では、検索意図それぞれに対応する入力文を大量に集めておき、形態素解析結果などを使用して機械学習モデルを構築してモデルによって推定を行う方法が用いられる。意図推定方法は、これらの例に限らず、いかなる方法であってもよい。
【００１５】
クエリー生成部１０５は、検索条件を示す複数の検索式が登録された検索式リスト１０８と検索に追加的に使用する複数の追加クエリー語が登録された追加クエリー語リスト１０９とを使用して、意図推定部１０４により推定された検索意図に基づいてクエリーを生成する。クエリーを生成する方法については後述する。
【００１６】
検索部１０６は、文書ＤＢ１１０から、クエリー生成部１０５により生成されたクエリーに適合する文書を検索する。文書ＤＢ１１０は、検索対象の文書を格納している。文書は、複数の属性に対応付けられている。図３は、レシピに関する文書を格納する文書ＤＢ１１０の一例を示す。文書ＤＢ１１０では、文書は、title（料理名）、ingredient（材料）、genre（ジャンル）、comment（コメント）、favor（○○が好きな人向け）、notfavor（○○が嫌いな人向け）などの属性に対応付けられている。属性の値は、文書作成時に作成者が手動で設定する。例えば、「ピラフ」は野菜をみじん切りにするためピーマンが嫌いな人でも食べられると考えられるので、属性「notfavor」にピーマンが格納される。属性「notfavor」は、特定の食材が嫌いな人向けの料理という属性であるが、属性「notfavor」の値は、対象の食材が入っていない料理だけに付与されるわけではなく、対象の食材が入っているが食べやすく工夫されている料理にも付与される。
【００１７】
クエリー生成方法について詳細に説明する。  
図３は、検索式リスト１０８の一例を示している。図３に示される検索式リスト１０８では、検索式が検索意図に対応付けられている。検索式は、検索対象の属性と属性に対する検索方法のセットで記述されている。検索式は、１つのセットで記述される場合もあれば、ＡＮＤ又はＯＲでつながった複数のセットで記述される場合もある。
【００１８】
検索意図「title」は、料理名で検索するための意図である。検索意図「title」に対応する検索式は、「title LIKE %QUERY-WORD%」であり、属性「title」にクエリー語（クエリー語抽出部１０３により抽出されたクエリー語）が含まれる文書を検索する。検索意図「with-ingredient」は、材料を指定して検索するための意図である。検索意図「with-ingredient」に対応する検索式は、「ingredient LIKE %QUERY-WORD%」であり、属性「ingredient」にクエリー語が含まれる文書を検索する。検索意図「without-ingredient」は、嫌いな食材を含まない料理を検索するための意図である。検索意図「without-ingredient」に対応する検索式は、「ingredient NOT LIKE %QUERY-WORD%」であり、属性「ingredient」にクエリー語が含まれない文書を検索する。
【００１９】
検索意図「allergy-with」は、食物アレルギー対応の料理を検索するための意図である。検索意図「allergy-with」に対応する検索式は、「ingredient NOT LIKE %QUERY-WORD% AND ingredient NOT LIKE %product(QUERY-WORD, AND)%」であり、属性「ingredient」にクエリー語とproduct(QUERY-WORD, AND)が含まれない文書を検索する。product(QUERY-WORD, AND)は、追加クエリー語リスト１０９から追加クエリー語を取得するためのファンクションである。ファンクションの書式は、例えば、FUNCTION(arg, symbol)である。FUNCTIONにはファンクション名が入り、argには引数が入る。クエリー生成部１０５は、FUNCTIONとargの組で追加クエリー語リスト１０９に問い合わせを行う。symbolは、追加クエリー語リスト１０９が複数の追加クエリー語を返した場合に、それらの追加クエリー語をつなぐ演算子を指定する。クエリー生成部１０５は、ファンクション名とクエリー語の組で追加クエリー語リスト１０９に問い合わせを行って追加クエリー語を取得し、取得した追加クエリー語でproduct(QUERY-WORD, AND)を書き換える。アレルギーを持つ人は、一般に、アレルギー食材そのものが材料に含まれている料理だけでなく、アレルギー食材の加工品が含まれている料理も食べることができない。そこで、検索意図が「allergy-with」と推定された場合、属性「ingredient」にクエリー語とクエリー語の加工品が含まれない文書が検索される。
【００２０】
検索意図が「without-ingredient」である場合、属性「ingredient」に対象の食材が含まれない文書が検索され、検索意図が「allergy-with」である場合、属性「ingredient」に対象の食材そのものとその加工品が含まれない文書が検索される。特定の食材が嫌いな人でも、その加工品は嫌いではない場合がある。例えば、トマトが嫌いな人でもケチャップやトマトソースは食べられる場合があり、検索意図が「without-ingredient」と推定された場合、加工品まで除外する必要はないと考えられる。それに対してアレルギーの場合は対象の食材を原材料に含んだものはすべて食べられない場合が多いので、加工品も合わせて除外すべきである。
【００２１】
検索意図「try」は、嫌いな食材を食べるために工夫された料理を検索するための意図である。検索意図「try」に対応する検索式は、「ingredient LIKE %QUERY-WORD% AND notfavor LIKE %QUERY-WORD%」であり、属性「ingredient」にクエリー語が含まれ、かつ、属性「notfavor」にクエリー語が含まれる文書を検索する。検索意図「genre」は、洋食、和食などの料理のジャンルで検索するための意図である。検索意図「genre」に対応する検索式は、「genre=%QUERY-WORD%」であり、属性「genre」の値がクエリー語と等しい文書を検索する。
【００２２】
図５は、追加クエリー語リスト１０９の一例を示している。図５に示される追加クエリー語リスト１０９では、追加クエリー語がファンクション及びクエリー語に対応付けられている。上述したように、検索意図「allergy-with」に対応する検索式は、product(QUERY-WORD, AND)というファンクションを含む。ファンクション「product」は、QUERY-WORDの加工品を指定するファンクションである。例えば、抽出されたクエリー語が「卵」である場合、ファンクション「product」は、「マヨネーズ」、「ベーコン」、「ウインナー」、「はんぺん」を返す。ファンクション「similar」は、食感や味が似ている食べ物を指定するファンクションである。例えば、抽出されたクエリー語が「ブロッコリー」である場合、ファンクション「similar」は、見た目や食感が似ている「アスパラガス」を返す。
【００２３】
クエリー生成は、例えば、次のように行われる。まず、クエリー生成部１０５は、検索式リスト１０８から、推定された検索意図に対応する検索式を取得する。続いて、クエリー生成部１０５は、検索式がファンクションを含むか否かを判断する。検索式がファンクションを含まない場合、クエリー生成部１０５は、検索式にクエリー語を適用してクエリーを生成する。検索式がファンクションを含む場合、クエリー生成部１０５は、追加クエリー語リストから、ファンクションとクエリー語の組に対応する追加クエリー語を取得する。そして、クエリー生成部１０５は、検索式にクエリー語と追加クエリー語の組を適用してクエリーを生成する。
【００２４】
次に、文書検索装置１００の動作について説明する。  
図６は、文書検索装置１００の検索処理の手順例を示している。ここでは、「卵アレルギーなんだよね」という文が入力された場合を例に挙げて説明する。検索意図リスト、文書ＤＢ１１０、検索式リスト１０８、追加クエリー語リスト１０９はそれぞれ、図２、３、４、５に示されるものを用いるとする。
【００２５】
ステップＳ６０１では、取得部１０１は、ユーザが検索のために入力した入力文を取得する。例えば、ユーザがキーボードを用いてテキスト「卵アレルギーなんだよね」を入力する。ステップＳ６０２では、形態素解析部１０２は入力文に対して形態素解析を行う。入力文は単語（形態素）に分割され、単語それぞれに品詞情報などが付与される。入力文「卵アレルギーなんだよね」は、「卵」、「アレルギー」、「なんだ」、「よ」、「ね」に分割される。
【００２６】
ステップＳ６０３では、クエリー語抽出部１０３は、ステップＳ６０１で得られた単語の中から、検索に使用する単語をクエリー語として抽出する。例えば、名詞を抽出するというルールに従って抽出が行われ、「卵」がクエリー語として抽出される。単語「アレルギー」も名詞であるが、単語「アレルギー」はストップワードであるので抽出されない。ステップＳ６０４では、意図推定部１０４は、入力文に基づいてユーザの検索意図を推定する。入力文「卵アレルギーなんだよね」には「アレルギー」という単語が含まれているので、検索意図「allergy-with」が出力される。ステップＳ６０４の処理は、ステップＳ６０３の処理と並列に実行されてもよく、ステップＳ６０３の処理の前に又は後に実行されてもよい。
【００２７】
ステップＳ６０５では、クエリー生成部１０５は、ステップＳ６０４で推定された検索意図で検索式リスト１０８を参照し、検索式を取得する。検索意図「allergy-with」で検索式リスト１０８を参照すると、次の検索式が得られる。  
ingredient NOT LIKE %QUERY-WORD%
AND
ingredient NOT LIKE %product(QUERY-WORD, AND)%
【００２８】
ステップＳ６０６では、上記検索式中のQUERY-WORDがステップＳ６０３で抽出されたクエリー語で置換される。ステップＳ６０３では、クエリー語として「卵」が抽出されており、検索式は下記になる。
ingredient NOT LIKE %卵%
AND
ingredient NOT LIKE %product(卵, AND)%
【００２９】
ステップＳ６０７では、検索式にファンクションが含まれるか否かが判断される。検索式にファンクションが含まれる場合、ステップＳ６０８に進み、そうでなければ、ステップＳ６０９に進む。
【００３０】
ステップＳ６０８では、クエリー生成部１０５は、ファンクションとクエリー語の組で追加クエリー語リスト１０９を参照し、追加クエリー語を取得する。本例の検索式はファンクション「product」を含む。ファンクション「product」とクエリー語「卵」の組で追加クエリー語リスト１０９を参照すると、「マヨネーズ」、「ベーコン」、「ウインナー」、「はんぺん」が追加クエリー語として取得される。検索式のファンクション部分は、取得された追加クエリー語で書き換えられる。検索式は下記になる。  
ingredient NOT LIKE %卵%
AND
ingredient NOT LIKE %マヨネーズ,ベーコン,ウインナー,はんぺん%
【００３１】
この検索式をＳＱＬ構文として正しく書き換えると下記になる。  
ingredient NOT LIKE %卵%
AND
ingredient NOT LIKE %マヨネーズ%
AND
ingredient NOT LIKE %ベーコン%
AND
ingredient NOT LIKE %ウインナー%
AND
ingredient NOT LIKE %はんぺん%
複数の追加クエリー語が取得された場合は上記のように式が展開される。式同士を結合する演算子は、ファンクション内で指定されていた「AND」を使用する。上記の検索式がクエリーとして検索部１０６に与えられる。
【００３２】
ステップＳ６０９では、検索部１０６は、文書ＤＢ１１０からクエリーに適合する文書を検索する。本例では、検索部１０６は、「低アレルゲンコロッケ」、「豚のしょうが焼き」を含む検索結果を取得する。属性「ingredient」に「卵」が含まれる「オムレツ」及び「コロッケ」、属性「ingredient」に「ベーコン」が含まれる「ピラフ」、属性「ingredient」に「はんぺん」が含まれる「おでん」は、検索結果から除外される。ステップＳ６１０では、検索結果が画面表示や読み上げなどでユーザに提示される。
【００３３】
次に、「卵嫌いだから入れないで」という文が入力される場合について説明する。まず、ユーザが入力した文「卵嫌いだから入れないで」が取得部１０１によって取得される。次に、入力文「卵嫌いだから入れないで」が形態素解析部１０２によって単語（形態素）に分割され、単語それぞれに品詞情報などが付与される。次に、クエリー語抽出部１０３によってクエリー語が抽出される。ルールベースで抽出が行われ、「卵」がクエリー語として抽出される。次に、検索意図が意図推定部１０４によって入力文に基づいて推定される。この例では、検索意図「without-ingredient」が出力される。クエリー生成部１０５は、検索意図「without-ingredient」で検索式リスト１０８を参照し、次の検索式を取得する。  
ingredient NOT LIKE %QUERY-WORD%
QUERY-WORDは取得したクエリー語で置換され、検索式は下記になる。  
ingredient NOT LIKE %卵%
【００３４】
次に、検索式がファンクションを含むか否かが判断される。この例では、ファンクションが含まれていないので、この検索式がクエリーとして検索部１０６に与えられる。
【００３５】
検索部１０６は、上記の検索式を使用して文書ＤＢ１１０に問い合わせる。属性「ingredient」に「卵」が含まれる「オムレツ」及び「コロッケ」は除外され、「低アレルゲンコロッケ」、「豚のしょうが焼き」、「おでん」、「ピラフ」が検索結果として出力される。
【００３６】
このようにして、同じ単語「卵」を使用している「卵アレルギーなんだよね」と「卵嫌いだから入れないで」という２つの文に対し、ユーザの意図に合った検索結果を提示することができる。
【００３７】
ユーザは、１回目の検索で得られた結果に多数の文書が含まれる場合、結果を絞り込むためにもう一度入力することがある。文が入力され検索が実施された後で、もう一度文が入力された場合、文書検索装置１００は２回目の入力文は１回目の検索結果に対する絞り込み検索とみなすことができる。この場合、クエリー生成部１０５は、１回目の入力文に基づく検索式と２回目の入力文に基づく検索式をつなげたクエリーを生成する。
【００３８】
以上のように、第１の実施形態に係る文書検索装置は、入力文に基づいてユーザの検索意図を推定し、その検索意図に応じたクエリーを作成し、そのクエリーに適合する文書を検索する。それにより、ユーザに意図に合った文書を検索することができる。
【００３９】
（第２の実施形態）
図７は、第２の実施形態に係る文書検索装置７００を概略的に示している。文書検索装置７００は、図７に示されるように、取得部１０１、形態素解析部１０２、クエリー語抽出部１０３、意図推定部１０４、クエリー生成部１０５、検索部１０６、形態素解析辞書１０７、検索式リスト７０８、追加クエリー語リスト１０９、文書ＤＢ１１０、及び応答文生成部７０１を備える。第２の実施形態では、第１の実施形態と同じ部分、動作についての説明を適宜省略する。
【００４０】
検索式リスト７０８では、検索条件を示す複数の検索式が登録されている。図８は、検索式リスト７０８の一例を示す。図８に示される検索式リスト７０８は、図４に示される検索式リスト１０８の項目に加えて、検索意図候補及び応答文データという項目を含む。検索意図候補は、入力文から推定される検索意図から推定され得る検索意図の候補である。本実施形態では、検索式が一意に決定される検索意図と、検索式が複数考えられる検索意図がある。
【００４１】
検索式が複数考えられる検索意図については、検索式それぞれに対応する検索意図が検索意図候補として登録される。例えば、入力文「じゃがいもを使った料理」に基づく検索意図は「with-ingredient」であり、「ingredient LIKE %じゃがいも%」という検索式が一意に決定される。これに対し、入力文「卵を使っていない料理」に基づく検索意図は「without-ingredient」であるが、この入力文からは、「卵嫌いだから入れないで」という入力文のように、「卵そのものだけを含まない料理」を検索したいのか、「卵アレルギーなんだよね」という入力文のように、「卵と卵加工品を含まない料理」を検索したいのかを判断することができない。すなわち、検索意図が「without-ingredient」と推定された場合、２つの検索式が考えられる。検索意図「without-ingredient」には、これら２つの検索式だけでなく、２つの検索式に一意に対応する検索意図「dont-eat」と「allergy-with」が対応付けられる。同様に、入力文「ピーマンが嫌い」に基づく検索意図「dont-like」には、検索意図「dont-eat」と「try」が対応付けられる。「応答文データ」の項目は応答文を生成する際に使用するデータを格納する。検索意図候補に値が設定されている検索意図に対しては応答文データを記述する必要はない。応答文データの中の「QUERY-WORD」という部分は、入力文から取得した実際のクエリー語に置き換えて使用される。
【００４２】
応答文生成部７０１は、意図推定部１０４により推定された検索意図に対応する検索式の候補が複数ある場合に、候補を絞り込むためにユーザに出力する応答文を生成する。応答文生成部７０１は、検索式リスト１０８とクエリー語抽出部１０３により抽出されたクエリー語とを使用して、ユーザに問い返す応答文を生成する。応答文は、音声合成を使用して音声で案内してもよいし、画面に表示してもよい。
【００４３】
図９は、文書検索装置７００の検索処理の手順例を示している。ここでは、ユーザが「卵を使っていない料理」という文を入力した場合を例に挙げて説明する。検索意図リスト、文書ＤＢ１１０、検索式リスト１０８、追加クエリー語リスト１０９はそれぞれ、図２、３、８、５に示されるものを用いるとする。
【００４４】
図９のステップＳ９０１〜Ｓ９０３の処理は、図６のステップＳ６０１〜６０３の処理と同じであるので、説明を省略する。入力文「卵を使っていない料理」は、単語「卵」、「を」、「使っ」、「て」、「い」、「ない」、「料理」に分割される。これらの単語の中から単語「卵」がクエリー語として抽出される。「料理」はストップワードリストに登録されているので選択されない。
【００４５】
ステップＳ９０４では、意図推定部１０４は、入力文に基づいてユーザの検索意図を推定する。本例では、検索意図「without-ingredient」が出力される。ステップＳ９０５では、検索式が１つに決まるか否かが判断される。意図推定部１０４により推定された検索意図に複数の検索意図候補が対応付けられている場合は、検索式が１つに決まらない。この場合、ステップＳ９０６に進む。検索式リスト１０８を参照すると、検索意図「without-ingredient」には検索意図候補「dont-eat」と「allergy-with」が対応付けられている。これは、検索式の候補が２つあることを示す。
【００４６】
ステップＳ９０６では、応答文生成部７０１は、複数の検索意図候補それぞれに対応する応答文データを使用して応答文を生成する。本例では、応答文生成部７０１は、まず、下記に示す検索意図候補の応答文データを取得する。  
［QUERY-WORDが嫌いだから使っていない料理を検索］
［QUERY-WORDのアレルゲンを使っていない料理を検索］
【００４７】
次に、上記文中のQUERY-WORDをステップＳ９０３で取得されたクエリー語で置き換える。  
［卵が嫌いだから使っていない料理を検索］
［卵のアレルゲンを使っていない料理を検索］
最後に、これらの文章をつなげて応答文を生成する。  
「卵が嫌いだから使っていない料理を検索しますか。それとも、卵のアレルゲンを使っていない料理を検索しますか。」
この応答文は、音声又は画面表示でユーザに通知される。ユーザは、候補のどちらかを指す文を入力する。例えば、「卵が嫌いだから使っていないもの」又は「卵アレルギーだから」といった文が入力される。この入力文を同様にして解析することで、ユーザの検索意図が検索意図「dont-eat」と検索意図「allergy-with」のいずれかに決定することができる。このようにして、最初に入力された文があいまいである場合に、ユーザに明確な文を入力し直すように促すことで、検索式を一意に決定することができる。
【００４８】
ユーザが応答文を受けて文「卵が嫌い」と入力した場合、検索意図が「dont-like」と推定され、検索意図候補「dont-eat」と「try」が出力され、再び検索式が１つに絞り込めなくなる。最初の入力文から出力された検索意図候補が「dont-eat」と「allergy-with」だったので、どちらにも含まれる検索意図に絞り込み、「dont-eat」が出力される。このように、あいまいな入力文の繰り返しでも検索式を一意に落とし込むことができる。
【００４９】
ステップＳ９０５において検索式が決定されると、ステップＳ９０７に進む。ステップＳ９０７からＳ９１２の処理は、図６のステップＳ６０５からＳ６１０の処理と同じであるので、説明を省略する。
【００５０】
次に、「ピーマン嫌いなんだよね」という文が入力された場合について説明する。この場合、ステップＳ９０４において検索意図「dont-like」が出力される。検索式リスト１０８を参照すると、検索意図「dont-like」は、検索意図候補「dont-eat」と「try」に対応付けられている。検索意図候補が複数あるので、応答文生成部７０１が応答文を生成する。応答文生成部７０１は、まず、検索意図候補の応答文データを取得する。  
［QUERY-WORDが嫌いだから使っていない料理を検索］
［QUERY-WORDを食べやすくする料理を検索］
【００５１】
次に、応答文生成部７０１は、上記文中のQUERY-WORDをステップＳ９０３で取得されたクエリー語で置き換える。  
［ピーマンが嫌いだから使っていない料理を検索］
［ピーマンを食べやすくする料理を検索］
【００５２】
最後に、応答文生成部７０１は、得られた文章をつなげて応答文を生成する。  
「ピーマンが嫌いだから使っていない料理を検索しますか。それとも、ピーマンを食べやすくする料理を検索しますか。」
この応答文は、読み上げたり、画面に表示したりしてユーザに通知される。ユーザは、候補のどちらかを指す文を入力する。例えば、「ピーマンが嫌いだから使っていないもの」又は「ピーマンを食べやすくしたもの」といった文が入力される。文書検索装置７００は、この入力文を同様にして解析することで、検索意図「dont-eat」と「try」のどちらなのかを決定することができる。このようにして、あいまいだった文章が明確な文章に入力しなおされるので、検索式に一意に落とし込むことができる。
【００５３】
以上のように、第２の実施形態に係る文書検索装置は、ユーザの入力文から検索式が１つに決まらない場合に、検索式を絞り込むためにユーザに問い合わせを行う。これにより、検索式を１つに絞り込むことができるようになる。その結果、ユーザの意図に合った文書を検索することができる。
【００５４】
（第３の実施形態）
第２の実施形態に係る文書検索装置７００において、下記のようなやりとりが行われたとする。
ユーザ：「卵を使ってない料理」（クエリー語：卵）
システム：「卵が嫌いだから使っていない料理を検索しますか。それとも、卵のアレルゲンを使っていない料理を検索しますか。」
ユーザ：「嫌いなんだ」
【００５５】
最後の入力文には、最初の入力文に含まれていた単語「卵」が入っていない。この場合、文書検索装置は最後の入力文だけを処理しても正しい検索を行うことはできない。本実施形態では、クエリー語は検索式に使われるまではメモリーに格納し、検索式中の「QUERY-WORD」をクエリー語で置き換える際は、直前の入力文から抽出されたクエリー語だけでなく、メモリーに格納されているクエリー語も使用する。
【００５６】
図９は、第３の実施形態に係る検索処理の手順例を示している。図１０のステップＳ１００１〜Ｓ１００３、Ｓ１００５〜Ｓ１０１１、Ｓ１０１３、Ｓ１０１４の処理はそれぞれ図９のステップＳ９０１〜Ｓ９１２の処理と同じであるので、これらの処理についての説明を適宜省略する。
【００５７】
入力文が取得され（ステップＳ１００１）、クエリー語が抽出されると（ステップＳ１００３）、そのクエリー語がメモリーに格納される（ステップＳ１００４）。上記の例では、１回目の入力文では検索は実行されず、検索意図候補を選択するための応答文がユーザに提示される（ステップＳ１００７）。その後、ユーザが２回目の入力を行った際に検索意図が「dont-eat」と決定される（ステップＳ１００５）。２回目の入力文からクエリー語が抽出された場合、このクエリー語もメモリーに格納される。その後、検索式に、メモリーに格納されているクエリー語を埋め込む（ステップＳ１００９）。クエリーが生成されると、クエリー語がメモリーから全て削除される（ステップＳ１０１２）。このようにすることで同じクエリー語を何度も入力する必要がなくなる。
【００５８】
以上のように、第３の実施形態によれば、クエリー語は検索式に使われるまではメモリーに格納される。これにより、ユーザが応答文に応答する際に前回入力した単語を省略したとしても、検索を適切に実行することができる。
【００５９】
（第４の実施形態）
図７に示される応答文生成部７０１は、検索意図の候補を問い合わせるときだけでなく、システムがどんな検索を実施するのかをユーザに知らせることもできる。例えば、下記のようなやりとりが行われる。  
ユーザ：「コロッケが食べたい」
システム：「コロッケという料理名の料理を検索します」
title LIKE %コロッケ% で検索
検索結果：低アレルゲンコロッケ、コロッケ
【００６０】
ユーザは、１回目の検索で得られた結果に多数の文書が含まれる場合、結果を絞り込むためにもう一度入力することがある。文が入力され検索が実施された後で、もう一度文が入力された場合、文書検索装置７００は２回目の入力文は１回目の検索結果に対する絞り込み検索とみなし、応答文生成部７０１は、１回目の入力文に基づく検索式と２回目の入力文に基づく検索式をつなげて検索を行うことをユーザに通知する。この場合、例えば、下記のようなやりとりが行われる。
ユーザ：「コロッケが食べたい」
システム：「コロッケという料理名の料理を検索します」
title LIKE %コロッケ%  で検索
検索結果：低アレルゲンコロッケ、コロッケ
ユーザ：「卵アレルギーなんだよね」
システム：「検索結果の中から、卵のアレルゲンを使っていない料理を検索します。」
title LIKE %コロッケ% AND
(ingredient NOT LIKE %卵% AND ingredient NOT LIKE %マヨネーズ% AND ingredient NOT LIKE %ベーコン% AND ingredient NOT LIKE %ウインナー% AND ingredient NOT LIKE %はんぺん%)  で検索
検索結果：低アレルゲンコロッケ
このような絞り込み検索を行うことで、図３に示される文書ＤＢ１１０によれば、「低アレルゲンコロッケ」が出力される。
【００６１】
第４の実施形態によれば、どのような検索を実施するのかをユーザに知らせることができる。
【００６２】
上述したいずれの実施形態においても、文書ＤＢは文書検索装置内に備わっている。これに代えて、文書ＤＢは、インターネットなどのネットワークを介して文書検索装置に接続される外部装置に設けられていてもよい。
【００６３】
また、上述の実施形態の中で示した処理手順に示された指示は、ソフトウェアであるプログラムに基づいて実行されることが可能である。汎用の計算機システムが、このプログラムを予め記憶しておき、このプログラムを読み込むことにより、上述した実施形態の文書検索装置による効果と同様な効果を得ることも可能である。上述の実施形態で記述された指示は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フレキシブルディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ±Ｒ、ＤＶＤ±ＲＷなど）、半導体メモリ、又はこれに類する記録媒体に記録される。コンピュータ又は組み込みシステムが読み取り可能な記録媒体であれば、その記憶形式は何れの形態であってもよい。コンピュータは、この記録媒体からプログラムを読み込み、このプログラムに基づいてプログラムに記述されている指示をＣＰＵで実行させれば、上述した実施形態の文書検索装置と同様な動作を実現することができる。もちろん、コンピュータがプログラムを取得する場合又は読み込む場合はネットワークを通じて取得又は読み込んでもよい。  
また、記録媒体からコンピュータや組み込みシステムにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワーク等のＭＷ（ミドルウェア）等が本実施形態を実現するための各処理の一部を実行してもよい。  
さらに、本実施形態における記録媒体は、コンピュータあるいは組み込みシステムと独立した媒体に限らず、ＬＡＮやインターネット等により伝達されたプログラムをダウンロードして記憶又は一時記憶した記録媒体も含まれる。  
また、記録媒体は１つに限られず、複数の媒体から本実施形態における処理が実行される場合も、本実施形態における記録媒体に含まれ、媒体の構成は何れの構成であってもよい。
【００６４】
なお、本実施形態におけるコンピュータ又は組み込みシステムは、記録媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するためのものであって、パソコン、マイコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。  
また、本実施形態におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本実施形態における機能を実現することが可能な機器、装置を総称している。
【００６５】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【図１】
2016151690.tif 000003
【図２】
2016151690.tif 000004
【図３】
2016151690.tif 000005
【図４】
2016151690.tif 000006
【図５】
2016151690.tif 000007
【図６】
2016151690.tif 000008
【図７】
2016151690.tif 000009
【図８】
2016151690.tif 000010
【図９】
2016151690.tif 000011
【図１０】
2016151690.tif 000012
【国際調査報告】
2016151690.tif 000013
2016151690.tif 000014
2016151690.tif 000015
2016151690.tif 000016