【文献】
遠山緑生、外3名,コンテクスト情報と操作履歴の関連付けによる操作予測システムの提案,情報処理学会研究報告ユビキタスコンピューティングシステム(UBI), [online],一般社団法人情報処理学会 ,2004年11月10日,2004-UBI-6,pp.83〜90,[検索日 2015.08.21], インターネット<URL: https://ipsj.ixsq.nii.ac.jp/ej/?action=pages_view_main&active_action=repository_view_main_item_detail&item_id=46588&item_no=1&page_id=13&block_id=8 >
(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0008】
以下、本発明の実施形態について図面を参照しながら説明する。
【0009】
図1は、実施形態にかかる質問予測装置の構成を示すブロック図である。本実施形態にかかる質問予測装置は、ユーザの1つ前と現在の状態から、ユーザの次の状態を予測する。そして、予測したユーザの次の状態を含む状態遷移列と、予め設定した質問と状態遷移列の対応付けとを用いてユーザに提示する質問を予測する。ここで、「状態」とは、ある時点でのユーザの状況を表しており、例えば、ユーザが居酒屋でお酒を飲んでいる場合の状態は「宴会中」、オフィスで仕事をしている場合の状態は「仕事中」などのようになる。また、「状態遷移列」は、上記「状態」が変化した際の遷移列を表している。
【0010】
図1の質問予測装置は、ユーザが音声やUIを使用して質問を入力する質問入力部101と、質問の内容から質問IDを特定する質問モデル蓄積部102と、GPSや加速度センサなどのセンサ(図示なし)情報からユーザの現在の状態を取得する状態取得部103と、質問モデル蓄積部102で特定された質問IDと状態取得部103で取得されたユーザの状態遷移列を対応付けた質問対応表を蓄積する質問対応表蓄積部104と、状態取得部103で取得されたユーザの状態を利用してある状態から他の状態への遷移確率を更新する遷移確率更新部105と、状態取得部103で取得されたユーザの状態と遷移確率更新部105で更新された遷移確率を用いてユーザの次の状態を予測する状態予測部106と、状態予測部106で予測されたユーザの次の状態を含む状態遷移列と質問対応表蓄積部104に蓄積された質問対応表を用いてユーザに提示する質問を予測する質問予測部107と、質問予測部107で予測された質問とその回答を保存する予測質問蓄積部108と、質問に対する回答生成方法を蓄積する回答方法蓄積部109と、予測質問蓄積部108に保存された質問に対する回答を回答方法蓄積部109に保持された回答生成方法に従って生成する回答生成部110と、予測質問蓄積部108に保存された質問およびその回答をユーザに提示する質問提示部111と、ユーザのスケジュール情報を取得するスケジュール取得部112とを備えている。
【0011】
質問予測装置は、GPSや加速度センサ、近接センサなどのセンサを備えた持ち運び可能なハードウェア装置(例えば、ネットブックやスマートフォン)で実現できる。また、質問予測装置の回答生成部110は、インターネット等により外部データベース120と接続している。
【0012】
ユーザが入力した質問とユーザの状態遷移列の対応付け、及びこの対応付けを利用した質問予測の概要について説明する。
図2の左のフローは、質問予測装置に入力されたユーザの質問とユーザの状態遷移列の対応付けを説明する概念図である。状態取得部103が取得したユーザの状態の遷移がS
a、S
b、S
cという状態遷移列であり、その中の状態S
bのときにユーザが質問Q
abcを入力したとする。この場合、質問対応表蓄積部104は、S
a、S
b、S
c というユーザの状態遷移列とQ
abcという質問の対応付けを質問対応表に登録する。質問対応表の詳細は後述する。例えば、ユーザが居酒屋で宴会中、質問予測装置に対して「二次会に良い店は?」という質問を入力したとする。状態取得部103で取得されたユーザの状態は、現在が「宴会中(S
a)」、その1つ前が「仕事中(S
b)」である。その後、ユーザが質問予測装置からの回答に従い他の居酒屋へ行ったことにより、状態取得部103が取得した状態が再度「宴会中(S
c)」になったとする。このとき、質問予測装置は、質問対応表蓄積部104に蓄積した質問対応表から「仕事中、宴会中、宴会中」という状態遷移列の項を探索する。質問対応表にこの状態遷移列かつ「二次会に良い店は?」という質問を持つ項がない場合は、新たな項を登録する。質問対応表に合致する状態遷移列および質問の項が有る場合は、後述する質問回数などのパラメータを更新する。
【0013】
図2の右のフローは、質問予測装置が質問を予測する際の処理の概念図である。状態予測部106は、状態取得部103が取得した状態と遷移確率を比較し、ユーザの次の状態とその状態を含む状態遷移列の信頼度を予測する。そして、質問予測部107は、ユーザの次の状態を含む状態遷移列およびその信頼度を用いて、質問対応表蓄積部104の質問対応表から質問を探索する。例えば、状態予測部106で予測された最も信頼度が高い状態遷移列が「仕事中」→「宴会中」→「宴会中」であった場合、質問予測部107は、この状態遷移列に対応付けられた「二次会に良い店は?」をユーザに提示する質問として予測する。
【0014】
(各ブロックの機能説明)
質問予測装置を構成する各ブロックの機能を説明する。
【0015】
(質問入力部)
質問入力部101は、ユーザが入力した質問を取得する。
図3は、ユーザが手動で質問を入力するためのユーザインターフェースの例である。同図では、「何について」、「何を教えて」の2つの質問構成を選択、もしくは自由入力するインタフェースになっている。複雑な質問を受け付ける際には、ユーザが自然文を入力するようにしてもよい。また、質問を音声で入力してもよい。この場合、音声認識でユーザの質問文を認識し、形態素解析を用いて質問構成を特定する。
【0016】
(質問モデル蓄積部)
質問モデル蓄積部102は、質問入力部101に入力された質問の内容から質問IDを特定する。
図4に、質問モデル蓄積部102に蓄積された質問モデルを示す。質問IDは質問を特定するユニークな識別記号、質問構成は質問を構成する要素、質問文はユーザに質問を提示する際の表記内容を表している。ユーザが質問入力部101に質問を入力した際は、入力された質問を質問モデルと照らし合わせ、該当する質問IDを探す。該当する質問IDが無い場合は、新しい質問IDを追加して入力された質問を登録する。質問文を自由入力する場合は表記ゆれなどが発生するため、類義語辞書を用いて正規化を行う。質問モデルは、より多くの質問構成を持つようにしてもよい。例えば、
図5のように質問構成として5W1Hの情報を持ち、最終的に質問したい質問構成をユーザに選択させてもよい。
【0017】
(質問対応表蓄積部)
質問対応表蓄積部104は、質問モデル蓄積部102が特定した質問IDと状態取得部103が取得したユーザの状態遷移列とを対応付ける。
図6に、質問対応表蓄積部104が蓄積した質問対応表を示す。質問対応表は、状態遷移列(本実施形態では、1つ前、現在、次の状態遷移列)、状態遷移列に対応付けられた質問の質問ID、各状態遷移列におけるその質問の質問回数、質問の回答コストを構成要素に持つ。回答コストは、その質問の回答に要するコストを表しており、本実施形態では回答生成に要した時間長(ms)を用いる。質問内容が「状態遷移列に依存せずよく行われるもの」である場合は、図示のように、状態遷移列に個別の状態ではなく「<any>」等のマークを保持してもよい。質問対応表蓄積部104は、ユーザが質問を行い、その後状態が変化した際に、質問対応表を更新する。ユーザの状態遷移列およびユーザの質問IDが質問対応表に合致する場合は、該当する項の質問回数を1つ増加させる。一方、質問対応表に合致する項がない場合は、新しい項を追加し、質問回数を1、回答コストをunknownに初期化する。いずれの場合も、後述する回答生成部110で回答コストが得られた場合は、回答コストを更新する。
【0018】
(状態取得部)
状態取得部103は、GPSや加速度センサ、Bluetooth(R)などの近接センサ(図示なし)の情報からユーザの状態を取得する。例えば、特許文献2に示すラベリング技術を用いることで、GPSや加速度センサからユーザの位置が屋内か屋外かを示す「場所」、ユーザの近辺いる人に関する情報を示す「近接者」、ユーザが静止しているのか移動中なのかを示す「移動状態」に関するユーザのプリミティブ状態を取得できる。センサ情報から取得できるプリミティブ状態を
図7に示す。例えば、属性が「場所」に関するプリミティブ状態については、GPSやWifiなどのセンサを用いて「屋内」か「屋外」かの2状態を判別する。この際、補足情報として現在地の詳細情報、現在地クラス(例えば、居酒屋に居る際のクラスは居酒屋)を保持する。さらに状態取得部103は、
図8に例示するような状態決定表を保持し、プリミティブ状態の条件からユーザの現在の状態を特定する。条件は上から順に合致するかどうかをチェックし、合致したものがあった場合に対応する状態をユーザの現在の状態とする。同図において、プリミティブ状態の場所が「0(屋内)」、現在地クラスが「居酒屋」、近接者が「0(いる)」の場合、ユーザの現在の状態は「宴会中」となる。なお、状態取得部103は、現在地クラス(現在地の詳細情報)も特定することから、「一次会の宴会が終わった後、二次会の宴会に行った」というような状況であっても、「宴会中」→「宴会中」という状態の変化を検出できる。
【0019】
(遷移確率更新部)
遷移確率更新部105は、状態取得部103が取得したユーザの状態を利用して遷移確率を更新する。ここで、遷移確率とは、ユーザの状態がある状態から他の状態へ遷移する確率を表したものである。
図9に本実施形態の遷移確率表(遷移確率を保持した表)を示す。この遷移確率表は、1つ前と現在の2つの状態から次の状態の候補に遷移する確率を表している。遷移確率の初期化時には、各状態から可能な遷移が等確率で起こると仮定して初期化するか、または考えられる尤もらしい確率を予め割り当てればよい。
【0020】
状態取得部103で取得したユーザの状態に変化が起こったときは、変化後の状態遷移列に該当する項の遷移確率を更新する。更新は、該当する項の遷移確率に一定の重みを付加し、1つ前および現在の状態遷移列が共通するその他の項の遷移確率を下げるなどすればよい。例えば、「仕事中」→「宴会中」→「宴会中」が起きた場合、
図9の「仕事中、宴会中、宴会中」の状態遷移列の遷移確率のみを0.06ポイント上げ、その他の「仕事中、宴会中、帰宅」「仕事中、宴会中、宿泊」「仕事中、宴会中、買い物」の状態遷移列の遷移確率を一律0.02ポイント下げることができる。
【0021】
(状態予測部)
状態予測部106は、状態取得部103で取得されたユーザの状態と遷移確率更新部105で更新された遷移確率を用いてユーザの次の状態およびその状態を含む状態遷移列の信頼度を予測する。例えば、状態取得部103で取得された1つ前および現在の状態が「仕事中」→「宴会中」で遷移していた場合、遷移確率更新部105の遷移確率表からこれに該当する項を探す。
図9の遷移確率表では、該当する次の状態の候補とその遷移確率は、宴会中(0.7)、帰宅(0.2)、宿泊(0.05)、買い物(0.05)となる。したがって、状態予測部106は、この4つに対応した状態遷移列を、予測された次の状態を含む状態遷移列として出力する。また、状態予測部106は、各状態の候補への遷移確率を状態遷移列の信頼度として出力する。該当する状態遷移列の数が多い場合は、遷移確率が高い上位K件を予測結果として出力すればよい。
【0022】
状態予測部106における予測方法として、スケジュールを利用する方法、現在時刻を利用する方法、及び直前の質問内容を利用する方法について説明する。いずれの方法も、次の状態の候補への遷移確率を状態遷移列の信頼度として出力する。
【0023】
(状態予測部: スケジュールを利用する方法)
状態予測部106が、スケジュールを利用してユーザの次の状態を予測する方法について説明する。ユーザの行動を過去の状態遷移列のみから予測する方法では、遷移確率が高い(頻度が高い)次の状態の候補のみが選択され、ユーザが普段と違う行動をとる場合に対応できない。ユーザが普段と違う行動をとる場合は、その情報が予めスケジュールとして登録されていることがある。そこで、状態予測部106は、スケジュール取得部112で取得したスケジュールを利用することで、ユーザが普段と違う行動をとる場合の次の状態を予測する。例えば、取得されたスケジュールのうち、現在時刻以降一番時間の近いものが、「次の日の8:00-10:00 打合せ(場所: 本社)」であったとする。状態予測部106は、スケジュール取得部112で取得されたスケジュールの開始時間および場所を自然言語解析で抽出し、その場所へその時間に移動する際に必要となる次の状態を予測する。例えば、「予定が9時以前に開始する場合は、前日の23時までに「帰宅」」といったヒューリスティクスを予め設定しておき、これを利用して次の状態を予測する。この例の場合、次の日の朝8時から打ち合わせがあるため、今日の23時までに帰宅しなければならないことになる。そのため、状態予測部106は、次の状態のうち「帰宅」の信頼度を上げ、その他の信頼度を下げる。例えば、「帰宅」の信頼度に固定値0.7を割り当て、残り(1.0-0.7=0.3)は、1つ前および現在の状態が共通する他の状態の候補に、その遷移確率に応じて振りなおす。
図9の場合、帰宅(0.7)、宴会中(0.3/(1.0-0.2)×0.7=0.26)、宿泊(0.3/(1.0-0.2)×0.05=0.019)、買い物(同様に0.019)となる。上述したヒューリスティクスは、ユーザのプロファイルとして最初に設定することができる。スケジュール取得部112が取得するスケジュールは、質問予測装置を実装した端末内のスケジュール帳機能などに登録されたものでもWebサービス上のスケジュール帳に登録されたものでもよい。Webサービス上のスケジュールの場合は、質問予測装置が随時スケジュールの同期処理(ローカルに近い日時のスケジュールデータのダウンロード)を行っておくことで、高速に次の状態を予測できる。
【0024】
(状態予測部: 現在時刻を利用する方法)
状態予測部106が、現在時刻を利用してユーザの次の状態を予測する方法について説明する。現在時刻を利用して次の状態を予測する際に使用する遷移確率表を
図10に示す。この遷移確率表は、現在時刻に関する条件(現在時刻条件)と、その条件に合致した場合の遷移確率(条件合致時の遷移確率)とを新たに保持する。状態取得部103で取得された状態遷移列が「仕事中」→「宴会中」のとき、遷移確率表から「仕事中、宴会中」の項を探し、更にその中から現在時刻条件が記載されたものを探す。現在時刻条件が記載されたもののうち、現在時刻に合致するものがあれば、その状態の遷移確率を条件合致時の遷移確率に置き換える。例えば、
図10において現在時刻が23:30であった場合、次の状態の候補が「宿泊」の項が現在時刻の条件に合致するため、「仕事中、宴会中、宿泊」の遷移確率を0.7に置き換える。残り(1.0-0.7=0.3)については、スケジュールを用いる場合と同様な方法で他の項に割り当てればよい。
【0025】
(状態予測部: 直前の質問内容を利用する方法)
状態予測部106が、ユーザの質問を利用してユーザの次の状態を予測する方法について説明する。ここでは、ユーザが現在時刻から過去にさかのぼる一定時間内に質問を行っていた場合、その質問と回答の内容に応じて次の状態を予測する。簡単な方法としては、過去1時間以内にされた質問、およびその回答の内容から形態素解析を用いて名詞句を抽出し、tf-idfを用いて内容中の名詞句の重要度を算出する。そして、重要度の高い名詞句と次の状態の候補が一致した場合、その状態の遷移確率を上げる。例えば、過去1時間以内にされた質問が「Todoは何?」であり、回答が「買い物、宿題」であったとする。ここから重要度が高い名詞として「買い物」が抽出された場合、次の状態の候補のうち「買い物」の遷移確率を上げる。遷移確率の更新には、上述と同様な方法を用いる。なお、ユーザの質問および回答の内容は、後述する質問提示部111から取得する。
【0026】
(質問予測部)
質問予測部107は、状態予測部106で予測されたユーザの次の状態を含む状態遷移列およびその信頼度と質問対応表蓄積部104に蓄積された質問対応表を用いてユーザに提示する質問を予測する。状態予測部106の出力が
図9の「仕事中、宴会中、宴会中(0.7)」、「仕事中、宴会中、帰宅(0.2)」、「仕事中、宴会中、宿泊(0.05)」、「仕事中、宴会中、買い物(0.05)」であった場合を考える。括弧内の数字は、状態遷移列の信頼度を表している。質問予測部107は、質問対応表蓄積部104の質問対応表から状態遷移列が「仕事中、宴会中、宴会中」、「仕事中、宴会中、帰宅」、「仕事中、宴会中、宿泊」、「仕事中、宴会中、買い物」、「仕事中、宴会中、<any>」となっている項を探索する。そして、これらの項が持つ質問IDをユーザに提示する質問とし、その状態遷移列の信頼度を質問IDの信頼度とする。例えば、質問ID xx1の信頼度は、予測された「仕事中、宴会中、宴会中」という状態遷移列の信頼度(0.7)と同じ値とする。なお、複数の状態遷移列に対して同じ質問IDが割り当てられている場合は、各状態遷移列の信頼度の和をその質問IDの信頼度とする。また、質問対応表の次の状態の候補の項が「<any>」となっている状態遷移列の信頼度は1.0とする。
【0027】
次に、質問予測部107は、予測された質問のうち予測質問蓄積部108に出力する質問を選択する。選択方法として、以下の2種類の方法がある。1つ目の方法は、質問IDの信頼度が高いものから順に選択する方法である。この方法では、質問IDを信頼度で並び替えて、上位N件を選択する。信頼度ではなく、質問対応表蓄積部104の質問対応表から取得した質問回数が多い順に質問を選択してもよい。2つ目の方法は、各質問の信頼度に応じてN件の質問枠を割り当てる方法である。上述した例の場合、次の状態の候補が「<any>」の信頼度は1.0、「宴会中」は0.7、「帰宅」は0.2、「宿泊」は0.05、「買い物」は0.05である。したがって、N件のうち、次の状態の候補が「<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、…は実際の計算結果ではなく、その計算結果を丸めた結果である。
【0028】
(予測質問蓄積部)
予測質問蓄積部108は、質問予測部107によって予測された質問を蓄積する。
図11に、予測質問蓄積部108が蓄積した質問を示す。本実施形態では、質問ID、信頼度、質問回数、回答コスト、回答状態(回答生成済、回答生成中、未着手の3状態)、回答開始時刻、回答情報を保持する。このうち、信頼度は質問予測部107から取得し、質問回数および回答コストは質問予測部107を介して質問対応表蓄積部104の質問対応表から取得する。回答状態は蓄積された質問の回答状況を、回答開始時刻は後述する回答生成部110での回答開示時刻を、回答情報は後述する質問提示部111で提示する質問の回答とそのビューの情報を表している。回答状態は「未着手」、回答開示時刻および回答情報は「null」で初期化する。
【0029】
(回答方法蓄積部)
回答方法蓄積部109は、後述する回答生成部110において、質問に対する回答を生成する際の方法(回答方法)を蓄積している。
図12に、回答方法蓄積部109に蓄積された回答方法を示す。回答方法は、質問IDと、この質問の回答生成に利用するデータベースと、そのデータベースに発行するクエリが組になって保存される。データベースには、ローカルに保存されるデータベースとインターネット上に存在する外部データベース120がある。回答方法のデータベースは、
図13のように、データベースへアクセスする際のURIと組みで定義される。URIは、同図の"{lat}"などのように、実際のクエリが入る部分を置換可能な形で保持しておく。例えば、
図12の質問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"を得る。なお、自宅最寄駅の名前は、ローカルに保存されたユーザのプロファイルから取得できる。
図12の質問ID xx3では、データベースが「行動履歴データベース」、クエリが「loc(現在地) OR query(現在地)」となっている。また、
図13の行動履歴データベースの例では、詳細クエリという項が追加されている。これは、AND条件やOR条件を指定するためのクエリの生成方法に関する情報である。xx3の質問IDの答えを作るには、loc(現在地)と詳細クエリを照らし合わせて「loc:川崎駅」という文字列、query(現在地)と詳細クエリを照らし合わせて「kw:川崎駅」という文字列を得る。これを「loc(現在地) OR query(現在地)」に当てはめ、「loc:川崎駅 OR kw:川崎駅」という文字列を得る。更にこの文字列をURIの"{*}"に当てはめ、外部データベース120にアクセスするためのURI "localdb://lifelog/?q=loc:川崎駅 OR kw:川崎駅" が得られる。
【0030】
図示していないが、インターネット上などの外部サービスを利用する際は、URIのみでなく、クエリの整形方法として文字コードや時刻フォーマット等の情報が必要である。また、詳細クエリを発行するために、URIのみでなくXML形式でのPOSTなどを用いてもよい。その場合も本実施形態と同じように、クエリのテンプレートを用意して適宜現在地等の情報を置換することで、クエリを構築できる。
図12及び
図13のデータベースの例では説明をわかりやすくするために名前を入力してあるが、実際には一意のIDなどを用いる。なお、回答方法の無い新しい質問であった場合には、ユーザが手動で答えを検索し、その検索方法を回答方法として登録できるようにしてもよい。この場合、ユーザが行った検索の過程からWeb上のフォームへの入力内容、結果として投げられたURIから、回答方法蓄積部109に保存する情報の候補を抽出し、ユーザに確認してもらった上で登録する、という方法が考えられる。
【0031】
(回答生成部)
回答生成部110は、後述する質問提示部111でユーザから質問が選択される前に、予測質問蓄積部108から回答状態が「未着手」の質問を取り出し、回答方法蓄積部109に蓄積された回答方法に従って回答生成を開始する。この際、回答生成部110は、回答生成開始時に予測質問蓄積部108の回答開始時刻を現在時刻に設定し、回答状況を「回答生成中」に更新するよう指示する。質問の回答生成は、予測質問蓄積部108に蓄積された信頼度、質問回数、回答コスト、が高いものから順に行う。回答コストが高い順に回答を生成するのは、回答コストが低い質問はユーザが実際に質問をしてから回答を生成してもユーザの待ち時間が短くて済むが、回答コストが高い質問はユーザの質問後に回答を生成していてはユーザの待ち時間が長くなるからである。例えば、まず信頼度の高い順に質問をソートし、信頼度が同値のものは質問回数が多い順にソートする。さらに、質問回数が同値のものについては回答コストが高い順にソートすることができる。その他にも、信頼度、質問回数、回答コストの重み付線形和で各質問にスコア付けして、スコアの高いものから回答を生成する、といった方法が考えられる。
【0032】
次に、回答生成部110は、回答を提示するためのビューを作成する。例えば、
図11に示した例では、xx1の回答としてトイレの緯度経度のリストが得られるため、ビューとして現在地付近の地図と、その上に緯度経度のリストが表わすスポットをマークした図を作成する。また、xx2は店の詳細情報のWebページそのものが答えであるため、そのWebページのデータのDL、レンダリングが終わった状態の図をビューとして作成する。回答生成部110は、回答とそのビューの生成が終了したら、その内容を予測質問蓄積部108の回答情報の欄に保存し、回答状況を「回答生成済」に更新するよう指示する。なお、回答情報は上記のようなバイナリデータのビューのみでなく、例えば「Todoリストは?」といった質問にはテキストで得られるTodoリストの内容をそのまま回答情報として保存すればよい。また、回答生成部110は、回答生成に要した時間を回答コストとして取得し、質問対応表蓄積部104に回答コストを送信する。
【0033】
(質問提示部)
質問提示部は、ユーザの要求に応じて予測質問蓄積部108に蓄積されている質問の一覧を表示する。
図14に、予測した質問をユーザに提示する画面の例を示す。「回答生成済」の質問については「今答えられる質問は…」の後に、「回答生成中」もしくは「未着手」の質問は「今準備中の質問は…」の後に表示するなど、すぐに答えられる質問とそうでない質問を分けて表示する。さらに、質問回数が一定値以上(もしくは提示する質問の平均値以上など)のものについては、「★」マークなどを付与し、よくされる質問であることを明示する。また、現在時刻、および予測質問蓄積部に保存されている回答開始時刻、回答コストから、回答生成中の質問があと何秒で「回答生成済」になるかを計算し表示する。これにより、ユーザの待ち時間に対する心理的ストレスを軽減できる。なお、質問の文面には、質問モデル蓄積部102に蓄積された質問モデルの質問文を用いる。
【0034】
ユーザは提示された質問一覧の中からポインタやタッチスクリーンの機能を用いて質問を選択する。欲しい質問がない場合は、「質問入力」を押して質問を入力する。質問入力画面は質問入力部101で示した通りである。選択された質問の回答が既に予測質問蓄積部108にある場合はその回答を表示する。回答を生成中、回答生成が未着手の場合、もしくはユーザが新たに入力した質問の場合は、回答の準備ができるまでは「回答生成中」のような画面を表示し、回答が生成できた時点でその回答を表示すればよい。なお、ユーザが選択した質問については、質問対応表蓄積部104の質問対応表における質問回数を1つ増加させる。
【0035】
(フローチャート)
本実施形態にかかる質問予測装置の処理の流れについて説明する。
図15は、ユーザが入力した質問とユーザの状態遷移列の対応付けの流れを示すフローチャートである。まず、質問予測装置は、質問入力部101からユーザの質問(Q
abc)を取得する(ステップS1)。そして、質問取得後、状態取得部103から1つ前の状態(S
a)と現在の状態(S
b)を取得する(ステップS2)。そして、状態取得部103で取得される状態が変化するまで待ち、変化後の状態(S
c)を取得する(ステップS3)。質問予測装置は、質問対応表蓄積部104の質問対応表に変化後の状態遷移列(「S
a 、S
b 、S
c」)とユーザが入力した質問(Q
abc)の対応付けが登録されているか否かを判別する(ステップS4)。登録されている場合は、ユーザが入力した質問(Q
abc)の質問回数を1つ増加させる(ステップS5)。登録されていない場合は、この状態遷移列と質問の対応付けを質問対応表に新たに登録する(ステップS6)。
【0036】
図16は、質問を予測する際のフローチャートである。まず、質問予測装置は、状態取得部103から1つ前の状態(S
a)と現在の状態(S
b)を取得する(ステップS10)。そして、遷移確率更新部105の遷移確率と1つ前と現在の状態から次の状態とその状態を含む状態遷移列の信頼度(P
c1、…、P
cn)を予測する(ステップS11)。ここで、次の状態および信頼度の予測には、上述したスケジュールを利用する方法、現在時刻を利用する方法、及び直前の質問内容を利用する方法を用いることができる。次に、質問対応表蓄積部104の質問対応表から得られた状態遷移列に合致する質問を探索する(ステップS12)。そして、探索された質問からN件をユーザに提示する質問として選択し(ステップS13)、予測質問蓄積部108に蓄積する。この際、回答状態、回答開始時刻、回答情報の初期化を行う(ステップS14)。予測質問蓄積部108に蓄積されていた前の質問は破棄してもよい。
【0037】
図17は、予測質問蓄積部108に蓄積された質問の回答を生成する際のフローチャートである。回答生成は、ユーザから質問が入力された場合と、予測質問蓄積部108に回答状態が「未着手」の質問が蓄積されている場合に実行される。ユーザからの質問入力があった場合は、その質問に対する回答を優先的に生成する(ステップS20、ステップS24〜ステップS26)。ユーザからの質問入力に全て回答した後、予測質問蓄積部108の回答状態が「未着手」の質問の回答生成を開始する(ステップS21)。回答生成は、信頼度、質問回数、回答コストを変数に持つコスト関数fが一番大きな質問(Q
i)から行う(ステップS22)。回答生成開始後は、予測質問蓄積部108の回答状況および回答開始時刻を更新する(ステップS23)。そして、回答生成部110が質問(Q
i)に合致する回答方法を回答方法蓄積部109から入手し、回答生成を行う(ステップS24)。回答を取得した後(ステップS25)、予測質問蓄積部108の回答状況および質問対応表の回答コストを更新する(ステップS26)。以上の処理を、回答状況が「未着手」の質問がなくなるまで継続する。
【0038】
(効果)
このように、本実施形態にかかる質問予測装置は、ユーザの過去および現在の状態からユーザの次の状態を予測し、予測された状態を含む状態遷移列を利用してユーザに提示する質問を予測している。これにより、質問予測装置は、ユーザの様々な状況を想定した上でユーザに提示する質問を予測できる。
【0039】
また、本実施形態にかかる質問予測装置は、ケジュール、現在時刻、直前の質問内容を利用してユーザの次の状態を予測している。これにより、質問予測装置は、ユーザの様々な状況を想定した上でユーザに提示する質問を予測できる。
【0040】
また、本実施形態にかかる質問予測装置は、予測された質問と、その質問の頻度(質問回数)あるいは回答コスト(回答生成に要した時間長)をユーザに提示する。これにより、ユーザは質問の優先度を判断することができる。
【0041】
また、本実施形態にかかる質問予測装置は、ユーザが質問を選択する前に質問の回答生成を開始する。これにより、質問予測装置はユーザの待ち時間を減らすことができる。
【0042】
また、本実施形態にかかる質問予測装置は、回答を生成する順序を質問の回答コストに基づいて制御している。これにより、質問予測装置は、回答コストが高い質問に対する回答を優先的に生成し、ユーザの待ち時間を減らすことができる。
【0043】
(変形例1)
本実施形態の質問予測装置は、1つ前と現在の状態から次の状態を予測している。予測する次の状態はこれに限定されるものではなく、未来について2個以上の状態を予測してもよい。また、過去について2個以上の状態を利用してもよい。
【0044】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。