【実施例1】
【0020】
<1.対話システム全体構成>
図1は、本実施例1における対話システムを構成する情報処理装置1の構成の一例を示すブロック図である。
【0021】
対話システムは、具体的な例としては、コンピュータ等の情報処理装置1により構成される。情報処理装置1は、中央処理装置(CPU)11、キーボードや画像モニタなどの入出力装置13、磁気ディスク装置や半導体記憶素装置で構成されたメモリ14を含む。また、外部とデータをやり取りするためのインターフェースとして、データ通信部12を含んでいてもよい。データ通信部12は、例えば外部のネットワーク70と接続される。なお、入出力装置という場合、入出力両機能を含む装置のみを意味するのではなく、入力機能のみを含む装置、出力機能のみを含む装置、さらには入出力の両方を含む装置のいずれも意味するものとする。
【0022】
本実施例1では計算や制御等の機能は、メモリ14に格納されたプログラムがCPU11によって実行されることで、定められた処理を他のハードウェアと協働して実現される。CPU11が実行するプログラム、その機能、あるいはその機能を実現する手段を、「機能」、「手段」、「部」、「ユニット」、「モジュール」等と呼ぶ場合がある。
【0023】
図1では、概念的にCPU11が、ソフトウェアに基づいて実行する機能を、制御部60、入力処理部16、出力処理部17として示している。これらの機能を実現するためのプログラムはメモリ14に格納される。また、メモリ14には各プログラムが利用するデータとして、対話データ20、言い換え候補データ21と、対話ログデータ30、対話ログ分析データ40、確認事項データ50等が格納される。
【0024】
なお、上記プログラムは、ROM等に予め組み込まれて提供されたり、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録して提供されたり、配布されてもよい。さらには、上記プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供したり、配布してもよい。
【0025】
メモリ14に格納する、対話データ20や対話ログデータ30、対話ログ分析データ40、確認事項データ50は入出力装置13を介して入出力することができる。なお、本実施例1では、対話データ20や対話ログデータ30、対話ログ分析データ40、確認事項データ50を情報処理装置1から出力する例を示す。しかし、これに限定されるものではなく、例えば、対話システムの外部に設けられたディスプレイ、スクリーン、スピーカ等の出力装置からこれらのデータを出力し、当該出力を確認したユーザが情報処理装置1に対してさらに質問(あるいは応答)を入力することができる。
【0026】
また、入出力装置13は、キーボードやマウス、タッチパネルやマイクなどの入力装置と、ディスプレイやタッチパネルやスピーカなどの出力装置を含むことができる。
【0027】
制御部60は、対話ログデータ30を参照して、対話ログデータ30から失敗箇所を検出し、失敗原因を分析し、分析結果に応じて確認者向けの質問文を出力し、回答結果を受け付けて新たな知識を登録(追加)する処理を制御する。なお、本実施例1の確認者は、失敗を回避するための回答を提供する者であり、例えば、情報処理装置1の管理者やユーザを含む。
【0028】
入力処理部16は、確認者から入力された回答文をテキストに変換する等、本システムで必要な入力処理を行う処理部である。出力処理部17は、上記質問文を出力する等、本システムで必要な出力処理を行う処理部である。
【0029】
なお、本実施例1の対話システムは、情報処理装置1の制御部60と入力処理部16及び出力処理部17で対話が実行される。
【0030】
例えば、入力処理部16は音声認識部(図示省略)を含んで、マイクなどの入力装置から受け付けた音声をテキストに変換する。制御部60は、変換されたテキストを質問として受け付けて対話データ20を参照し、回答(または応答)データを対話データ20から検索して検索結果を出力する。なお、本実施例1では、N個の検索結果を選択して確信度からシステム出力文を決定する例を示す。
【0031】
出力処理部17は音声合成部(図示省略)を含んで、出力された検索結果から音声を生成し、スピーカ等の出力装置から出力する。制御部60は、対話のログを対話ログデータ30に蓄積する。
【0032】
なお、音声やテキストによる対話処理の詳細については、公知または周知の技術を用いれば良いので、本実施例1では詳述しない。本実施例1では、対話ログデータ30から対話の失敗を検出し、失敗原因の分析と、分析結果に応じた新たな知識の拡充について説明する。
【0033】
以上の構成は、
図1に示したように単体のコンピュータで構成してもよいし、あるいは、入力装置、出力装置、処理装置、記憶装置の各機能部が、ネットワークで接続された他のコンピュータで構成されてもよい。また、本実施例1中、ソフトウェアで構成した機能と同等の機能は、FPGA(Field Programmable Gate Array)や、ASIC(Application Specific Integrated Circuit)などのハードウェアでも実現できる。
【0034】
図2A〜
図2Dに対話システムが使用する各データの例を示す。
【0035】
図2Aは、対話データ20の一例を示す図である。対話データ20は「対話id」201と、「入力文」202と、「出力文」203の3つの項目をひとつのエントリに含む。
【0036】
「対話id」201は対話データを識別するための識別子である。例えば、対話idがd1の入力文は「エレベータの場所を教えて」であり、出力文は「各階とも北側のお手洗いの隣にあります。」である。この対話データ20を用いることで、制御部60は、ユーザから「エレベータの場所を教えて」と入力されると「各階とも北側のお手洗いの隣にあります。」と回答することができる。
【0037】
また入力文202には複数の言い換え文が考えられ、言い換え文を登録したい場合は、元の入力文202の下に言い換え文を入力する。その場合、対話idと出力文は入力しない。対話idは出力文203毎に付与するものとする。
【0038】
図2Bは、対話ログデータ30の一例を示す図である。対話ログデータ30は、制御部60が出力する対話のログを格納する。対話ログデータ30は、ログid301と、ユーザ入力302と、システム出力文303と検索結果304と、分析id305の6つの大項目から構成される。
【0039】
「ログid」301は対話ログデータを識別するための識別子である。対話ログデータ30には、「ユーザ入力」302に対し、「システム出力文」303が出力されたことが記録される。ユーザ入力302は、ユーザの発話による質問や問い合わせをテキストに変換した値が格納される。ユーザの質問や問い合わせがテキストデータで入力された場合には、当該テキストデータをユーザ入力302へ格納することができる。
【0040】
システム出力文303は、ユーザ入力302に対する回答(または応答)を対話データ20から検索し、検索結果の中から最適な対話データ20を選択した結果である。なお、ユーザ入力302から最適なシステム出力文303を選択または生成する技術については、公知または周知の技術を用いれば良いので、本実施例1では詳述しない。
【0041】
また、システム出力文303を決定する「検索結果」304に関するデータも記録される。この例では、検索結果の上位1〜N(Nは自然数)件の確信度341と入力文342と出力文343の組を検索結果(340−1〜340−N)として格納する。
【0042】
上位1位の検索結果340−1の確信度341が所定の閾値(0〜1の値)以上の場合は、Top1の出力文343をシステム出力文303とし、上位1位の検索結果340−1の確信度341が所定の閾値未満であれば、「ごめんなさい。理解できません。」をシステム出力文303としている。「分析id」305は、後述するように各ログに対応する対話ログ分析データ40の分析idが設定される。
【0043】
図2Cは、対話ログ分析データ40の一例を示す図である。対話ログ分析データ40には、制御部60で行われる分析結果が格納される。
【0044】
対話ログ分析データ40は8項目を含む。「分析id」401は対話ログ分析データ40と対話ログデータ30の対応関係が設定された識別子である。1行には「分析id」401に対応する「ユーザ入力」402と、「頻度」403と、「成功/失敗」404と、「失敗原因」405と、「確認事項」(質問文)406と、「確認結果」407と、「確認id」408が含まれる。
【0045】
分析id401は、対話ログ分析データ40の生成又は更新時に、制御部60が付与する識別子である。ひとつの分析id401は、複数の対話ログデータ30と関連付けることが可能である。
【0046】
ユーザ入力402には、対話ログデータ30のユーザ入力302の値が格納される。対話ログ分析データ40は、重複するデータを含む対話ログデータ30の重複を排除し、重複回数を頻度として算出した値を基に生成される。
【0047】
頻度403には対話ログデータ30におけるユーザ入力302の重複数が格納される。成功/失敗404には、対話の結果が成功または失敗のいずれであるかが格納される。失敗原因405には、対話が失敗した原因が格納される。確認事項406には失敗を解消するための問い合わせが格納される。確認結果407には、問い合わせに対応する回答が格納される。確認id408には、対話ログ分析データ40に対応する確認事項データ50の確認idが入力される。
【0048】
図2Dは、確認事項データ50の一例を示す図である。確認事項データ50は、5項目を含み、制御部60の確認処理部(質問生成部)63で生成された確認事項と、知識登録処理部64が受け付けた回答(確認結果)が格納される。
【0049】
「確認id」501は確認事項データを識別する識別子である。確認事項データ50の1行には「確認id」501に対応する「確認順位」502と、「確認事項」503と、「確認結果」503と、「頻度」505が含まれる。上記は各データにおける項目の構成の一例であり、並び順が異なっていたり、他の項目が含まれていてもよい。
【0050】
<2.対話システムの処理の説明>
対話システムで行われる処理の一例について説明する。
【0051】
<2−1.対話システムの処理の概要>
制御部60は、対話データ20と、対話ログデータ30と、対話ログ分析データ40及び確認事項データ50を用いて、対話ログデータ30から失敗箇所を検出し、失敗箇所について失敗原因を分析し、分析結果に合わせて確認者向けの質問文を生成及び出力し、回答結果を基に新たな知識を登録する処理を行う。
【0052】
図3は知識習得のために対話システムの情報処理装置1で行われる処理の一例を示すフローチャートである。
【0053】
ステップS301は、制御部60の失敗箇所抽出部(または失敗箇所検出部)61が、対話ログデータ30を用いて対話が失敗した箇所を抽出(または検出)する処理を行う。抽出結果は対話ログ分析データ40の「成功/失敗」404の値として入力される。例えば、対話ログデータ30に含まれる「授乳室を利用したいのですが」のようなユーザ入力302に対し、回答できるか否かを識別し、回答できないと識別された箇所を失敗箇所として抽出する。
【0054】
失敗箇所抽出部61は、対話ログデータ30から対話ログ分析データ40を生成し、失敗箇所を含むエントリには成功/失敗404に「失敗」を格納し、そうでない場合には「成功」を格納する。なお、対話の成功と失敗の判定は、後述するように、識別モデル71を用いる。
【0055】
ステップS302は、制御部60の失敗原因分析部62が、対話ログデータ30を用いて、ステップS301によって抽出された失敗箇所の失敗原因を分析する処理を行う。分析結果は対話ログ分析データ40の「失敗原因」405の値として入力される。
【0056】
例えば、失敗原因405には大きく分けて2つの場合が考えられる。1つ目はユーザ入力に対して回答するための知識がシステムに登録されていない場合である。もう1つはユーザ入力302に対して回答するための知識が対話システムに登録されているが、ユーザ入力302と、登録されている知識の表現方法が違っている場合である。
【0057】
具体的には、「喫煙室」に関する知識が登録されていない場合に、「喫煙所への行き方を教えてください」とユーザに入力された場合は、前者の知識が登録されていないことが原因である。この場合、対話ログ分析データ40の「失敗原因」405には「知識がない」と入力される。
【0058】
また、喫煙室に関する知識として「喫煙したいのですが」という質問に対して「1階の出入口を出たところにあります」と回答する知識が対話データ20に登録されていて、「喫煙所への行き方を教えてください」とユーザに入力された場合は、後者のユーザ入力と登録されている知識の表現方法が違っていることが原因である。この場合、対話ログ分析データ40の「失敗原因」405には「言い換えがない」と入力される。なお、失敗した対話の原因の分析は、後述するように、識別モデル72を用いる。
【0059】
ステップS303は、制御部60の確認処理部63が、対話ログ分析データ40を用いて、ステップS302によって分析された失敗原因に応じて知識を確認するための質問文を生成し、確認者に問い合わせる処理を行う。なお、確認処理部63の詳細については、
図8にて詳述する。
【0060】
確認(問い合わせ)結果は確認事項データ50に追記される。例えば、上記の例の前者のように、「喫煙所への行き方を教えてください」というユーザ入力402に対して、知識が登録されていないことが原因と分析された場合は、「「喫煙所への行き方を教えてください」の回答を教えて?」と情報処理装置1が確認者に質問する。
【0061】
また、上記の例の後者のように、喫煙室に関する知識として「喫煙したいのですが」という質問に対して「1階の出入口を出たところにあります」と回答する知識(対話データ20)が登録されていて、「喫煙所への行き方を教えてください」とユーザに入力され、ユーザ入力402と登録されている知識(入力文202)の表現方法が違っていることが原因と分析される。この場合に、確認処理部63は、ユーザ入力402と一番近い登録されている質問が「喫煙したいのですが」であれば、「「喫煙所への行き方を教えてください」と「喫煙したいのですが」は同じ意味ですか」と情報処理装置1が確認者に問い合わせる。
【0062】
制御部60の知識登録処理部64は、このような質問に対する確認者からの回答を受け付け、確認事項データ50の確認結果504に記録する。確認処理部63からの質問を出力するために必要な処理は出力処理部17で行う。質問文を音声で出力する場合は、質問文のテキストを所定の音声合成技術により音声に変換する処理を行う。
【0063】
また、質問文をチャットボットなどのアプリケーションとしてテキストで出力する場合は、チャットボットの画面に対話として表示する処理を行う。また、表形式などを用いた確認用の画面として出力する場合は、その画面の形式に合わせて変換する処理を行う。確認者からの回答文の入力は、入力処理部16にて入力するために必要な処理を行う。
【0064】
回答文を音声で入力する場合は、確認者の音声を所定の音声認識技術によりテキストに変換し、そのテキストを確認事項データ50に登録する形式に変換する処理を行う。また、チャットボットなどのアプリケーションとしてテキストで入力する場合は、チャットボットの画面にて入力されたテキストを確認事項データ50に登録する形式に変換する処理を行う。また、表形式などを用いた確認用の画面にて入力する場合は、画面における入力を確認事項データ50に登録する形式に変換する処理を行う。
【0065】
ステップS304は、制御部60の知識登録処理部64が、対話ログデータ30と対話ログ分析データ40と確認事項データ50を用いて、ステップS303で確認した結果を元に、対話データ20を更新する処理を行う。なお、知識登録処理部64の詳細については、
図8にて詳述する。
【0066】
例えば、ステップS303において、「「喫煙所への行き方を教えてください」の回答を教えて?」というシステムからの質問に確認者が「1階の出入口を出たところにあります」と回答すると、「喫煙所への行き方を教えてください」という質問に対する回答が「1階の出入口を出たところにあります」であることを新しい知識として対話データ20に登録される。
【0067】
また、知識登録処理部64は、「「喫煙所への行き方を教えてください」と「喫煙したいのですが」は同じ意味ですか」というシステムからの質問に確認者が「はい」と回答すると、「喫煙所への行き方を教えてください」が「喫煙したいのですが」の言い換えであることを新しい知識として対話データ20に登録する。また、質問内容に対し「いいえ」と回答すると、言い換えではないことが新しい知識として対話データ20に登録される。
【0068】
上記処理によって、制御部60は、対話ログデータ30を入力して対話に失敗したログデータを抽出し、対話に失敗したログデータを分析して失敗原因を「言い換えが必要」か「知識がないのか」を特定する。
【0069】
そして、制御部60は、特定した失敗原因に応じて質問を生成して入出力装置13の出力装置で問い合わせる。制御部60は、入出力装置13の入力装置で回答を受け付けると、新たな知識として対話データ20に追加する。
【0070】
以上の処理によって、対話システムからの確認事項(質問)に答えるだけで、対話システムが過去に答えられなかった質問に答えるための知識を拡充することができる。
【0071】
<2−2.失敗箇所の抽出処理>
図4A、
図4Bは失敗箇所の抽出処理の一例を示すフローチャートで、学習時と識別時の処理の一例をそれぞれ示す。
【0072】
図4Aは、学習時の失敗箇所の抽出処理の一例を示すフローチャートである。本実施例1では、
図4Aの学習処理で、制御部60が、対話ログデータ30から対話に失敗したログデータを抽出する識別器(識別モデル71)を生成する。そして、制御部60は、失敗箇所抽出処理の実行時(識別時)に識別モデル71を用いて
図4Bのフローチャートで、対話に失敗したログデータを抽出する。
【0073】
学習時は、ステップS401にて、制御部60の失敗箇所抽出部61が、既存の対話ログデータ30を参照して、対話の成功または失敗の判定結果(正解)を付与する。なお、この判定は、教師ありの機械学習などを用いて実施すれば良い。
【0074】
図5は、
図2Bに示した対話ログデータ30に対話の成功/失敗の判定結果(正解)305を付与した例を示す図である。なお、本図では、
図2Bの分析id305を省略した。
【0075】
ログid301と、ユーザ入力302と、システム出力文303と、検索結果304は
図2Bの対話ログデータ30と同様であり、「成功/失敗」305が新たに付与されたラベルである。対話ログデータ30は内容が重複したレコードを含むことも考えられるが、重複を排除したものを使用することも可能である。
【0076】
ステップS402では、失敗箇所抽出部61が、ステップS401で得られたデータを用いて、既存の対話ログデータ30のユーザ入力302とシステム出力文303の特徴(または特徴量)を抽出する。特徴には、例えば、ユーザ入力301と検索結果304の上位1〜N(340−1〜340−N:Nは自然数)件の入力文342と出力文343から得られる様々な確信度や類似度のスコアを用いる。失敗箇所抽出部61は、例えば、スコアが最大の検索結果をシステム出力文として決定する。なお、例えば、スコアには検索エンジンや、BLEU(BiLingual Evaluation Understudy:自動評価)、tf−idf(Term Frequency、Inverse Document Frequency:単語の出現頻度と逆文書頻度の評価値)の値を用いることができる。
【0077】
ステップS403では、失敗箇所抽出部61が、ステップS402で抽出した
図2Bの対話ログデータ30の特徴を用いて、識別器(識別モデル71)の学習を行う。なお、学習処理は、教師ありの機械学習などを用い、識別モデル71を生成する。
【0078】
図4Bは、
図3のステップS301の詳細を示す図である。
図2Bの対話ログデータ30を実際に処理する識別時(S301)は、
図4BのステップS411にて、制御部60の失敗箇所抽出部61が、新規の対話ログデータ30について特徴を抽出する。特徴の抽出については、上記ステップS402と同一の手法を用いる。
【0079】
ステップS412では、失敗箇所抽出部61が、ステップS411によって得られた新規の対話ログデータ30の特徴に対し、ステップS403で得られた識別器(識別モデル71)を用いて、対話が成功か失敗かの判定(識別)を行う。判定結果は、例えば、
図5の対話ログデータ30の「成功/失敗」306の項目の値に示すように出力される。
【0080】
<2−3.失敗原因分析処理>
図6A、
図6Bは失敗原因の分析処理の一例を示すフローチャートで、学習時と識別時の処理の一例をそれぞれ示す。
【0081】
図6Aは学習時の失敗原因の分析処理の一例を示すフローチャートである。本実施例1では、
図6Aの学習処理で、制御部60が、対話ログデータ30から対話に失敗した原因を分析する識別器(識別モデル72)を生成する。そして、制御部60は、失敗原因分析処理の実行時(識別時)に識別モデル72を用いて
図6Bのフローチャートで、対話に失敗した原因を分析する。
【0082】
学習時は、ステップS601にて、失敗原因分析部62が、既存の対話ログデータ30へ失敗した原因の正解(分析結果)を付与する。
図7は、既存の対話ログデータ30に対話の失敗原因307を付与した例を示す。
【0083】
ログid301と、ユーザ入力302と、システム出力文303と、検索結果304は
図2Cの対話ログデータ30と同様であり、「失敗原因」307が新たに付与されたラベルである。なお、本図では、
図2Bの分析id305と
図5の成功/失敗306を省略した。対話ログデータ30は内容が重複したレコードを含むことも考えられるが、重複を排除したものを使用することも可能である。
【0084】
ステップS602では、失敗原因分析部62が、上記ステップS601で得られたデータを用いて、既存の対話ログデータ30のユーザ入力302とシステム出力文303の特徴(特徴量)を抽出する。特徴には、例えば、ユーザ入力302と検索結果の上位1〜N(340−1〜340−N:Nは自然数)件の入力文342と出力文343から得られる様々な確信度や類似度のスコアを用いる。失敗原因分析部62は、例えば、スコアには検索エンジンや、BLEU、tf−idfの値を用いる。また、ステップS412で得られた分析結果を用いることも可能である。
【0085】
ステップS603では、失敗原因分析部62が、ステップS602で抽出した既存の対話ログデータ30の特徴を用いて、識別器(識別モデル72)の学習を行う。なお、学習処理は、教師ありの機械学習などを用い、識別モデル72を生成する。
【0086】
図6Bは、
図3のステップS302の詳細を示す図である。
図2Bの対話ログデータ30を実際に処理する識別時(S302)は、
図6BのステップS611にて、失敗原因分析部62が、新規の対話ログデータ30を用いて、特徴を抽出する。特徴の抽出はステップS602と同一の手法を用いる。
【0087】
ステップS612では、失敗原因分析部62が、ステップS611によって得られた新規の対話ログデータ30の特徴に対し、ステップS603で得られた識別器(識別モデル72)を用いて、失敗の原因が「知識がない」または「言い換えがない」の識別を行う。その結果は、例えば、
図7の対話ログデータ30の「失敗原因」307の項目の値に示すように出力される。
【0088】
なお、失敗原因分析部62は、失敗原因307の算出が完了した後、内容が重複するレコードからユーザ入力302の出現頻度を算出し、失敗箇所抽出部61が算出した成功/失敗306を加えて、
図2Cに示した対話ログ分析データ40を生成する。本実施例1では、失敗原因分析部62が対話ログ分析データ40を生成する例を示すが、後述する確認処理部63が対話ログ分析データ40を生成するようにしてもよい。
【0089】
<2−4.確認処理>
図8は、
図3に示したステップS303、S304の詳細を示すフローチャートである。
図8のステップS801〜S803が確認処理(質問生成処理)を示し、ステップS804〜S807が知識登録処理を示す。
図9A〜
図9Dにはデータの遷移を示す。
【0090】
確認処理部63は、対話ログデータ30と対話ログ分析データ40の分析id305、401、ユーザ入力302、402、失敗原因307(
図7)参照、405の値を用いて、対話ログ分析データ40の確認事項406の値(質問文)を生成する。そして、確認処理部63は、確認事項406を出力して確認者に問い合わせる。以降の処理は、後述の知識登録処理部64で行われる。
【0091】
確認処理部63は、ステップS801で、対話ログ分析データ40のうち成功/失敗404の値が「失敗」のレコードを選択する。そして、確認処理部63は、分析id401に対応する分析id305の対話ログデータ30を選択して、ユーザ入力402(302)を取得する。
【0092】
確認処理部63は、ステップS802で、対話ログ分析データ40の失敗原因405を取得して、失敗原因に応じた確認事項(質問)406を生成する。失敗原因405には「知識がない」と「言い換えがない」の2種類がある。
【0093】
失敗原因405が「知識がない」405の場合、確認処理部63は、ユーザ入力402を用いて確認事項406を自動生成する。例えば、ユーザ入力402がAである場合、「「A」の回答は何ですか?」というテンプレートを適用して生成される文を確認事項406とする。
【0094】
具体的には、
図2Cに示す対話ログ分析データ40の分析id401がa2の場合は、ユーザ入力402は「喫煙所の場所を教えて」であり、確認事項406は「「喫煙所の場所を教えて」の回答は何ですか?」となる。
【0095】
一方、失敗原因405が「言い換えがない」の場合、確認処理部63は、ユーザ入力402と1位の検索結果340−1の入力文342を用いて確認事項406を自動生成する。例えば、ユーザ入力402がA、1位の検索結果340−1の入力文342がBである場合、「「A」と「B」は同じ意味ですか?」というテンプレートを適用して生成される文を確認事項406とする。
【0096】
具体的には、
図2Cに示す対話ログ分析データ40の分析id401がa3の場合は、ユーザ入力402が「エレベータを使いたいのですが」=Aであり、1位の検索結果340−1のユーザ入力402が「エレベータの場所を教えて」=Bである。この場合の確認事項406は「「エレベータを使いたいのですが」と「エレベータの場所を教えて」は同じ意味ですか?」となる。
【0097】
この処理を行う前の対話ログ分析データ40は
図9Aのように確認事項406は空欄となっており、この処理を行った後は、確認事項406に上述のような質問文が設定される。
【0098】
次に、ステップS803で、確認処理部63は、対話ログ分析データ40から確認事項データ50を生成する。確認処理部63は、対話ログ分析データ40の頻度403の降順に確認順位(出力の順位)を付与することで確認事項データ50を生成できる。その際、対応する確認id408が設定され、対話ログ分析データ40は
図9Dに示すようになる。
【0099】
確認処理部63は、確認事項データ50に新たなレコードを追加し、確認id408を確認id501に格納し、付与された確認順位を確認順位502に設定し、生成した質問文を確認事項503に設定し、頻度403を頻度505に格納する。これにより、確認事項データ50は、
図9Bのように設定される。
【0100】
ステップS804では、生成した確認事項406(質問文)を出力して確認者(管理者)に問い合わせる。
【0101】
確認の際のインターフェースには複数の形態で提供することができる。
図10がロボット80を用いた例を示し、
図11がチャットボット90を用いた例を示す。
【0102】
図12A、
図12Bが表形式を用いた例である。ロボット80を用いた例では、確認者は回答を音声で入力する。チャットボット90を用いた例ではテキストで入力する。
【0103】
図12Bは、言い換え候補データ21の一例を示す図である。言い換え候補データ21は、言い換えid211と、登録文212と、言い換え候補213と、登録214をひとつのレコードに含む。言い換え候補データ21は、予め設定された情報である。
【0104】
言い換えid211には、登録文212の識別子が格納される。登録文212には、対話データ20の入力文202の内容が登録される。言い換え候補213には、入力文202と同義語または文章が格納される。なお言い換え候補には、入力文202と同義の他の入力文202を関連付けても良い。登録214は、言い換え候補213を入力文202に関連付ける場合にチェックを受け付けるチェックボックスである。
【0105】
表形式を用いた例では、テキスト(入力文202)やチェックボックス(登録214)をチェックすることで、出力文203や言い換え候補213を回答として入力する。新たな知識の確認では入力文に対する出力文をテキストで入力する。言い換えの確認では、登録文と言い換え候補が同じ意味である場合に登録のチェックボックスをチェックする。チェックボックスの変わりに、テキストで確認結果を入力することも可能である。
【0106】
<2−5.知識登録処理>
図8のステップS805〜S807は、
図3のステップS304で行われる知識登録処理の詳細を示すフローチャートである。知識登録処理部64は、ステップS805で、確認処理部63から出力された問い合わせに対する回答を待ち受ける。回答を受け付けるとステップS806へ進む。
【0107】
ステップS806では、知識登録処理部64が、受け付けた回答(または応答)を確認事項データ50の確認結果504と、対話ログ分析データ40の確認結果407へ格納する。これにより、確認事項データ50は、
図9Cのように確認結果504に値が設定され、対話ログ分析データ40も
図9Dで示すように確認結果407に値が設定される。
【0108】
ステップS806では、知識登録処理部64が、回答の内容に応じて、対話データ20に新たな知識を追加する。知識登録処理部64が、例えば、
図12Bに示すように既存の知識と言い換えの確認が行われた場合、
図12Bの登録214がチェックされた言い換え候補213が登録文212に関連付けられて登録され、対話データ20の入力文202に反映される。
【0109】
知識登録処理部64は、
図9Dの対話ログ分析データ40を基に、対話データ20を
図13に示すように更新する。失敗原因分析で知識がないと判断されたものは、新規のデータとして登録される。
【0110】
図13に示す対話データ20の更新の例では、
図9Dに示す対話ログ分析データ40の分析id401が「a2」の場合が、「失敗原因分析=知識がない」の場合にあたる。知識登録処理部64は、対話ログ分析データ40のユーザ入力402を対話データ20の入力文202に設定し、対話ログ分析データ40の確認結果407を対話データ20の出力文203に設定し、対話id201がd3の新規データとして追加している。
【0111】
知識登録処理部64は、失敗原因分析で言い換えがないと判断されたもので、登録文212と言い換え候補213が、同義と判断されたもの(
図9Dの確認結果407が「はい」と入力されたもの)は、登録済みの文(登録文212)の言い換えとして追加される。
【0112】
図9Dに示す例では、対話ログ分析データ40の分析id401が「a3」と「a4」の場合が、「失敗原因分析で言い換えがない」場合にあたる。
【0113】
分析id401が「a3」の場合は、対話ログデータ30の分析id305が「a3」である、検索結果の上位1位(Top1)の入力文342と同一である対話データ20の入力文202の言い換えとして対話データ20に追加する。
図13に示す対話データ20では「エレベータを使いたいのですが」が言い換えとして入力文202に追加される。
【0114】
分析id401が「a4」の場合は、「ベビー休憩室を使いたいのですが」が言い換えとして入力文202に追加される。
【0115】
また、失敗原因分析で言い換えがないと判断されたもので、言い換え候補データ21の登録文212と言い換え候補213が同一でないと判断されたもの(確認結果407が「いいえ」と入力されたもの)は、言い換えではないことを新しい知識として対話データ20に登録し、次の対話で回答する際に使用し、出力の対象から外すことや、確認事項から外すことが可能となる。
【0116】
以上のように、情報処理装置1は、対話ログデータ30から対話に失敗したログデータを抽出し、失敗原因を分析し、特定した失敗原因に応じて質問を生成して入出力装置13の出力装置で問い合わせる。そして、情報処理装置1は、入出力装置13の入力装置で回答を受け付けると、新たな知識として対話データ20を更新することができる。
【0117】
以上の処理によって、対話システム(情報処理装置1)からの確認事項(質問)に答えるだけで、対話システムが過去に答えられなかった質問に答えるための知識を拡充することが可能となる。
【実施例2】
【0118】
前記実施例1では、
図3のステップS302において、失敗原因を知識がない場合と言い換えがない場合の2つの場合を対象に分析をした例を示した。ている。一方で、言い換えがない場合には、同義語がない場合とそうでない場合が含まれており、その粒度まで分析までできると、質問内容を具体化することができる。
【0119】
そこで、本実施例2では、失敗原因で「言い換えがない」場合について、失敗原因分析部62が、「同義語がない」場合と、「同義語以外の言い換えがない」場合の2つに識別する例を示す。なお、その他の構成については前記実施例1と同様である。
【0120】
図16は、実施例2で行われる処理の一例を示すフローチャートである。
図14A〜
図14Dは、失敗原因の分析結果を、「知識がない」場合と、「同義語がない」場合と、「同義語以外の言い換えがない」場合の3つの場合を対象に分析した際のデータの遷移を示している。
【0121】
図16のステップS901では、失敗箇所抽出部61が、対話データ20と対話ログデータ30を取得する。本実施例2では、対話データ200が
図2Aで示したように登録され、
図14Aで示すような対話ログデータ30を用いる例を示す。
【0122】
次に、ステップS902では、失敗箇所抽出部61が、前記実施例1と同様にして、失敗箇所抽出処理を実施し、
図5で示したように、対話ログデータ30に成功/失敗306の値を付与する。
【0123】
ステップS902では、失敗箇所抽出部61が、失敗原因の分岐処理を実施して、失敗原因を、「知識がない」場合と、「同義語がない」場合と、「同義語以外の言い換えがない」場合の3つに分類する。
【0124】
前記実施例1における
図6AのステップS601では、「知識がない」と「言い換えがない」の2種類の正解ラベルを付与したが、実施例2のステップS903では、「知識がない」と「同義語がない」と「同義語以外の言い換えがない」の3種類の正解ラベルを付与し、この3つを識別する識別モデル72を前記実施例1と同様に学習時のステップS603で生成する。
【0125】
そして、ステップS903では、失敗原因分析部62が「知識がない」と「同義語がない」と「同義語以外の言い換えがない」を識別する識別モデル72を用いて、新規の対話ログデータ30を分析する。
【0126】
ステップS904では、失敗原因分析部62が、
図14Aで示すよう対話ログ分析データ40を生成する。上記以外にも、実施例1のステップS302(失敗原因分析処理)の分析結果に対し、「言い換えがない」と識別されたものを「同義語がない」と「同義語以外の言い換えがない」を識別することも考えられる。
【0127】
上記識別方法には、「同義語がない」と「同義語以外の言い換えがない」という正解ラベルを付与した教師データを用いて機械学習をする方法や、対話ログデータ30のユーザ入力302と検索結果Top1の入力文342の差分の文字列が同一の品詞である場合に、同義語がないと識別する方法がある。
【0128】
上記後者の方法では、例えば、ユーザ入力302が「赤ちゃん休憩室の場所を教えて」であり、検索結果Top1の入力文342が「ベビー休憩室の場所を教えて」である場合、差分の文字列は「赤ちゃん」と「ベビー」である。失敗原因分析部62は、これらの文字列の品詞が名詞で同一であるため、失敗原因は「同義語がない」と識別することができる。この時、差分の文字列である「赤ちゃん」は「ベビー」の同義語の候補となる。
【0129】
一方、ユーザ入力302が「エレベータを使いたいのですが」であり、検索結果Top1の入力文342が「エレベータの場所を教えて」である場合は、差分の文字列は「〜を使いたいのですが」と「〜の場所を教えて」となる。
【0130】
この時、前者の品詞は「の(助詞)場所(名詞)を(助詞)教え(動詞)て(助詞)」であるのに対し、後者の品詞は「を(助詞)使い(動詞)たい(助動詞)の(名詞)です(助動詞)が(助詞)」である。この例では、品詞の配列が異なるため、失敗原因分析部62は失敗原因が「同義語以外の言い換えがない」と識別する。
【0131】
実施例2における、失敗原因が「知識がない」と「同義語以外の言い換えがない」場合のステップS905の確認処理では、前記実施例1と同様の方法により確認事項503が生成される。
【0132】
「同義語がない」場合は、ステップS905の確認処理にて、確認処理部63が、ユーザ入力302と検索結果Top1の入力文342の差分の文字列であり、かつ同一の品詞である文字列を同義語候補とする。
【0133】
ユーザ入力302の差分の文字列をA、検索結果Top1の入力文342の差分の文字列をBとする時、確認事項503は「AとBは同義語ですか?」とする。上記の「赤ちゃん」と「ベビー」の例の場合は、「「赤ちゃん」と「ベビー」は同義語ですか?」という確認事項503が生成される。
【0134】
ステップS906では、確認処理部63が、対話ログ分析データ40へ
図14Cに示す確認事項406を設定する。ステップS907では、確認処理部63が、確認事項406に基づいて、確認事項データ50を
図14Bで示すように生成し、対話ログ分析データ40には確認id408が付与する。また、確認処理部63が確認事項406を出力して確認者に問い合わせる。
【0135】
ステップS908では、知識登録処理部64が、確認者から回答(または応答)を受け付ける。ステップS909では、知識登録処理部64が、確認事項データ50に
図14Bで示すように確認結果504を格納し、対話ログ分析データ40には
図14Cのように確認結果407を格納する。
【0136】
次に、ステップS910では、知識登録処理部64が、対話データ20と対話ログ分析データ40を用いて、対話データ20を
図14Dのように更新する。知識登録処理部64は、入力文202に同義語のある文字列が現れる場合、同義語に置き換えた文を入力文202の言い換えとして新たに追加される。
【0137】
図14Dの対話データ1409の場合、「ベビー休憩室の場所を教えて」と「ベビー休憩室を使いたいのですが」に対し、「ベビー」を「赤ちゃん」に置き換えた、「赤ちゃん休憩室の場所を教えて」と「赤ちゃん休憩室を使いたいのですが」が新規の言い換えとして追加される。
【0138】
このように同義語を考慮した失敗分析を行うことで、「「ベビー」と「赤ちゃん」は同義語ですか?」といったように言い換えに比べ、細かい粒度で失敗原因を確認することができる。また、同義語を置き換えた言い換え文を生成することができ、より効率的に言い換え文を用意できるようになる。