(57)【要約】【課題】ユーザの様々な状況を想定した上でユーザに提示する質問を予測する質問予測装置を提供することである。【解決手段】実施形態の質問予測装置は、質問を予測する質問予測装置であって、ユーザの状態を取得する状態取得手段と、当該状態取得手段で取得されたユーザの状態を用いて状態遷移列を算出する算出手段と、前記算出手段で算出された状態遷移列を用いてユーザの次の状態を予測する状態予測手段と、質問と状態遷移列とを対応付けた質問対応表を蓄積する質問対応表蓄積手段と、前記算出手段で算出された状態遷移列に前記状態予測手段で予測されたユーザの次の状態を含めた状態遷移列と、前記質問対応表蓄積手段に蓄積された質問対応表とを用いてユーザの質問を予測する質問予測手段と、を備える。【選択図】図１
2015092395.tif 000002
【特許請求の範囲】
【請求項１】
質問を予測する質問予測装置であって、
ユーザの状態を取得する状態取得手段と、
当該状態取得手段で取得されたユーザの状態を用いて状態遷移列を算出する算出手段と、
前記算出手段で算出された状態遷移列を用いてユーザの次の状態を予測する状態予測手段と、
質問と状態遷移列とを対応付けた質問対応表を蓄積する質問対応表蓄積手段と、
前記算出手段で算出された状態遷移列に前記状態予測手段で予測されたユーザの次の状態を含めた状態遷移列と、前記質問対応表蓄積手段に蓄積された質問対応表とを用いてユーザの質問を予測する質問予測手段と、
を備える質問予測装置。
【請求項２】
前記状態予測手段がスケジュールを用いてユーザの次の状態を予測する請求項１記載の質問予測装置。
【請求項３】
前記状態予測手段が時刻情報を用いてユーザの次の状態を予測する請求項１記載の質問予測装置。
【請求項４】
前記質問予測手段で予測された質問の回答を生成する回答生成手段をさらに備え、
前記状態予測手段がユーザの質問及び前記回答生成手段で生成された質問に対する回答に基づいてユーザの次の状態を予測する請求項１記載の質問予測装置。
【請求項５】
前記質問予測手段で予測された質問をユーザに提示する質問提示手段をさらに備え、
当該質問提示手段が前記質問予測手段で予測された質問と当該質問の頻度とをユーザに提示する請求項１記載の質問予測装置。
【請求項６】
前記質問予測手段で予測された質問をユーザに提示する質問提示手段と、
前記質問予測手段で予測された質問の回答を生成する回答生成手段と、をさらに備え、
前記回答生成手段は、前記質問予測手段で予測された質問のうち回答生成が要求された質問が確定する前に前記予測された質問の回答の生成を開始し、
前記質問提示手段は、前記質問予測手段で予測された質問を前記回答生成手段での回答生成の状況と共にユーザに提示する請求項１記載の質問予測装置。
【請求項７】
前記回答生成手段が、前記質問予測手段で予測された質問の回答生成に必要となるコストに基づいて、前記予測された質問の回答を生成する順番を制御し、
前記質問提示手段が前記質問予測手段で予測された質問と共に前記コストを提示する請求項６記載の質問予測装置。
【請求項８】
質問を予測する質問予測方法であって、
ユーザの状態を取得する状態取得工程と、
当該状態取得工程で取得されたユーザの状態を用いて状態遷移列を算出する算出工程と、
前記算出工程で算出された状態遷移列を用いてユーザの次の状態を予測する状態予測工程と、
前記算出工程で算出された状態遷移列に前記状態予測工程で予測されたユーザの次の状態を含めた状態遷移列と、質問と状態遷移列とを対応付けた質問対応表とを用いてユーザの質問を予測する質問予測工程と、
を備える、コンピュータが実行する質問予測方法。
【請求項９】
質問を予測する質問予測装置に、
ユーザの状態を取得する状態取得工程と、
当該状態取得工程で取得されたユーザの状態を用いて状態遷移列を算出する算出工程と、
前記算出工程で算出された状態遷移列を用いてユーザの次の状態を予測する状態予測工程と、
前記算出工程で算出された状態遷移列に前記状態予測工程で予測されたユーザの次の状態を含めた状態遷移列と、質問と状態遷移列とを対応付けた質問対応表とを用いてユーザの質問を予測する質問予測工程と、
を実現させるための質問予測プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、質問予測装置、質問予測方法および質問予測プログラムに関する。
【背景技術】
【０００２】
カーナビや秘書システムには、ユーザの現在の状態からユーザに提示する質問を予測する質問予測装置が搭載されている。
【０００３】
しかしながら、ユーザの現在の状態から質問を予測する質問予測装置では、ユーザの過去の状態や次の状態によって質問内容が変わる場合に対応できなかった。例えば、「宴会中」という現在の状態から「二次会に良い店は？」という質問を予測したとしても、ユーザが既に二次会の宴会中であった場合は適切な質問とはいえなかった。また、時間が遅い場合や、明日の予定があって二次会に行かない場合など、ユーザの現在の状態のみではユーザに提示すべき質問は予測できなかった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１０２５８４号公報
【特許文献２】特開２００８−２０９８０号公報
【特許文献３】特開２０１０−７４２７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
発明が解決しようとする課題は、ユーザの様々な状況を想定した上でユーザに提示する質問を予測する質問予測装置を提供することである。
【課題を解決するための手段】
【０００６】
実施形態の質問予測装置は、質問を予測する質問予測装置であって、ユーザの状態を取得する状態取得手段と、当該状態取得手段で取得されたユーザの状態を用いて状態遷移列を算出する算出手段と、前記算出手段で算出された状態遷移列を用いてユーザの次の状態を予測する状態予測手段と、質問と状態遷移列とを対応付けた質問対応表を蓄積する質問対応表蓄積手段と、前記算出手段で算出された状態遷移列に前記状態予測手段で予測されたユーザの次の状態を含めた状態遷移列と、前記質問対応表蓄積手段に蓄積された質問対応表とを用いてユーザの質問を予測する質問予測手段と、を備える。
【図面の簡単な説明】
【０００７】
【図１】実施形態の質問予測装置を示すブロック図。
【図２】実施形態の質問と状態遷移列の対応付け、及びこの対応付けを利用した質問予測の概念図。
【図３】実施形態の質問入力部のユーザインターフェースを示す図。
【図４】実施形態の質問モデル蓄積部の質問モデルを示す図。
【図５】実施形態の質問モデル蓄積部の質問モデルを示す図。
【図６】実施形態の質問対応表蓄積部の質問対応表を示す図。
【図７】実施形態のセンサ情報から取得可能なプリミティブ状態を示す図。
【図８】実施形態の状態取得部の状態決定表を示す図。
【図９】実施形態の遷移確率更新部の遷移確率表を示す図。
【図１０】実施形態の遷移確率更新部の遷移確率表を示す図。
【図１１】実施形態の予測質問蓄積部の質問を示す図。
【図１２】実施形態の回答方法蓄積部の回答方法を示す図。
【図１３】実施形態のデータベースへアクセスする際のURIを示す図。
【図１４】実施形態の予測した質問をユーザに提示する画面を示す図。
【図１５】実施形態の質問と状態遷移列の対応付けを示すフローチャート。
【図１６】実施形態の質問を予測する際のフローチャート。
【図１７】実施形態の回答を生成する際のフローチャート。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面を参照しながら説明する。
【０００９】
図１は、実施形態にかかる質問予測装置の構成を示すブロック図である。本実施形態にかかる質問予測装置は、ユーザの１つ前と現在の状態から、ユーザの次の状態を予測する。そして、予測したユーザの次の状態を含む状態遷移列と、予め設定した質問と状態遷移列の対応付けとを用いてユーザに提示する質問を予測する。ここで、「状態」とは、ある時点でのユーザの状況を表しており、例えば、ユーザが居酒屋でお酒を飲んでいる場合の状態は「宴会中」、オフィスで仕事をしている場合の状態は「仕事中」などのようになる。また、「状態遷移列」は、上記「状態」が変化した際の遷移列を表している。
【００１０】
図１の質問予測装置は、ユーザが音声やＵＩを使用して質問を入力する質問入力部１０１と、質問の内容から質問IDを特定する質問モデル蓄積部１０２と、GPSや加速度センサなどのセンサ（図示なし）情報からユーザの現在の状態を取得する状態取得部１０３と、質問モデル蓄積部１０２で特定された質問IDと状態取得部１０３で取得されたユーザの状態遷移列を対応付けた質問対応表を蓄積する質問対応表蓄積部１０４と、状態取得部１０３で取得されたユーザの状態を利用してある状態から他の状態への遷移確率を更新する遷移確率更新部１０５と、状態取得部１０３で取得されたユーザの状態と遷移確率更新部１０５で更新された遷移確率を用いてユーザの次の状態を予測する状態予測部１０６と、状態予測部１０６で予測されたユーザの次の状態を含む状態遷移列と質問対応表蓄積部１０４に蓄積された質問対応表を用いてユーザに提示する質問を予測する質問予測部１０７と、質問予測部１０７で予測された質問とその回答を保存する予測質問蓄積部１０８と、質問に対する回答生成方法を蓄積する回答方法蓄積部１０９と、予測質問蓄積部１０８に保存された質問に対する回答を回答方法蓄積部１０９に保持された回答生成方法に従って生成する回答生成部１１０と、予測質問蓄積部１０８に保存された質問およびその回答をユーザに提示する質問提示部１１１と、ユーザのスケジュール情報を取得するスケジュール取得部１１２とを備えている。
【００１１】
質問予測装置は、GPSや加速度センサ、近接センサなどのセンサを備えた持ち運び可能なハードウェア装置（例えば、ネットブックやスマートフォン）で実現できる。また、質問予測装置の回答生成部１１０は、インターネット等により外部データベース１２０と接続している。
【００１２】
ユーザが入力した質問とユーザの状態遷移列の対応付け、及びこの対応付けを利用した質問予測の概要について説明する。図２の左のフローは、質問予測装置に入力されたユーザの質問とユーザの状態遷移列の対応付けを説明する概念図である。状態取得部１０３が取得したユーザの状態の遷移がSa、Sb、Scという状態遷移列であり、その中の状態Sbのときにユーザが質問Qabcを入力したとする。この場合、質問対応表蓄積部１０４は、Sa、Sb、Sc というユーザの状態遷移列とQabcという質問の対応付けを質問対応表に登録する。質問対応表の詳細は後述する。例えば、ユーザが居酒屋で宴会中、質問予測装置に対して「二次会に良い店は？」という質問を入力したとする。状態取得部１０３で取得されたユーザの状態は、現在が「宴会中（Sa）」、その１つ前が「仕事中（Sb）」である。その後、ユーザが質問予測装置からの回答に従い他の居酒屋へ行ったことにより、状態取得部１０３が取得した状態が再度「宴会中（Sc）」になったとする。このとき、質問予測装置は、質問対応表蓄積部１０４に蓄積した質問対応表から「仕事中、宴会中、宴会中」という状態遷移列の項を探索する。質問対応表にこの状態遷移列かつ「二次会に良い店は？」という質問を持つ項がない場合は、新たな項を登録する。質問対応表に合致する状態遷移列および質問の項が有る場合は、後述する質問回数などのパラメータを更新する。
【００１３】
図２の右のフローは、質問予測装置が質問を予測する際の処理の概念図である。状態予測部１０６は、状態取得部１０３が取得した状態と遷移確率を比較し、ユーザの次の状態とその状態を含む状態遷移列の信頼度を予測する。そして、質問予測部１０７は、ユーザの次の状態を含む状態遷移列およびその信頼度を用いて、質問対応表蓄積部１０４の質問対応表から質問を探索する。例えば、状態予測部１０６で予測された最も信頼度が高い状態遷移列が「仕事中」→「宴会中」→「宴会中」であった場合、質問予測部１０７は、この状態遷移列に対応付けられた「二次会に良い店は？」をユーザに提示する質問として予測する。
【００１４】
（各ブロックの機能説明）
質問予測装置を構成する各ブロックの機能を説明する。
【００１５】
(質問入力部)
質問入力部１０１は、ユーザが入力した質問を取得する。図３は、ユーザが手動で質問を入力するためのユーザインターフェースの例である。同図では、「何について」、「何を教えて」の２つの質問構成を選択、もしくは自由入力するインタフェースになっている。複雑な質問を受け付ける際には、ユーザが自然文を入力するようにしてもよい。また、質問を音声で入力してもよい。この場合、音声認識でユーザの質問文を認識し、形態素解析を用いて質問構成を特定する。
【００１６】
(質問モデル蓄積部)
質問モデル蓄積部１０２は、質問入力部１０１に入力された質問の内容から質問IDを特定する。図４に、質問モデル蓄積部１０２に蓄積された質問モデルを示す。質問IDは質問を特定するユニークな識別記号、質問構成は質問を構成する要素、質問文はユーザに質問を提示する際の表記内容を表している。ユーザが質問入力部１０１に質問を入力した際は、入力された質問を質問モデルと照らし合わせ、該当する質問IDを探す。該当する質問IDが無い場合は、新しい質問IDを追加して入力された質問を登録する。質問文を自由入力する場合は表記ゆれなどが発生するため、類義語辞書を用いて正規化を行う。質問モデルは、より多くの質問構成を持つようにしてもよい。例えば、図５のように質問構成として5W1Hの情報を持ち、最終的に質問したい質問構成をユーザに選択させてもよい。
【００１７】
(質問対応表蓄積部)
質問対応表蓄積部１０４は、質問モデル蓄積部１０２が特定した質問IDと状態取得部１０３が取得したユーザの状態遷移列とを対応付ける。図６に、質問対応表蓄積部１０４が蓄積した質問対応表を示す。質問対応表は、状態遷移列（本実施形態では、１つ前、現在、次の状態遷移列）、状態遷移列に対応付けられた質問の質問ID、各状態遷移列におけるその質問の質問回数、質問の回答コストを構成要素に持つ。回答コストは、その質問の回答に要するコストを表しており、本実施形態では回答生成に要した時間長（ms）を用いる。質問内容が「状態遷移列に依存せずよく行われるもの」である場合は、図示のように、状態遷移列に個別の状態ではなく「<any>」等のマークを保持してもよい。質問対応表蓄積部１０４は、ユーザが質問を行い、その後状態が変化した際に、質問対応表を更新する。ユーザの状態遷移列およびユーザの質問IDが質問対応表に合致する場合は、該当する項の質問回数を１つ増加させる。一方、質問対応表に合致する項がない場合は、新しい項を追加し、質問回数を１、回答コストをunknownに初期化する。いずれの場合も、後述する回答生成部１１０で回答コストが得られた場合は、回答コストを更新する。
【００１８】
(状態取得部)
状態取得部１０３は、GPSや加速度センサ、Bluetooth（Ｒ）などの近接センサ（図示なし）の情報からユーザの状態を取得する。例えば、特許文献２に示すラベリング技術を用いることで、GPSや加速度センサからユーザの位置が屋内か屋外かを示す「場所」、ユーザの近辺いる人に関する情報を示す「近接者」、ユーザが静止しているのか移動中なのかを示す「移動状態」に関するユーザのプリミティブ状態を取得できる。センサ情報から取得できるプリミティブ状態を図７に示す。例えば、属性が「場所」に関するプリミティブ状態については、GPSやWifiなどのセンサを用いて「屋内」か「屋外」かの２状態を判別する。この際、補足情報として現在地の詳細情報、現在地クラス（例えば、居酒屋に居る際のクラスは居酒屋）を保持する。さらに状態取得部１０３は、図８に例示するような状態決定表を保持し、プリミティブ状態の条件からユーザの現在の状態を特定する。条件は上から順に合致するかどうかをチェックし、合致したものがあった場合に対応する状態をユーザの現在の状態とする。同図において、プリミティブ状態の場所が「0（屋内）」、現在地クラスが「居酒屋」、近接者が「0(いる)」の場合、ユーザの現在の状態は「宴会中」となる。なお、状態取得部１０３は、現在地クラス（現在地の詳細情報）も特定することから、「一次会の宴会が終わった後、二次会の宴会に行った」というような状況であっても、「宴会中」→「宴会中」という状態の変化を検出できる。
【００１９】
(遷移確率更新部)
遷移確率更新部１０５は、状態取得部１０３が取得したユーザの状態を利用して遷移確率を更新する。ここで、遷移確率とは、ユーザの状態がある状態から他の状態へ遷移する確率を表したものである。図９に本実施形態の遷移確率表（遷移確率を保持した表）を示す。この遷移確率表は、１つ前と現在の２つの状態から次の状態の候補に遷移する確率を表している。遷移確率の初期化時には、各状態から可能な遷移が等確率で起こると仮定して初期化するか、または考えられる尤もらしい確率を予め割り当てればよい。
【００２０】
状態取得部１０３で取得したユーザの状態に変化が起こったときは、変化後の状態遷移列に該当する項の遷移確率を更新する。更新は、該当する項の遷移確率に一定の重みを付加し、１つ前および現在の状態遷移列が共通するその他の項の遷移確率を下げるなどすればよい。例えば、「仕事中」→「宴会中」→「宴会中」が起きた場合、図９の「仕事中、宴会中、宴会中」の状態遷移列の遷移確率のみを0.06ポイント上げ、その他の「仕事中、宴会中、帰宅」「仕事中、宴会中、宿泊」「仕事中、宴会中、買い物」の状態遷移列の遷移確率を一律0.02ポイント下げることができる。
【００２１】
(状態予測部)
状態予測部１０６は、状態取得部１０３で取得されたユーザの状態と遷移確率更新部１０５で更新された遷移確率を用いてユーザの次の状態およびその状態を含む状態遷移列の信頼度を予測する。例えば、状態取得部１０３で取得された１つ前および現在の状態が「仕事中」→「宴会中」で遷移していた場合、遷移確率更新部１０５の遷移確率表からこれに該当する項を探す。図９の遷移確率表では、該当する次の状態の候補とその遷移確率は、宴会中（0.7）、帰宅（0.2）、宿泊（0.05）、買い物（0.05）となる。したがって、状態予測部１０６は、この４つに対応した状態遷移列を、予測された次の状態を含む状態遷移列として出力する。また、状態予測部１０６は、各状態の候補への遷移確率を状態遷移列の信頼度として出力する。該当する状態遷移列の数が多い場合は、遷移確率が高い上位Ｋ件を予測結果として出力すればよい。
【００２２】
状態予測部１０６における予測方法として、スケジュールを利用する方法、現在時刻を利用する方法、及び直前の質問内容を利用する方法について説明する。いずれの方法も、次の状態の候補への遷移確率を状態遷移列の信頼度として出力する。
【００２３】
(状態予測部： スケジュールを利用する方法)
状態予測部１０６が、スケジュールを利用してユーザの次の状態を予測する方法について説明する。ユーザの行動を過去の状態遷移列のみから予測する方法では、遷移確率が高い（頻度が高い）次の状態の候補のみが選択され、ユーザが普段と違う行動をとる場合に対応できない。ユーザが普段と違う行動をとる場合は、その情報が予めスケジュールとして登録されていることがある。そこで、状態予測部１０６は、スケジュール取得部１１２で取得したスケジュールを利用することで、ユーザが普段と違う行動をとる場合の次の状態を予測する。例えば、取得されたスケジュールのうち、現在時刻以降一番時間の近いものが、「次の日の8:00-10:00 打合せ（場所: 本社）」であったとする。状態予測部１０６は、スケジュール取得部１１２で取得されたスケジュールの開始時間および場所を自然言語解析で抽出し、その場所へその時間に移動する際に必要となる次の状態を予測する。例えば、「予定が９時以前に開始する場合は、前日の２３時までに「帰宅」」といったヒューリスティクスを予め設定しておき、これを利用して次の状態を予測する。この例の場合、次の日の朝８時から打ち合わせがあるため、今日の２３時までに帰宅しなければならないことになる。そのため、状態予測部１０６は、次の状態のうち「帰宅」の信頼度を上げ、その他の信頼度を下げる。例えば、「帰宅」の信頼度に固定値0.7を割り当て、残り（1.0-0.7=0.3）は、１つ前および現在の状態が共通する他の状態の候補に、その遷移確率に応じて振りなおす。図９の場合、帰宅（0.7)、宴会中（0.3/(1.0-0.2)×0.7=0.26）、宿泊（0.3/(1.0-0.2)×0.05=0.019）、買い物（同様に0.019）となる。上述したヒューリスティクスは、ユーザのプロファイルとして最初に設定することができる。スケジュール取得部１１２が取得するスケジュールは、質問予測装置を実装した端末内のスケジュール帳機能などに登録されたものでもWebサービス上のスケジュール帳に登録されたものでもよい。Webサービス上のスケジュールの場合は、質問予測装置が随時スケジュールの同期処理（ローカルに近い日時のスケジュールデータのダウンロード）を行っておくことで、高速に次の状態を予測できる。
【００２４】
(状態予測部： 現在時刻を利用する方法)
状態予測部１０６が、現在時刻を利用してユーザの次の状態を予測する方法について説明する。現在時刻を利用して次の状態を予測する際に使用する遷移確率表を図１０に示す。この遷移確率表は、現在時刻に関する条件（現在時刻条件）と、その条件に合致した場合の遷移確率（条件合致時の遷移確率）とを新たに保持する。状態取得部１０３で取得された状態遷移列が「仕事中」→「宴会中」のとき、遷移確率表から「仕事中、宴会中」の項を探し、更にその中から現在時刻条件が記載されたものを探す。現在時刻条件が記載されたもののうち、現在時刻に合致するものがあれば、その状態の遷移確率を条件合致時の遷移確率に置き換える。例えば、図１０において現在時刻が23:30であった場合、次の状態の候補が「宿泊」の項が現在時刻の条件に合致するため、「仕事中、宴会中、宿泊」の遷移確率を0.7に置き換える。残り（1.0-0.7=0.3）については、スケジュールを用いる場合と同様な方法で他の項に割り当てればよい。
【００２５】
(状態予測部： 直前の質問内容を利用する方法)
状態予測部１０６が、ユーザの質問を利用してユーザの次の状態を予測する方法について説明する。ここでは、ユーザが現在時刻から過去にさかのぼる一定時間内に質問を行っていた場合、その質問と回答の内容に応じて次の状態を予測する。簡単な方法としては、過去１時間以内にされた質問、およびその回答の内容から形態素解析を用いて名詞句を抽出し、tf-idfを用いて内容中の名詞句の重要度を算出する。そして、重要度の高い名詞句と次の状態の候補が一致した場合、その状態の遷移確率を上げる。例えば、過去１時間以内にされた質問が「Todoは何?」であり、回答が「買い物、宿題」であったとする。ここから重要度が高い名詞として「買い物」が抽出された場合、次の状態の候補のうち「買い物」の遷移確率を上げる。遷移確率の更新には、上述と同様な方法を用いる。なお、ユーザの質問および回答の内容は、後述する質問提示部１１１から取得する。
【００２６】
(質問予測部)
質問予測部１０７は、状態予測部１０６で予測されたユーザの次の状態を含む状態遷移列およびその信頼度と質問対応表蓄積部１０４に蓄積された質問対応表を用いてユーザに提示する質問を予測する。状態予測部１０６の出力が図９の「仕事中、宴会中、宴会中（0.7）」、「仕事中、宴会中、帰宅（0.2）」、「仕事中、宴会中、宿泊（0.05）」、「仕事中、宴会中、買い物（0.05）」であった場合を考える。括弧内の数字は、状態遷移列の信頼度を表している。質問予測部１０７は、質問対応表蓄積部１０４の質問対応表から状態遷移列が「仕事中、宴会中、宴会中」、「仕事中、宴会中、帰宅」、「仕事中、宴会中、宿泊」、「仕事中、宴会中、買い物」、「仕事中、宴会中、<any>」となっている項を探索する。そして、これらの項が持つ質問IDをユーザに提示する質問とし、その状態遷移列の信頼度を質問IDの信頼度とする。例えば、質問ID xx1の信頼度は、予測された「仕事中、宴会中、宴会中」という状態遷移列の信頼度（0.7）と同じ値とする。なお、複数の状態遷移列に対して同じ質問IDが割り当てられている場合は、各状態遷移列の信頼度の和をその質問IDの信頼度とする。また、質問対応表の次の状態の候補の項が「<any>」となっている状態遷移列の信頼度は1.0とする。
【００２７】
次に、質問予測部１０７は、予測された質問のうち予測質問蓄積部１０８に出力する質問を選択する。選択方法として、以下の２種類の方法がある。１つ目の方法は、質問IDの信頼度が高いものから順に選択する方法である。この方法では、質問IDを信頼度で並び替えて、上位Ｎ件を選択する。信頼度ではなく、質問対応表蓄積部１０４の質問対応表から取得した質問回数が多い順に質問を選択してもよい。２つ目の方法は、各質問の信頼度に応じてＮ件の質問枠を割り当てる方法である。上述した例の場合、次の状態の候補が「<any>」の信頼度は1.0、「宴会中」は0.7、「帰宅」は0.2、「宿泊」は0.05、「買い物」は0.05である。したがって、Ｎ件のうち、次の状態の候補が「<any>」となっている項の質問はn1=(N*1.0/2.0)件、「宴会中」の項の質問はn2=((N-n1)*0.7/(2.0-1.0))件、「帰宅」の項の質問はn3=((N-n1-n2)*0.2/(2.0-1.0-0.7))件、…と割り当てる。n1、n2、n3、…は実際の計算結果ではなく、その計算結果を丸めた結果である。
【００２８】
(予測質問蓄積部)
予測質問蓄積部１０８は、質問予測部１０７によって予測された質問を蓄積する。図１１に、予測質問蓄積部１０８が蓄積した質問を示す。本実施形態では、質問ID、信頼度、質問回数、回答コスト、回答状態（回答生成済、回答生成中、未着手の３状態）、回答開始時刻、回答情報を保持する。このうち、信頼度は質問予測部１０７から取得し、質問回数および回答コストは質問予測部１０７を介して質問対応表蓄積部１０４の質問対応表から取得する。回答状態は蓄積された質問の回答状況を、回答開始時刻は後述する回答生成部１１０での回答開示時刻を、回答情報は後述する質問提示部１１１で提示する質問の回答とそのビューの情報を表している。回答状態は「未着手」、回答開示時刻および回答情報は「null」で初期化する。
【００２９】
(回答方法蓄積部)
回答方法蓄積部１０９は、後述する回答生成部１１０において、質問に対する回答を生成する際の方法（回答方法）を蓄積している。図１２に、回答方法蓄積部１０９に蓄積された回答方法を示す。回答方法は、質問IDと、この質問の回答生成に利用するデータベースと、そのデータベースに発行するクエリが組になって保存される。データベースには、ローカルに保存されるデータベースとインターネット上に存在する外部データベース１２０がある。回答方法のデータベースは、図１３のように、データベースへアクセスする際のURIと組みで定義される。URIは、同図の"{lat}"などのように、実際のクエリが入る部分を置換可能な形で保持しておく。例えば、図１２の質問ID xx7の場合、対応するデータベースのURIは、”http://ggg.hhh/?from={poi-name}&to={poi-name}&time={time}”である。また、クエリは、”query(現在地|最寄駅)、loc(自宅最寄駅)、time(現在時刻)”であるので、URI中の最初の{poi-name}には現在地の名前（この場合は現在いる、もしくは近くの駅の名前）を、次の{poi-name}には自宅最寄駅の名前を、最後の{time}には現在時刻を入れる。こうして、データベースにアクセスするURIとして“http://ggg.hhh/?from=川崎駅&to=鶴見駅&time=201008231124"を得る。なお、自宅最寄駅の名前は、ローカルに保存されたユーザのプロファイルから取得できる。図１２の質問ID xx3では、データベースが「行動履歴データベース」、クエリが「loc(現在地) OR query(現在地)」となっている。また、図１３の行動履歴データベースの例では、詳細クエリという項が追加されている。これは、AND条件やOR条件を指定するためのクエリの生成方法に関する情報である。xx3の質問IDの答えを作るには、loc(現在地)と詳細クエリを照らし合わせて「loc:川崎駅」という文字列、query(現在地)と詳細クエリを照らし合わせて「kw:川崎駅」という文字列を得る。これを「loc(現在地) OR query(現在地)」に当てはめ、「loc:川崎駅 OR kw:川崎駅」という文字列を得る。更にこの文字列をURIの"{*}"に当てはめ、外部データベース１２０にアクセスするためのURI "localdb://lifelog/?q=loc:川崎駅 OR kw:川崎駅" が得られる。
【００３０】
図示していないが、インターネット上などの外部サービスを利用する際は、URIのみでなく、クエリの整形方法として文字コードや時刻フォーマット等の情報が必要である。また、詳細クエリを発行するために、URIのみでなくXML形式でのPOSTなどを用いてもよい。その場合も本実施形態と同じように、クエリのテンプレートを用意して適宜現在地等の情報を置換することで、クエリを構築できる。図１２及び図１３のデータベースの例では説明をわかりやすくするために名前を入力してあるが、実際には一意のIDなどを用いる。なお、回答方法の無い新しい質問であった場合には、ユーザが手動で答えを検索し、その検索方法を回答方法として登録できるようにしてもよい。この場合、ユーザが行った検索の過程からWeb上のフォームへの入力内容、結果として投げられたURIから、回答方法蓄積部１０９に保存する情報の候補を抽出し、ユーザに確認してもらった上で登録する、という方法が考えられる。
【００３１】
(回答生成部)
回答生成部１１０は、後述する質問提示部１１１でユーザから質問が選択される前に、予測質問蓄積部１０８から回答状態が「未着手」の質問を取り出し、回答方法蓄積部１０９に蓄積された回答方法に従って回答生成を開始する。この際、回答生成部１１０は、回答生成開始時に予測質問蓄積部１０８の回答開始時刻を現在時刻に設定し、回答状況を「回答生成中」に更新するよう指示する。質問の回答生成は、予測質問蓄積部１０８に蓄積された信頼度、質問回数、回答コスト、が高いものから順に行う。回答コストが高い順に回答を生成するのは、回答コストが低い質問はユーザが実際に質問をしてから回答を生成してもユーザの待ち時間が短くて済むが、回答コストが高い質問はユーザの質問後に回答を生成していてはユーザの待ち時間が長くなるからである。例えば、まず信頼度の高い順に質問をソートし、信頼度が同値のものは質問回数が多い順にソートする。さらに、質問回数が同値のものについては回答コストが高い順にソートすることができる。その他にも、信頼度、質問回数、回答コストの重み付線形和で各質問にスコア付けして、スコアの高いものから回答を生成する、といった方法が考えられる。
【００３２】
次に、回答生成部１１０は、回答を提示するためのビューを作成する。例えば、図１１に示した例では、xx1の回答としてトイレの緯度経度のリストが得られるため、ビューとして現在地付近の地図と、その上に緯度経度のリストが表わすスポットをマークした図を作成する。また、xx2は店の詳細情報のWebページそのものが答えであるため、そのWebページのデータのDL、レンダリングが終わった状態の図をビューとして作成する。回答生成部１１０は、回答とそのビューの生成が終了したら、その内容を予測質問蓄積部１０８の回答情報の欄に保存し、回答状況を「回答生成済」に更新するよう指示する。なお、回答情報は上記のようなバイナリデータのビューのみでなく、例えば「Todoリストは？」といった質問にはテキストで得られるTodoリストの内容をそのまま回答情報として保存すればよい。また、回答生成部１１０は、回答生成に要した時間を回答コストとして取得し、質問対応表蓄積部１０４に回答コストを送信する。
【００３３】
(質問提示部)
質問提示部は、ユーザの要求に応じて予測質問蓄積部１０８に蓄積されている質問の一覧を表示する。図１４に、予測した質問をユーザに提示する画面の例を示す。「回答生成済」の質問については「今答えられる質問は…」の後に、「回答生成中」もしくは「未着手」の質問は「今準備中の質問は…」の後に表示するなど、すぐに答えられる質問とそうでない質問を分けて表示する。さらに、質問回数が一定値以上（もしくは提示する質問の平均値以上など）のものについては、「★」マークなどを付与し、よくされる質問であることを明示する。また、現在時刻、および予測質問蓄積部に保存されている回答開始時刻、回答コストから、回答生成中の質問があと何秒で「回答生成済」になるかを計算し表示する。これにより、ユーザの待ち時間に対する心理的ストレスを軽減できる。なお、質問の文面には、質問モデル蓄積部１０２に蓄積された質問モデルの質問文を用いる。
【００３４】
ユーザは提示された質問一覧の中からポインタやタッチスクリーンの機能を用いて質問を選択する。欲しい質問がない場合は、「質問入力」を押して質問を入力する。質問入力画面は質問入力部１０１で示した通りである。選択された質問の回答が既に予測質問蓄積部１０８にある場合はその回答を表示する。回答を生成中、回答生成が未着手の場合、もしくはユーザが新たに入力した質問の場合は、回答の準備ができるまでは「回答生成中」のような画面を表示し、回答が生成できた時点でその回答を表示すればよい。なお、ユーザが選択した質問については、質問対応表蓄積部１０４の質問対応表における質問回数を１つ増加させる。
【００３５】
（フローチャート）
本実施形態にかかる質問予測装置の処理の流れについて説明する。図１５は、ユーザが入力した質問とユーザの状態遷移列の対応付けの流れを示すフローチャートである。まず、質問予測装置は、質問入力部１０１からユーザの質問（Qabc）を取得する（ステップＳ１）。そして、質問取得後、状態取得部１０３から１つ前の状態（Sa）と現在の状態（Sb）を取得する（ステップＳ２）。そして、状態取得部１０３で取得される状態が変化するまで待ち、変化後の状態（Sc）を取得する（ステップＳ３）。質問予測装置は、質問対応表蓄積部１０４の質問対応表に変化後の状態遷移列（「Sa 、Sｂ 、Sc」）とユーザが入力した質問（Qabc）の対応付けが登録されているか否かを判別する（ステップＳ４）。登録されている場合は、ユーザが入力した質問（Qabc）の質問回数を１つ増加させる（ステップＳ５）。登録されていない場合は、この状態遷移列と質問の対応付けを質問対応表に新たに登録する（ステップＳ６）。
【００３６】
図１６は、質問を予測する際のフローチャートである。まず、質問予測装置は、状態取得部１０３から１つ前の状態（Sa）と現在の状態（Sb）を取得する（ステップＳ１０）。そして、遷移確率更新部１０５の遷移確率と１つ前と現在の状態から次の状態とその状態を含む状態遷移列の信頼度（Pc1、…、Pcn）を予測する（ステップＳ１１）。ここで、次の状態および信頼度の予測には、上述したスケジュールを利用する方法、現在時刻を利用する方法、及び直前の質問内容を利用する方法を用いることができる。次に、質問対応表蓄積部１０４の質問対応表から得られた状態遷移列に合致する質問を探索する（ステップＳ１２）。そして、探索された質問からＮ件をユーザに提示する質問として選択し（ステップＳ１３）、予測質問蓄積部１０８に蓄積する。この際、回答状態、回答開始時刻、回答情報の初期化を行う（ステップＳ１４）。予測質問蓄積部１０８に蓄積されていた前の質問は破棄してもよい。
【００３７】
図１７は、予測質問蓄積部１０８に蓄積された質問の回答を生成する際のフローチャートである。回答生成は、ユーザから質問が入力された場合と、予測質問蓄積部１０８に回答状態が「未着手」の質問が蓄積されている場合に実行される。ユーザからの質問入力があった場合は、その質問に対する回答を優先的に生成する（ステップＳ２０、ステップＳ２４〜ステップＳ２６）。ユーザからの質問入力に全て回答した後、予測質問蓄積部１０８の回答状態が「未着手」の質問の回答生成を開始する（ステップＳ２１）。回答生成は、信頼度、質問回数、回答コストを変数に持つコスト関数ｆが一番大きな質問（Qi）から行う（ステップＳ２２）。回答生成開始後は、予測質問蓄積部１０８の回答状況および回答開始時刻を更新する（ステップＳ２３）。そして、回答生成部１１０が質問（Qi）に合致する回答方法を回答方法蓄積部１０９から入手し、回答生成を行う（ステップＳ２４）。回答を取得した後（ステップＳ２５）、予測質問蓄積部１０８の回答状況および質問対応表の回答コストを更新する（ステップＳ２６）。以上の処理を、回答状況が「未着手」の質問がなくなるまで継続する。
【００３８】
（効果）
このように、本実施形態にかかる質問予測装置は、ユーザの過去および現在の状態からユーザの次の状態を予測し、予測された状態を含む状態遷移列を利用してユーザに提示する質問を予測している。これにより、質問予測装置は、ユーザの様々な状況を想定した上でユーザに提示する質問を予測できる。
【００３９】
また、本実施形態にかかる質問予測装置は、ケジュール、現在時刻、直前の質問内容を利用してユーザの次の状態を予測している。これにより、質問予測装置は、ユーザの様々な状況を想定した上でユーザに提示する質問を予測できる。
【００４０】
また、本実施形態にかかる質問予測装置は、予測された質問と、その質問の頻度（質問回数）あるいは回答コスト（回答生成に要した時間長）をユーザに提示する。これにより、ユーザは質問の優先度を判断することができる。
【００４１】
また、本実施形態にかかる質問予測装置は、ユーザが質問を選択する前に質問の回答生成を開始する。これにより、質問予測装置はユーザの待ち時間を減らすことができる。
【００４２】
また、本実施形態にかかる質問予測装置は、回答を生成する順序を質問の回答コストに基づいて制御している。これにより、質問予測装置は、回答コストが高い質問に対する回答を優先的に生成し、ユーザの待ち時間を減らすことができる。
【００４３】
（変形例１）
本実施形態の質問予測装置は、１つ前と現在の状態から次の状態を予測している。予測する次の状態はこれに限定されるものではなく、未来について２個以上の状態を予測してもよい。また、過去について２個以上の状態を利用してもよい。
【００４４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４５】
１０１  質問入力部
１０２  質問モデル蓄積部
１０３  状態取得部
１０４  質問対応表蓄積部
１０５  遷移確率更新部
１０６  状態予測部
１０７  質問予測部
１０８  予測質問蓄積部
１０９  回答方法蓄積部
１１０  回答生成部
１１１  質問提示部
１１２  スケジュール取得部
１２０  外部データベース
【図１】
2015092395.tif 000003
【図２】
2015092395.tif 000004
【図３】
2015092395.tif 000005
【図４】
2015092395.tif 000006
【図５】
2015092395.tif 000007
【図６】
2015092395.tif 000008
【図７】
2015092395.tif 000009
【図８】
2015092395.tif 000010
【図９】
2015092395.tif 000011
【図１０】
2015092395.tif 000012
【図１１】
2015092395.tif 000013
【図１２】
2015092395.tif 000014
【図１３】
2015092395.tif 000015
【図１４】
2015092395.tif 000016
【図１５】
2015092395.tif 000017
【図１６】
2015092395.tif 000018
【図１７】
2015092395.tif 000019